Возникла следующая проблема: из верхнего каталога у меня вызывается index.php, в который функцией require_once, вызывается файл config.php, где прописаны настройки подключения к базе и происходит само подключение. так же из index.php далее вызывается модуль авторизации (находящийся во вложенном каталоге /modules), состоящий из файла с html формой (login.php) и файла проверки (check.php) авторизации. при отправке функцией POST данных из html формы, данные не приходят в check.php. если я вызываю непосредственно файл login.php в браузере (или переношу эти файлы в верхний каталог) - POST отлично работает.[/code]
вестимо прописан путь не абсолютный. поэтому при запуске непосредственно из каталога по адресу check.php виден этот самый пхп. А при запуске из-под корня уже не виден, ибо лежит он в папке за семью печатями =) делается все это через модный мод рерайт, с разбором желаемого уже изнутре index.php - тогда все будет красиво.
В Firefox работает, а в Opera и Explorer - нет. Походу параметры POST не передаются. структура каталогов: /config.php /core.php /index.php /sysmodules/login/login.php /sysmodules/login/check.php core.php Код (Text): <?php session_start(); $baselevel = ""; while (!file_exists($baselevel."config.php")) { $baselevel .= "../"; } define("CORE", "$baselevel"); define("SYSMODULES", CORE."sysmodules/"); $_SESSION ['SYSMODULES']=SYSMODULES; require_once CORE."config.php"; //Подключение к БД $connection=@mysql_connect($host,$login,$pwd) or die("Невозможно подключиться к БД"); $db=@mysql_select_db($db_name,$connection) or die("Невозможно выбрать БД"); $num_rows=0; ?> index.php Код (Text): <?php require_once "core.php"; echo "<table border='1'> <tr> <td>text</td> <td>"; require_once SYSMODULES."login/login.php"; echo"</td> </tr> </table>"; ?> login.php Код (Text): <?php if (isset($_SESSION['id_session'])) { echo "Пользователь авторизован"; echo "<form 'method='post' action='".SYSMODULES."login/out.php'> <td><input type='submit' value='Выйти'></input></td> </form>"; } else { echo "<form 'method='post' action='".SYSMODULES."login/check.php'> <table> <tr> <td>Логин:</td> <td>Пароль:</td> </tr> <tr> <td><input type='text' name='login'></input></td> <td><input type='password' name='password'></input></td> <td><input type='submit' value='Войти'></input></td> </tr> <td colspan='3'><a href=''>Регистрация</a> | <a href=''>Забыли пароль?</a></td> </table> </form>"; } ?> check.php Код (Text): <?php require_once "../../core.php"; if (isset($_POST['login']) && isset($_POST['password'])) { $login = mysql_real_escape_string($_POST['login']); $password = $_POST['password']; //Поиск пользователя в БД с данным логином и паролем $query = "SELECT `id_user` FROM `users` WHERE `login`='{$login}' AND `password`='{$password}' LIMIT 1"; $sql = mysql_query($query) or die(mysql_error()); //Если данный пользователь существует if (mysql_num_rows($sql) == 1) { //Устанавливается метка сессии, равная id_user $row = mysql_fetch_assoc($sql); $_SESSION['id_session'] = $row['id_user']; echo "<a href='".CORE."index.php'>login</a>"; } else { die('Пользователь не найден. Ссылка на повторную авторизацию.'); } } ?>
черезжопно сделано попробуй заменить строки типа echo "<form 'method='post' action='".SYSMODULES."login/out.php'> на echo "<form 'method='post' action='".SYSMODULES."sysmodules/login/out.php'> или где они там у тебя. вобще-то это лишний гемор себе придумываешь. обрабатывать надо в индекс.пхп такие вещи. Вобще все. Тогда урлы будут нормальные.