За последние 24 часа нас посетили 18157 программистов и 1582 робота. Сейчас ищут 1110 программистов ...

Куки и checkbox

Тема в разделе "PHP для новичков", создана пользователем Andarilz, 4 ноя 2019.

  1. Andarilz

    Andarilz Новичок

    С нами с:
    18 сен 2019
    Сообщения:
    49
    Симпатии:
    0
    Приветствую. Столкнулся с проблемой: создавая простую форму авторизации, у меня не создаются куки при "отмеченном" флажке запоминания. Тестировал отдельно код setcookie - он верный, куки создаются без условий, но внутри условия ("если установлен флажок - создавай куки"), код отказывается работать.
    (часть кода с "флажков" - это post - запрос "remember", остальная часть кода функционирует). Спасибо. Вроде мелкая проблемка, но уже все час перепроверяю, должно работать, но не работает((

    PHP:
    1. <?php
    2. $msg = "Введите имя пользователя и пароль";
    3. if(count($_POST) > 0){
    4.     if($_POST["name"]==="admin" && $_POST["pass"]==="qwerty"){
    5.         $_SESSION["flag"] = true;
    6.         header("Location:secret.php");
    7.         exit();
    8.     }else{
    9.         $smg = "Неверное имя пользователя или пароль";
    10.     }
    11.     if(isset($_POST["remember"])){
    12.         setcookie("login", hash("sha256","admin"),time()+3600*24*7, "/");
    13.         setcookie("password", hash("sha256","qwerty"),time()+3600*24*7, "/");
    14.     }
    15. }
    16.  
    17. ?>
    18. <!doctype html>
    19. <html lang="ru">
    20. <head>
    21.     <meta charset="UTF-8">
    22.     <title>Login</title>
    23. </head>
    24. <body>
    25. <form method="post">
    26.     Логин <br>
    27.     <input type="text" name="name">
    28.     <br>Пароль <br>
    29.     <input type="password" name="pass">
    30.     <br>
    31.     <input type="checkbox" name="remember">Запомни меня
    32.     <br>
    33.     <button type="submit">Войти</button>
    34.     <p style="color:red">
    35.         <?php
    36.         echo $smg;
    37.         ?>
    38.     </p>
    39. </form>
    40. </body>
    41. </html>
     
  2. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Попробуйте переставить местами:

    PHP:
    1. <?php
    2. $msg = "Введите имя пользователя и пароль";
    3. if(count($_POST) > 0){
    4.     if(isset($_POST["remember"])){
    5.         setcookie("login", hash("sha256","admin"),time()+3600*24*7, "/");
    6.         setcookie("password", hash("sha256","qwerty"),time()+3600*24*7, "/");
    7.     }
    8.     if($_POST["name"]==="admin" && $_POST["pass"]==="qwerty"){
    9.         $_SESSION["flag"] = true;
    10.         header("Location:secret.php");
    11.         exit();
    12.     }else{
    13.         $smg = "Неверное имя пользователя или пароль";
    14.     }
    15. }
    если не поможет, то так:

    PHP:
    1. <?php
    2. $msg = "Введите имя пользователя и пароль";
    3. if(count($_POST) > 0){
    4.  
    5.         setcookie("login", hash("sha256","admin"),time()+3600*24*7, "/");
    6.         setcookie("password", hash("sha256","qwerty"),time()+3600*24*7, "/");
    7.  
    8.     if($_POST["name"]==="admin" && $_POST["pass"]==="qwerty"){
    9.         $_SESSION["flag"] = true;
    10.         header("Location:secret.php");
    11.         exit();
    12.     }else{
    13.         $smg = "Неверное имя пользователя или пароль";
    14.     }
    15. }
    потом так

    PHP:
    1. <?php
    2. $msg = "Введите имя пользователя и пароль";
    3. if(count($_POST) > 0){
    4.  
    5. if(isset($_POST["remember"])){
    6.         dd($_POST["remember"]);
    7.     }
    8.  
    9.     if($_POST["name"]==="admin" && $_POST["pass"]==="qwerty"){
    10.         $_SESSION["flag"] = true;
    11.         header("Location:secret.php");
    12.         exit();
    13.     }else{
    14.         $smg = "Неверное имя пользователя или пароль";
    15.     }
    16. }
    в общем, идея думаю понятна :)
     
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.830
    Симпатии:
    651
    @Andarilz, у вас НЕ «мелкая проблемка», раз вы используете ТАКИЕ куки, да еще и в придачу к сессиям ;)
     
  4. lastdays

    lastdays Активный пользователь

    С нами с:
    27 сен 2012
    Сообщения:
    410
    Симпатии:
    74
    Сейчас каждый браузер может хранить логин и пароль любой формы в браузере, насколько корректно и логично твое решение хранить в куках пароль?
    Подумай над этим))
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.788
    Симпатии:
    1.328
    Адрес:
    Лень
    у него не хранение, а такая жопаВыдриГлаза аутентификация пользователя после будет. Затребовав у Тса сам механизм кода, можно блевануть.
    --- Добавлено ---
    https://github.com/MouseZver/Aero-Authentication
    --- Добавлено ---
    Есть тема еще, где все авторизации ломаются по логике на изи. Как и на этом форуме.
     
  6. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    это да, свой самокат всегда ближе и роднее, чем чужой :D
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.788
    Симпатии:
    1.328
    Адрес:
    Лень
    Это чистая логика аутентификации без лишнего, если что o_O
     
  8. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.208
    Симпатии:
    185
    Зачем пароль хранить в куках?
     
  9. Andarilz

    Andarilz Новичок

    С нами с:
    18 сен 2019
    Сообщения:
    49
    Симпатии:
    0
    Тема не о моих мотивах, а имеет конкретный технический вопрос - условие (вроде простое) не отрабатывает. Почему? Вот и все.
    --- Добавлено ---
    100% на втором дне изучения темы у ВАС было раз в 100 хуже понимание вопроса. Так ЗАЧЕМ так себя позорить, пытаясь как-то оценивать то, что люди ТОЛЬКО НАЧИНАЮТ изучать, тестируют? Поржать не над кем, походу в жизни
    --- Добавлено ---
    И сейчас есть конструкторы сайтов, php - программирование можно не учить вовсе. Подумайте Вы над этим. А у меня 1 конкретный вопрос. Я не прошу оценивать меня, мои навыки, их целесообразность, смысл, назначение. У меня один единственный вопрос - остальное меня не волнует: почему не отрабатывает условие и в чем конкретно я ошибся. ВСЕ.
    --- Добавлено ---
    Представляете, НОВИЧОК, 2 дня назад познакомившийся с куками и сессиями ХОЧЕТ ИХ ПОЧАЩЕ применять, протестировать, узнать возможность. У вас БОЛЬШИЕ проблемы, если Вы этого не понимаете.
    --- Добавлено ---
    Спасибо) Единственный пользователь написал код. Все заработало после самого первого кода, стояло только условие с куками выше поставить)) Благодарю!) Только есть идеи о причине?) Не ставить же всегда чекбокс (или куки) на самый верх)
     
  10. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.830
    Симпатии:
    651
    @Andarilz, на твой стертый вопрос ответ: «видимо, виноват exit». На твою стертую и частично восстановленную тираду ответ: лучше спокойно прислушайся, что тебе пишут.
     
  11. Andarilz

    Andarilz Новичок

    С нами с:
    18 сен 2019
    Сообщения:
    49
    Симпатии:
    0
    Давайте я вам тоже напишу всякую чушь о Вашей жизни, работе, целях, буду пинать во все стороны ваши какие-то разработки, а потом просто скажу "спокойно выслушайте"? Приятного мало, согласитесь. Конструктива пока было менее 1%. Собственно, вопрос решен, я упустил exit из виду, спасибо Вам за ответ. Не понимаю, почему для написания этих 4 английских слов, которые бы мне все разъяснили, надо сначала в 10 сообщения писать непонятно что, ко всему подряд придираться, каждое слово пытаться оспаривать, как-то судить, трактовать - хотя я и не просил об этом. Тема закрыта, в общем, вопрос решен.
     
  12. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.830
    Симпатии:
    651
    @Andarilz, лично я тебе про твою жизнь ничего не писал. Все написанное относилось исключительно к показанному коду. Тебе помогли устранить откровенное недоразумение, однако код от этого стал ненамного лучше. И тебе совсем не интересно вникнуть в то, что так сильно возмутило отписавшихся выше? Ну удачи тогда.
    --- Добавлено ---
    P.S. Зачем брать такие специфические задачки, раз у тебя пока с виденьем порядка выполнения код есть проблемы?
     
  13. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Ага, я такой)) "все говорят - а мы делаем" (с) ))) обращайтесь)))

    Говоря честно - я не особо вникал в код (бо, я бы совсем иначе всю логику написал)))) просто исходя из описания проблемы получалось что нужно куки поставить перед остальной белибердой))))

    Иногда сигара - это просто сигара )))))))

    А вообще, повторю свой обычный совет: займитесь лучше сразу изучением Laravel, бо в конце-концов все равно вы придете именно к этому, и весь этот ужас, который вы сейчас изучаете)))) - он вам совершенно не пригодится. Реальное PHP сейчас совсем другое, чем в учебниках пятилетней давности.
    --- Добавлено ---
    ))))))))))

    Тут да, есть такая проблема - очень много пьяных школьников на форуме :D

    Они после пары бокалов клинского начинают думать не о хороших отметках за завтрашнюю контрольную, а воображать себя психологами и коучерами :D

    Это пройдет. Лет через 10-15. Но не у всех)))
     
  14. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.788
    Симпатии:
    1.328
    Адрес:
    Лень
    Интересно, в чем проблема отталкиваясь по кодингу ? Зачем лепить про жизнь и прочий бред. Тут нету школьных аббревиатур, как например: Бугагага / Ахахаха!!!11L / фу днище ты как и твой код.

    Что насчет понимания твоей темы...
    Многие не смотрят как решить поставленную задачу Тсом, а выясняют причину образования РАКА с основания и пытаются как то донести до удручающего кодера.

    Извините господин за слова, и априори что еще могу задеть. Но жизнь тут не надо смешивать, в говно можно сесть за паранойю.
     
  15. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Если хочешь учиться, то просто возьми любой учебник по РНР и начни читать. Со временем поймёшь, что этот "единственный пользователь" (идиот хлеще которого я за всё время проведённое на форумах с 2007 года не встречал) накинул тебе "петлю на шею" и оказал медвежью услугу. Ему пофиг, что исправленный им код работает неправильно, более того он даже этого не понимает, хотя позиционирует себя как специалиста. Не каждый код который работает в данную секунду правильный ("Не всё золото, что блестит") завтра плохо написанный код может породить плавающую ошибку, на поиск которой можно убить много времени.
    Программирование - это не просто набор слов на иностранном языке, программирование - это логика. Но судя по твоей реакции на происходящее с логикой у тебя как раз большие проблемы.
     
  16. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Идея хорошая, но воплощение - говно (о котором здесь так любят постоянно писать).

    Дело в том, что программирование сознания высших приматов - занятие совсем другого рода, чем программирование веб-сервера. В нем есть куча специфических моментов без знания которых в него лучше не лезть.

    Я конечно понимаю что это всё - тяжелое наследие советской школы преподавания - дубовой и беспощадной, помноженной на подростковые коплексы.

    И что моя тирада - бессмысленна))

    Но и молчать тоже не могу.

    Как и вы)))))
     
  17. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.788
    Симпатии:
    1.328
    Адрес:
    Лень
    А теперь составь свою мысль в двух словах, рили каша непонятная o_O
    ------
    с каким воплощением ? кусок кода перевести на актуальную логику - ты называешь этот процесс говном ? o_O

    Да, программирование не всем дано. Коротко и ясно.
    Либо ты хотел написать вот это:
    Смысла тратить время на человека с короной на моське, нет.
    Но честно б****** мне пришлось несколько раз прочесть, чтобы смысл твой понять. Накой паровозы излагать?

    После НГ, возможно, я отвечу ... к чему этот текст ? к воплощению ?

    Согласен ! И тут я СО ГЛА СЕН

    А тут нет... Молчи, просто молчи если делать нечего.

    bezlimiticshe-nagiev_121971311_orig_.png
     
  18. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.270
    Симпатии:
    112
    Ну. бывает, ничего страшного.

    Я и сам помню несколько дней подряд втыкал, когда хотел разобраться с асинхронным программированием.
    --- Добавлено ---
    Да можешь не отвечать вовсе. Всё равно твои буквы не несут вообще ни какой смысловой нагрузки :)
     
  19. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.788
    Симпатии:
    1.328
    Адрес:
    Лень
    А низших ?
    Выписывать ответы, уклоняясь от ценных и вопросительных мест в диалоге ?
     
  20. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.788
    Симпатии:
    1.328
    Адрес:
    Лень
    Ради интереса. А почему бы и нет ?
    • Просто потому что кто-то сказал о плохом тоне ?
    • Не идет значение в качестве идентификатора ? Мол, зачем нам создавать рандом 32 чаров, если можно обойтись тривиальным автологином логин + пароль с кук. По сути логика одна и та же в механизме(ремембер) будет.
    • Кто - то сказал что увидят пароль в куках посторонние ? или отловят ? Скажу так, идентификатор аутентификации такой же ценен и так же можно своровать, за`плагиатить.
    Не стоит сразу бежать, строчить в адресную строку волшебные теги, я лишь спрашиваю ваш личный опыт. Прочтите еще раз второй пункт внимательно.
     
    #20 MouseZver, 5 ноя 2019
    Последнее редактирование: 5 ноя 2019