Здравствуйте уважаемые знатоки. Я написал скрипт авторизации: index.php PHP: <?php @session_start(); if (!isset($_SESSION['login'])) { header("Location: login.php"); } echo($_SESSION['login']."<br />"); echo("<a href='login.php?action=logout'>Logout</a>"); ?> login.php PHP: <?php @session_start(); //initialize session mechanism if (isset($_GET['action'])) { if ($_GET['action']=="login") { if (($_POST['login']=="v")&&($_POST['pass']=="1")) { $_SESSION['login']=$_POST['login']; //set login & pass $_SESSION['pass']=$_POST['pass']; header("Location: index.php"); // redirect him to protected.php } } if ($_GET['action']=="logout") { session_unset(); session_destroy(); } } ?> <html> <head> <title>Authorization page</title> </head> <body> <table width='100%' height='100%'> <form method='POST' action='login.php?action=login'> <tr><td align=center> <table> <tr><td> <table> <tr><td>Login:</td><td><input type='text' name='login' size='15'></td></tr> <tr><td>Password:</td><td><input type='password' name='pass' size='15'></td></tr> </table> </td></tr> <tr><td align=center><input type='submit' name='ok' value='Enter'></td></tr> </table> </td></tr> </form> </table> </body> </html> Вапрос: Подскажите почему в Internet Explorer скрипт работает правильно (авторизация проходит), а в Opera нет?[/php] Неработает - это значит что при вводе логина "v" и пароля "1" я снова попадаю на форму входа.
Лучше сделать просто HTML: <form method='POST' action='login.php'> и потом делать проверку if (isset($_POST['ok'])) А так гет-параметр можно легко подменить
Я вот чото непонял разницы. Гет пускай меняют сколько влезет. самое главное чтоб логин и пароль был правельный. Или я не правильно думаю? И еще вопросик: $_SESSION['pass']=$_POST['pass']; - это не глупо? (хранить пароль в сессии)
после header поставь выход exit() или die() иначе хоть и перенапровление есть, но скрипт продолжает работать дальше, а дальше по коду сессии идут. Вообще на сайте куча готовых решений по вопросу авторизации... а такая авторизация не годится.
padovan, пароль в сессии хранить крайне нежелательно. Тем более что в вашем примере его вообще хранить не нужно). Логин тоже наверно не стОит. Я предлагаю после проверки на правильность заводить переменную и её записывать в сессию. А тот вариант я предложил, т.к. мне показалось, что проблемы возникли именно из-за этого action=login. По-моему дело не в сессиях. В любом случае лучше сделать без action=login. DarkElf, лучше выбрать меньшее из зол)
Разобрался. ) Посмотрел файл сессии создается нормально. А вот почему-то в опере для сайта localhost настроено было - не принимать коки. Разрешаю куки и все начинает работать. Если я правильно понял, то это не дает возможность записать ID сессии. Всем спасибо за советы.