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+cookie

 PHP.SU

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


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

> Описание: не везде работают
modjo
Отправлено: 18 Июля, 2008 - 23:36:30
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2008  


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




Проблема заключается в след.: скрипт устанавливает куку и переводит на главную страницу. На главной странице стоит скрипт проверки куки и если она есть отображает некоторые данные на странице. Казалось бы все просто. Но вот в другой директории (перейдя по ссылку или непосредственно ручками пробить путь) переменная $_cookie оказывается пустой. Почему так понять не могу.

Установщик куки [domain]/new/entry.php
PHP:
скопировать код в буфер обмена
  1.  
  2. if (!$_POST["login"]) {
  3.         echo "<form action=\"entry.php\" method=\"post\">
  4.         <table width=\"100%\" border=\"0\" cellpadding=\"3\">
  5.         <tr>
  6.         <td align=\"right\">".RU_51."</td>
  7.         <td><input name=\"nick\" type=\"text\" class=\"form\"></td>
  8.         </tr>
  9.         <tr>
  10.         <td align=\"right\">".RU_52."</td>
  11.         <td><input name=\"pass\" type=\"password\" class=\"form\"></td>
  12.         </tr>
  13.         <tr>
  14.         <td colspan=\"2\" align=\"center\"><input name=\"login\" type=\"submit\" class=\"form\" value=".RU_53.">
  15.         </td>
  16.         </tr>
  17.         </table>
  18.         </form>";
  19. } else {
  20.         $nick = $_POST['nick'];
  21.         $pass = md5($_POST['pass']);
  22.         $rUser = mysql_query("SELECT * FROM scms_users WHERE nick='$nick' AND password='$pass'");
  23.         if (!mysql_error() and mysql_num_rows($rUser) == 1) {
  24.                 $aUser = mysql_fetch_array($rUser);                             # Закатываем в массив
  25.                 $a = $aUser['id'];                                                              # Вытаскиваем из массива id пользователя
  26.                 $b = mt_rand()."".mt_rand();                                    # Генерируем уникальное число
  27.                 $c = md5($b);                                                                   # Это число закатываем в хэш md5
  28.                 mysql_query("UPDATE scms_users SET random='$b' WHERE nick='$nick'");    # Записываем уникальное числов БД
  29.                 setcookie("entry_id","$a.$c",time()+259200, "/");       # устанавливаем куку, время жизни 3 дня
  30.                 #setcookie ("$nick","");                                                # убиваем куку
  31.                 header ("Location: index.php");                                 # Перекидывает на главую страницу
  32.                 } else {
  33.                 echo "<p align=\"center\" class=\"redtext\">".RU_54."</p>\n<br>";
  34.         }
  35. }


Проверщик куки на [domain]/new/index.php
PHP:
скопировать код в буфер обмена
  1.  
  2. $access = 0;
  3. if ($_COOKIE['entry_id']) {
  4.         $splitCookieArray = preg_split("/[\s.]+/", $_COOKIE['entry_id']);       # Проверяем наличие куки дергаем из нее то, что нужно
  5.         $a = mysql_query("SELECT random FROM scms_users WHERE id='".$splitCookieArray[0]."'");  # Вытаскиваем из БД уникальное число
  6.         $b = mysql_fetch_array($a);                                                                                     # Запихиваем в массив
  7.         if (md5($b['random']) == $splitCookieArray[1]) {                                        # Производим сравнение данных из БД и куки
  8.                 $access = 1;                                                                                                    # Создаем переменную, на основе которой будет разрешаться доступ
  9.         }
  10. }


проверяющий скрипт на [domain]/new/admin/edit.php

