Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите найти ошибку в коде! Связана с куки!

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Вроде ж все правильно!
sspretty
Отправлено: 04 Августа, 2014 - 18:55:15
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Авг. 2014  


Помог: 0 раз(а)




Эта страница index.php Радость

CODE (html):
скопировать код в буфер обмена
  1. <?php
  2. // Функция, которая запоминает имя в куки
  3. function Login($username){
  4.    if($username = '')
  5.        return false;
  6.    else{    
  7.    setcookie('username', $username, time() + 3600 * 24 * 7);
  8.    return true;
  9.    }
  10. }
  11.  
  12. //Функция удаляет куку
  13. function Logout(){
  14.    setcookie('username', '', time() -1);
  15. }
  16.  
  17. $enter_site = false;
  18. Logout();
  19.  
  20. if(count($_POST) > 0)
  21.     $enter_site = Login($_POST['username']);
  22.  
  23. if($enter_site){
  24.     header("Location: a.php");
  25.     exit();
  26. }
  27.  
  28. ?>
  29.  
  30. <html>
  31.     <head>
  32.     <title>Вход на сайт</title>
  33.     </head>
  34.     <body>
  35.         <h1>Вход на сайт</h1>
  36.         <form action="" method="post">
  37.         Введите имя:
  38.             <br/>
  39.             <input type="text" name="username" />
  40.             <br/>
  41.             <input type="submit" value="Войти" />
  42.         </form>
  43.     </body>
  44. </html>
  45.  



Это код php, согласно которому, если человек ввел в форму свое имя, то оно сохранится в массиве $_POST['username']. И если, пользователь введет свое имя, то он автоматически перенаправляется на страницу a.php, вот код a.php:



PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if(isset($_COOKIE['username'])){
  3.     $username = $_COOKIE['username'];
  4. }
  5.  
  6. if($username == null){
  7.     header("Location: index.php");
  8. }
  9. ?>
  10.  
  11. <html>
  12.     <head>
  13.         <title>Страница А</title>
  14.     </head>
  15.     <body>
  16.         <h1>Страница "А"</h1>
  17.         <b>А</b> и <a href="b.php">Б</a> сидели на трубе.
  18.         <br/>
  19.         <br/>
  20.         Вы вошли как <b><?PHP echo $username; ?></b> |
  21.         <a href="index.php">Выход</a>
  22.     </body>
  23. </html>




Проблема в том, что, после того, как я ввожу имя в форму, меня не перенаправляют на страницу a.php, а направляют на страницу формы.



В чем же причина? Подскажите мне, пожалуйста! Не могу определить, вроде же все правильно!


Что я только не делала! Когда я удалила со страницы a.php:
PHP:
скопировать код в буфер обмена
  1.  
  2. if($username == null){
  3.     header("Location: index.php");


,то страница a.php начала открываться. Но после этого в коде "Вы вошли как <b><?php echo $username; ?></b>" Вместо $username - пустота! И это не удивительно!
Ведь когда я сюда:
PHP:
скопировать код в буфер обмена
  1.  
  2. if($username == null){
  3.     header("Location: index.php");

Вместо index.php ввела b.php(пустая страница), то браузер перевел меня на эту страницу.
Получается, что куки не сохранились в переменную $username. Но почему? Вроде же все правильно! Не могу найти ошибку!
Сразу говорю: в браузере куки включены!

(Отредактировано автором: 04 Августа, 2014 - 19:08:44)

 
 Top
alnik-75
Отправлено: 04 Августа, 2014 - 21:18:49
Post Id



Посетитель


Покинул форум
Сообщений всего: 338
Дата рег-ции: Сент. 2012  
Откуда: Гродно, Беларусь


Помог: 0 раз(а)




попробуйте
PHP:
скопировать код в буфер обмена
  1. setcookie('username', $username, time() + 3600 * 24 * 7,"/");
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB