|
|
|
| Созданы три файла: index_auth.php, index_sessions.php, secretplace.php. При вводе пользователем логина=cleo и пароля=password надо перейти к файлу secretplace.php, используя механизм сессий.
В итоге работы программ выдается предупреждение:
-
Notice: Undefined variable: submit in Q:\home\localhost\www\rcnit\ph07\sessions\authorize.php on line 5
Вы ввели неверный пароль!
-
хотя надо переходить на секретную страницу. Будьте добры, подскажите, как же перейти на секретную страницу?
Приведены исходники файлов:
index_auth.php
<html>
<head>
<title>
Введите пароль
</title>
</head>
<body>
<form action="authorize.php" method="post">
Логин:<input type="text" name="username" value = ""><br>
Пароль:<input type="password" name="userpass" value = ""><br>
<input type = "submit">
</form>
</body>
</html>
|
authorize.php
<?session_start();
//данные были отправлены формой?
ini_set('display_errors',1);
error_reporting(E_ALL);
if($submit){
//проверяем данные на правильность..в данном случае имя пользователя и пароль вписаны прямо в код,
//лучше логин и пароль хранить в базе данных и при совпадении дать доступ пользователю.
if(($username=="cleo")&&($userpass=="password")){
$logged_user=$username;
//запоминаем имя пользователя
session_register("logged_user");
//и переправляем его на секретную страницу
header("Location:secretplace.php");
exit;
}
}
//если что-то было не так, пользователь получит сообщение об ошибке
?>
<html>
<body>
Вы ввели неверный пароль!
</body>
</html>
|
secretplace.php
<?session_start();
if(!isset($logged_user)){
header("Location: indeх_auth.php");
exit;
}
?>
<html>
<body>
Привет, <?php echo $logged_user;?> вы на секретной странице!!!:)
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: Annette
(08.08.2008 в 11:27)
| | При чем тут сессия при переходе? На сервер отсылаются имена полей (и только те элементы формы, которые имеют имя), а не их тип. Даже бы если это было имя, то $_POST['submit'] - register_globals в off установите! | |
|
|
|
|
|
|
|
для: Annette
(08.08.2008 в 11:27)
| |
<?session_start();
//данные были отправлены формой?
ini_set('display_errors',1);
error_reporting(E_ALL);
$username = $_POST['username'];
$userpass = $_POST['userpass'];
if(isset($username) && isset($userpass)){
//проверяем данные на правильность..в данном случае имя пользователя и пароль вписаны прямо в код,
//лучше логин и пароль хранить в базе данных и при совпадении дать доступ пользователю.
if(($username=="cleo")&&($userpass=="password")){
$logged_user=$username;
//запоминаем имя пользователя
session_register("logged_user");
//и переправляем его на секретную страницу
header("Location:secretplace.php");
exit;
}
}
//если что-то было не так, пользователь получит сообщение об ошибке
?>
<html>
<body>
Вы ввели неверный пароль!
</body>
</html>
|
<?session_start();
$logged_user = $_SESSION['logged_user'];
if(!isset($logged_user)){
header("Location: indeх_auth.php");
exit;
}
?>
<html>
<body>
Привет, <?php echo $logged_user;?> вы на секретной странице!!!:)
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: Zend72
(08.08.2008 в 11:40)
| | Умный совет, если учесть: <input type="submit">.
Чему равен у автора и у вас $submit ? | |
|
|
|
|
|
|
|
для: sim5
(08.08.2008 в 11:42)
| | Извините долго исправлял... Вроде исправил? Про session_registr() только чето я не догоняю...
____________
Проверил работает =) | |
|
|
|
|
|
|
|
для: Zend72
(08.08.2008 в 11:46)
| | А чего вы не догоняете? Вы первоначально выставили тот же баг, что и у автора: if($submit). Потом исправили, догонять поздно теперь :) | |
|
|
|
|
|
|
|
для: sim5
(08.08.2008 в 12:54)
| | Нет не в этом смысле баг я тутже заметил и стал его исправлить. Пока исправлял вы добавили свой пост. А потом усомнился в правильности сторки session_register("logged_user"); (не использовал я нигде ранее сессии подумал, что ошибка в синтаксисе) и пошел читать мауал на http://php.net прочел понял что все правильно решил проверить... Все работеет... =) | |
|
|
|
|
|
|
|
для: sim5
(08.08.2008 в 12:54)
| | Cпасибо. Воспользовавшись кодами от Zend 72, увидела долгожданную надпись "Привет, cleo вы на секретной странице!!!:) " | |
|
|
|
|
|
|
|
для: Annette
(08.08.2008 в 13:21)
| | Вы бы лучше над ошибками своими подумали, чтобы впредь не делать их :) | |
|
|
|