Ответов: 10 Просмотров: 714
|
Проблема заключается в след.: скрипт устанавливает куку и переводит на главную страницу. На главной странице стоит скрипт проверки куки и если она есть отображает некоторые данные на странице. Казалось бы все просто. Но вот в другой директории (перейдя по ссылку или непосредственно ручками пробить путь) переменная $_cookie оказывается пустой. Почему так понять не могу.
Установщик куки [domain]/new/entry.php
PHP:
скопировать код в буфер обмена
if (!$_POST["login"]) { echo "<form action=\"entry.php\" method=\"post\"> <table width=\"100%\" border=\"0\" cellpadding=\"3\"> <tr> <td align=\"right\">".RU_51."</td> <td><input name=\"nick\" type=\"text\" class=\"form\"></td> </tr> <tr> <td align=\"right\">".RU_52."</td> <td><input name=\"pass\" type=\"password\" class=\"form\"></td> </tr> <tr> <td colspan=\"2\" align=\"center\"><input name=\"login\" type=\"submit\" class=\"form\" value=".RU_53."> </td> </tr> </table> </form>"; } else { $nick = $_POST['nick']; $pass = md5($_POST['pass']); $rUser = mysql_query("SELECT * FROM scms_users WHERE nick='$nick' AND password='$pass'"); $a = $aUser['id']; # Вытаскиваем из массива id пользователя $c = md5($b); # Это число закатываем в хэш md5 mysql_query("UPDATE scms_users SET random='$b' WHERE nick='$nick'"); # Записываем уникальное числов БД setcookie("entry_id","$a.$c",time()+259200, "/"); # устанавливаем куку, время жизни 3 дня #setcookie ("$nick",""); # убиваем куку header ("Location: index.php"); # Перекидывает на главую страницу } else { echo "<p align=\"center\" class=\"redtext\">".RU_54."</p>\n<br>"; } }
Проверщик куки на [domain]/new/index.php
PHP:
скопировать код в буфер обмена
$access = 0; if ($_COOKIE['entry_id']) { $splitCookieArray = preg_split("/[\s.]+/", $_COOKIE['entry_id']); # Проверяем наличие куки дергаем из нее то, что нужно $a = mysql_query("SELECT random FROM scms_users WHERE id='".$splitCookieArray[0]."'"); # Вытаскиваем из БД уникальное число if (md5($b['random']) == $splitCookieArray[1]) { # Производим сравнение данных из БД и куки $access = 1; # Создаем переменную, на основе которой будет разрешаться доступ } }
проверяющий скрипт на [domain]/new/admin/edit.php
PHP:
скопировать код в буфер обмена
$access = 0; ini_set('display_errors',1)."<br>"; if ($_COOKIE['entry_id']) { $splitCookieArray = preg_split("/[\s.]+/", $_COOKIE['entry_id']); # Проверяем наличие куки дергаем из нее то, что нужно $a = mysql_query("SELECT random FROM scms_users WHERE id='".$splitCookieArray[0]."'"); # Вытаскиваем из БД уникальное число if (md5($b['random']) == $splitCookieArray[1]) { # Производим сравнение данных из БД и куки $access = 1; # Создаем переменную, на основе которой будет разрешаться доступ } else { header("Location: ../index.php"); } } else { echo "<br>ОШИБКА"; #sleep(5); #header("Location: ../index.php"); }
Цитата: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 не так долго, так что не судите строго о скриптах, я тока учусь |