Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сессии: как перейти на секретную страницу
 
 автор: Annette   (08.08.2008 в 11:27)   письмо автору
 
 

Созданы три файла: 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>

  Ответить  
 
 автор: sim5   (08.08.2008 в 11:34)   письмо автору
 
   для: Annette   (08.08.2008 в 11:27)
 

При чем тут сессия при переходе? На сервер отсылаются имена полей (и только те элементы формы, которые имеют имя), а не их тип. Даже бы если это было имя, то $_POST['submit'] - register_globals в off установите!

  Ответить  
 
 автор: Zend72   (08.08.2008 в 11:40)   письмо автору
 
   для: 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>

  Ответить  
 
 автор: sim5   (08.08.2008 в 11:42)   письмо автору
 
   для: Zend72   (08.08.2008 в 11:40)
 

Умный совет, если учесть: <input type="submit">.
Чему равен у автора и у вас $submit ?

  Ответить  
 
 автор: Zend72   (08.08.2008 в 11:46)   письмо автору
 
   для: sim5   (08.08.2008 в 11:42)
 

Извините долго исправлял... Вроде исправил? Про session_registr() только чето я не догоняю...
____________
Проверил работает =)

  Ответить  
 
 автор: sim5   (08.08.2008 в 12:54)   письмо автору
 
   для: Zend72   (08.08.2008 в 11:46)
 

А чего вы не догоняете? Вы первоначально выставили тот же баг, что и у автора: if($submit). Потом исправили, догонять поздно теперь :)

  Ответить  
 
 автор: Zend72   (08.08.2008 в 13:14)   письмо автору
 
   для: sim5   (08.08.2008 в 12:54)
 

Нет не в этом смысле баг я тутже заметил и стал его исправлить. Пока исправлял вы добавили свой пост. А потом усомнился в правильности сторки session_register("logged_user"); (не использовал я нигде ранее сессии подумал, что ошибка в синтаксисе) и пошел читать мауал на http://php.net прочел понял что все правильно решил проверить... Все работеет... =)

  Ответить  
 
 автор: Annette   (08.08.2008 в 13:21)   письмо автору
 
   для: sim5   (08.08.2008 в 12:54)
 

Cпасибо. Воспользовавшись кодами от Zend 72, увидела долгожданную надпись "Привет, cleo вы на секретной странице!!!:) "

  Ответить  
 
 автор: sim5   (08.08.2008 в 13:25)   письмо автору
 
   для: Annette   (08.08.2008 в 13:21)
 

Вы бы лучше над ошибками своими подумали, чтобы впредь не делать их :)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования