Приветствую. Столкнулся с проблемой: создавая простую форму авторизации, у меня не создаются куки при "отмеченном" флажке запоминания. Тестировал отдельно код setcookie - он верный, куки создаются без условий, но внутри условия ("если установлен флажок - создавай куки"), код отказывается работать. (часть кода с "флажков" - это post - запрос "remember", остальная часть кода функционирует). Спасибо. Вроде мелкая проблемка, но уже все час перепроверяю, должно работать, но не работает(( PHP: <?php session_start(); $msg = "Введите имя пользователя и пароль"; if(count($_POST) > 0){ if($_POST["name"]==="admin" && $_POST["pass"]==="qwerty"){ $_SESSION["flag"] = true; header("Location:secret.php"); exit(); }else{ $smg = "Неверное имя пользователя или пароль"; } if(isset($_POST["remember"])){ setcookie("login", hash("sha256","admin"),time()+3600*24*7, "/"); setcookie("password", hash("sha256","qwerty"),time()+3600*24*7, "/"); } } ?> <!doctype html> <html lang="ru"> <head> <meta charset="UTF-8"> <title>Login</title> </head> <body> <form method="post"> Логин <br> <input type="text" name="name"> <br>Пароль <br> <input type="password" name="pass"> <br> <input type="checkbox" name="remember">Запомни меня <br> <button type="submit">Войти</button> <p style="color:red"> <?php echo $smg; ?> </p> </form> </body> </html>
Попробуйте переставить местами: PHP: <?php session_start(); $msg = "Введите имя пользователя и пароль"; if(count($_POST) > 0){ if(isset($_POST["remember"])){ setcookie("login", hash("sha256","admin"),time()+3600*24*7, "/"); setcookie("password", hash("sha256","qwerty"),time()+3600*24*7, "/"); } if($_POST["name"]==="admin" && $_POST["pass"]==="qwerty"){ $_SESSION["flag"] = true; header("Location:secret.php"); exit(); }else{ $smg = "Неверное имя пользователя или пароль"; } } если не поможет, то так: PHP: <?php session_start(); $msg = "Введите имя пользователя и пароль"; if(count($_POST) > 0){ setcookie("login", hash("sha256","admin"),time()+3600*24*7, "/"); setcookie("password", hash("sha256","qwerty"),time()+3600*24*7, "/"); if($_POST["name"]==="admin" && $_POST["pass"]==="qwerty"){ $_SESSION["flag"] = true; header("Location:secret.php"); exit(); }else{ $smg = "Неверное имя пользователя или пароль"; } } потом так PHP: <?php session_start(); $msg = "Введите имя пользователя и пароль"; if(count($_POST) > 0){ if(isset($_POST["remember"])){ dd($_POST["remember"]); } if($_POST["name"]==="admin" && $_POST["pass"]==="qwerty"){ $_SESSION["flag"] = true; header("Location:secret.php"); exit(); }else{ $smg = "Неверное имя пользователя или пароль"; } } в общем, идея думаю понятна
Сейчас каждый браузер может хранить логин и пароль любой формы в браузере, насколько корректно и логично твое решение хранить в куках пароль? Подумай над этим))
у него не хранение, а такая жопаВыдриГлаза аутентификация пользователя после будет. Затребовав у Тса сам механизм кода, можно блевануть. --- Добавлено --- https://github.com/MouseZver/Aero-Authentication --- Добавлено --- Есть тема еще, где все авторизации ломаются по логике на изи. Как и на этом форуме.
Тема не о моих мотивах, а имеет конкретный технический вопрос - условие (вроде простое) не отрабатывает. Почему? Вот и все. --- Добавлено --- 100% на втором дне изучения темы у ВАС было раз в 100 хуже понимание вопроса. Так ЗАЧЕМ так себя позорить, пытаясь как-то оценивать то, что люди ТОЛЬКО НАЧИНАЮТ изучать, тестируют? Поржать не над кем, походу в жизни --- Добавлено --- И сейчас есть конструкторы сайтов, php - программирование можно не учить вовсе. Подумайте Вы над этим. А у меня 1 конкретный вопрос. Я не прошу оценивать меня, мои навыки, их целесообразность, смысл, назначение. У меня один единственный вопрос - остальное меня не волнует: почему не отрабатывает условие и в чем конкретно я ошибся. ВСЕ. --- Добавлено --- Представляете, НОВИЧОК, 2 дня назад познакомившийся с куками и сессиями ХОЧЕТ ИХ ПОЧАЩЕ применять, протестировать, узнать возможность. У вас БОЛЬШИЕ проблемы, если Вы этого не понимаете. --- Добавлено --- Спасибо) Единственный пользователь написал код. Все заработало после самого первого кода, стояло только условие с куками выше поставить)) Благодарю!) Только есть идеи о причине?) Не ставить же всегда чекбокс (или куки) на самый верх)
@Andarilz, на твой стертый вопрос ответ: «видимо, виноват exit». На твою стертую и частично восстановленную тираду ответ: лучше спокойно прислушайся, что тебе пишут.
Давайте я вам тоже напишу всякую чушь о Вашей жизни, работе, целях, буду пинать во все стороны ваши какие-то разработки, а потом просто скажу "спокойно выслушайте"? Приятного мало, согласитесь. Конструктива пока было менее 1%. Собственно, вопрос решен, я упустил exit из виду, спасибо Вам за ответ. Не понимаю, почему для написания этих 4 английских слов, которые бы мне все разъяснили, надо сначала в 10 сообщения писать непонятно что, ко всему подряд придираться, каждое слово пытаться оспаривать, как-то судить, трактовать - хотя я и не просил об этом. Тема закрыта, в общем, вопрос решен.
@Andarilz, лично я тебе про твою жизнь ничего не писал. Все написанное относилось исключительно к показанному коду. Тебе помогли устранить откровенное недоразумение, однако код от этого стал ненамного лучше. И тебе совсем не интересно вникнуть в то, что так сильно возмутило отписавшихся выше? Ну удачи тогда. --- Добавлено --- P.S. Зачем брать такие специфические задачки, раз у тебя пока с виденьем порядка выполнения код есть проблемы?
Ага, я такой)) "все говорят - а мы делаем" (с) ))) обращайтесь))) Говоря честно - я не особо вникал в код (бо, я бы совсем иначе всю логику написал)))) просто исходя из описания проблемы получалось что нужно куки поставить перед остальной белибердой)))) Иногда сигара - это просто сигара ))))))) А вообще, повторю свой обычный совет: займитесь лучше сразу изучением Laravel, бо в конце-концов все равно вы придете именно к этому, и весь этот ужас, который вы сейчас изучаете)))) - он вам совершенно не пригодится. Реальное PHP сейчас совсем другое, чем в учебниках пятилетней давности. --- Добавлено --- )))))))))) Тут да, есть такая проблема - очень много пьяных школьников на форуме Они после пары бокалов клинского начинают думать не о хороших отметках за завтрашнюю контрольную, а воображать себя психологами и коучерами Это пройдет. Лет через 10-15. Но не у всех)))
Интересно, в чем проблема отталкиваясь по кодингу ? Зачем лепить про жизнь и прочий бред. Тут нету школьных аббревиатур, как например: Бугагага / Ахахаха!!!11L / фу днище ты как и твой код. Что насчет понимания твоей темы... Многие не смотрят как решить поставленную задачу Тсом, а выясняют причину образования РАКА с основания и пытаются как то донести до удручающего кодера. Извините господин за слова, и априори что еще могу задеть. Но жизнь тут не надо смешивать, в говно можно сесть за паранойю.
Если хочешь учиться, то просто возьми любой учебник по РНР и начни читать. Со временем поймёшь, что этот "единственный пользователь" (идиот хлеще которого я за всё время проведённое на форумах с 2007 года не встречал) накинул тебе "петлю на шею" и оказал медвежью услугу. Ему пофиг, что исправленный им код работает неправильно, более того он даже этого не понимает, хотя позиционирует себя как специалиста. Не каждый код который работает в данную секунду правильный ("Не всё золото, что блестит") завтра плохо написанный код может породить плавающую ошибку, на поиск которой можно убить много времени. Программирование - это не просто набор слов на иностранном языке, программирование - это логика. Но судя по твоей реакции на происходящее с логикой у тебя как раз большие проблемы.
Идея хорошая, но воплощение - говно (о котором здесь так любят постоянно писать). Дело в том, что программирование сознания высших приматов - занятие совсем другого рода, чем программирование веб-сервера. В нем есть куча специфических моментов без знания которых в него лучше не лезть. Я конечно понимаю что это всё - тяжелое наследие советской школы преподавания - дубовой и беспощадной, помноженной на подростковые коплексы. И что моя тирада - бессмысленна)) Но и молчать тоже не могу. Как и вы)))))
А теперь составь свою мысль в двух словах, рили каша непонятная ------ с каким воплощением ? кусок кода перевести на актуальную логику - ты называешь этот процесс говном ? Да, программирование не всем дано. Коротко и ясно. Либо ты хотел написать вот это: Смысла тратить время на человека с короной на моське, нет. Но честно б****** мне пришлось несколько раз прочесть, чтобы смысл твой понять. Накой паровозы излагать? После НГ, возможно, я отвечу ... к чему этот текст ? к воплощению ? Согласен ! И тут я СО ГЛА СЕН А тут нет... Молчи, просто молчи если делать нечего. Спойлер: Чувак... Это
Ну. бывает, ничего страшного. Я и сам помню несколько дней подряд втыкал, когда хотел разобраться с асинхронным программированием. --- Добавлено --- Да можешь не отвечать вовсе. Всё равно твои буквы не несут вообще ни какой смысловой нагрузки
Ради интереса. А почему бы и нет ? Просто потому что кто-то сказал о плохом тоне ? Не идет значение в качестве идентификатора ? Мол, зачем нам создавать рандом 32 чаров, если можно обойтись тривиальным автологином логин + пароль с кук. По сути логика одна и та же в механизме(ремембер) будет. Кто - то сказал что увидят пароль в куках посторонние ? или отловят ? Скажу так, идентификатор аутентификации такой же ценен и так же можно своровать, за`плагиатить. Не стоит сразу бежать, строчить в адресную строку волшебные теги, я лишь спрашиваю ваш личный опыт. Прочтите еще раз второй пункт внимательно.