LINUX.ORG.RU

Куки (PHP)

 ,


0

1
<?php
if ($_COOKIES["login"] == 1) {
$root_dir = "{$_SERVER['DOCUMENT_ROOT']}/";
$profile_tpl = file_get_contents($root_dir."themes/standart/profile.tpl");
$user_id = $_COOKIES["user_id"];
include ($root_dir."engine/db.php");
$get_username = mysql_query ("SELECT * FROM users WHERE id = '$user_id'");
mysql_close();
while ($row = mysql_fetch_array($get_username)) {
$username = $row["username"];	
}
$str_search = array(
"{username}"
);
$str_replace = array(
"$username"
);
$profile = str_replace($str_search, $str_replace, $profile_tpl);
}
else {
$profile = file_get_contents($root_dir."themes/standart/login_form.tpl");
}
?>

Есть вот такое условие. Если содержание куки login = 1, то выводится профиль, если 0 то форма входа. Однако когда есть кука login со значением 1, по прежнему выводится форма входа. Помогите разобраться.

★★

пхп такой пхп.

дело в том, что когда кука login отсутствует вообще, $_COOKIE['login'] выводит ошибку об этом. в свою очередь сообщение об ошибке уже !== NULL.
поэтому тебе прежде всего нужно проверять ее существование. и да, у тебя слово неправильно написано. $_COOKIES

if (isset($_COOKIE["login"]) && $_COOKIE["login"] == 1) {
Spoofing ★★★★★ ()
Ответ на: комментарий от goingUp

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

Razip ★★ ()

НА ВАКЦИНАЦИЮ!

$user_id = $_COOKIES["user_id"];
include ($root_dir."engine/db.php");
$get_username = mysql_query ("SELECT * FROM users WHERE id = '$user_id'");
mysql_close();

visual ★★★ ()

Мда. Я надеюсь, код написан в учебных целях и в этих ваших интернетах использоваться не будет.

Sense ()
Ответ на: комментарий от Razip

1. Модуль mysql не рекомендован к использованию ещё с 3й версии php. Нужно юзать mysqli или PDO. 2. Зачем в куках login со значением 1 или 0? Это нах какая-то странная авторизация. Куки - клиентская инфа. Я могу записать себе любой id и значение login - 1, тем самым авторизовавшись под любым пользователем. 3. Как указал visual, имеется sql инъекция. Можно выполнить произвольный sql запрос. 4. Непонятно зачем конструкции с циклами для извлечения одного пользователя. 5. Галимая АТМТА.

Sense ()
Ответ на: комментарий от goingUp

Дак работают же сообщения об ошибках. Собственно то что у меня работало не так — не ошибка. Перечитайте пост Spoofing.

Razip ★★ ()
Ответ на: комментарий от Sense

Насчет id'а в куках, да, дыра, пофиксил. А вообще спасибо за критику, учту все во внимание.

Razip ★★ ()
Ответ на: комментарий от Razip

Дак работают же сообщения об ошибках
Обращение к несуществующему массиву тоже должно выдать сообщение о ошибке
Никаких ошибок не было.

goingUp ★★★★★ ()

Это просто ужас а не код, даже в учебных целях так писать нельзя. Так ты еще и огрызаешься на замечания.

anonymous ()
Ответ на: комментарий от Razip

Мне уже достаточно критики чтобы улучшать свой код.

Razip ★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.