PHP:
скопировать код в буфер обмена
  1. $access = 0;
  2. ini_set('display_errors',1)."<br>";
  3. error_reporting(E_ALL)."<br>";
  4. if ($_COOKIE['entry_id']) {
  5.         $splitCookieArray = preg_split("/[\s.]+/", $_COOKIE['entry_id']);       # Проверяем наличие куки дергаем из нее то, что нужно
  6.         $a = mysql_query("SELECT random FROM scms_users WHERE id='".$splitCookieArray[0]."'");  # Вытаскиваем из БД уникальное число
  7.         $b = mysql_fetch_array($a);                                                                                     # Запихиваем в массив
  8.         if (md5($b['random']) == $splitCookieArray[1]) {                                        # Производим сравнение данных из БД и куки
  9.                 $access = 1;                                                                                                    # Создаем переменную, на основе которой будет разрешаться доступ
  10.         } else {
  11.         header("Location: ../index.php");
  12.         exit;
  13.         }
  14. } else {
  15.         var_dump($_COOKIE);
  16.         echo "<br>ОШИБКА";
  17.         #sleep(5);
  18.         #header("Location: ../index.php");
  19.         exit;
  20. }


Цитата:
Notice: Undefined index: entry_id in /home/u75218/itdepartment.ru/www /new/admin/edit.php on line 17
array(0) { }
ОШИБКА


17 строчка это if ($_COOKIE['entry_id']) { последнего скрипта. Почему переменная $_COOKIE оказывается пустой мне не понятно.

зы
программирую в PHP не так долго, так что не судите строго о скриптах, я тока учусь Улыбка
 
 Top
valenok Модератор
Отправлено: 18 Июля, 2008 - 23:48:19
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




мы любим php код, но не более 5-6 строк за раз.
http://phpfaq[dot]ru/debug
и заодно http://phpfaq[dot]ru/sessions


-----
Truly yours, Sasha.
 
My status
 Top
modjo
Отправлено: 18 Июля, 2008 - 23:52:45
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2008  


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




Про сессии почитаю, спасибо. Ну а тут что может быть?
И про отладку читал. Именно оттуда взял функции отображения ошибок.

(Отредактировано автором: 18 Июля, 2008 - 23:57:01)

 
 Top
scuter
Отправлено: 19 Июля, 2008 - 00:48:40
Post Id



Посетитель


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


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




а ты перед куками случаенно не выводи что нибуть ещё?
 
 Top
modjo
Отправлено: 19 Июля, 2008 - 07:53:16
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2008  


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




В edit.php это первые строчки, там кроме include ничего нет. Точно также и с index.php. Но с edit.php не работает, а c index.php работает. Только в чем разница понять не могу. . .
 
 Top
scuter
Отправлено: 19 Июля, 2008 - 18:35:22
Post Id



Посетитель


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


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




Цитата:
17 строчка это if ($_COOKIE['entry_id']) { последнего скрипта. Почему переменная $_COOKIE оказывается пустой мне не понятно.

ну ясное дело if проверяет является переменная trye или false,
а у тебя её просто нет,
поэтому
 
 Top
modjo
Отправлено: 19 Июля, 2008 - 21:00:57
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2008  


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




Может я сего-то не понял, но ведь когда if условие проверяется, как с index.php. Так почему оно не проверяется с edit.php, а с index.php проверяется? Даже если добавить



Ничего не изменится. Может кто может сказать почему на [domain]/new/index.php работает, а на [domain]/new/admin/edit.php нет? Коды if как видете одинаковые. . .
 
 Top
scuter
Отправлено: 20 Июля, 2008 - 01:22:31
Post Id



Посетитель


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


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




ты просто какую то хрень сотворил,
просто видимо у тебя на серваке откльючено отображение ошибок,
в edit.php ты её включил и весьма коряво,
поэтому то у тебя и выдаёт такое дело,
убери

отображение ошибок останется таким же как и былог,
но это не значит что их нет.

(Отредактировано автором: 20 Июля, 2008 - 02:39:46)

 
 Top
modjo
Отправлено: 20 Июля, 2008 - 10:34:47
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2008  


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




."<br>" я уже давно убрал.
Мистика, но сейчас все заработало. . . Бред какой-то Не понял
 
 Top
scuter
Отправлено: 20 Июля, 2008 - 20:27:30
Post Id



Посетитель


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


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




я же тебе говорю ты включил отображение ошибок,
это их включает
 
 Top
modjo
Отправлено: 21 Июля, 2008 - 07:36:02
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июль 2008  


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




Я как раз их и хотел вкл., чтоб посмотреть почему не работает. Но кажется я понял из-за чего не работало. Кука была на www, а по ссылке я переходил без www. Просто не обратил внимания на это. Но сейчас все работает.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB