Вход в PHP и правильная установка cookie

Я никогда не работал с $ _COOKIES, и теперь мне поставили задачу заставить его работать.

Я слежу за парой руководств в Интернете.

Найдено здесь: http://www.phpnerds.com/article/using-cookies-in-php/2

А потом вот: https://thewikihow.com/video_Dsem42810H4

Ни то, ни другое не помогло мне.

Вот как закончился мой код. Я сократил его, насколько мог.

Начиная со страницы index.php, которая содержит начальную форму входа:

<form role = "form" action = "index.php" method = "post" id = "loginForm" name = "loginForm">

  <input type = "text" class = "form-control" id = "username" name = "username" 
    value = "<?php if (isset($_COOKIE['username'])) echo $_COOKIE['username']; ?>" />

  <input type = "password" class = "form-control" id = "password" name = "password" 
   value = "<?php if (isset($_COOKIE['password'])) echo $_COOKIE['password']; ?>"/>

  <button type = "button" id = "loginSubmit" name = "loginSubmit" class = "btn btn-primary btn-block btn-flat">Sign In</button>

  <input type = "checkbox" id = "rememberme" 
    <?php if (isset($_COOKIE['username'])){echo "checked='checked'";} ?> value = "1" />

</form>

Вот код JavaScript, используемый для отправки значений формы:

$('#loginSubmit').on('click', function()
{
  var username = $('#username').val();
  var password = $('#password').val();
  var rememberme = $('#rememberme').val();

  // skipping the form validation

  $.post('api/checkLogin.php', {username: username, password: password, rememberme:rememberme}, function(data)
  {
    // the data returned from the processing script 
    // determines which page the user is sent to
    if (data == '0')
    {
      console.info('Username/Password does not match any records.');
    }
    if (data == 'reg-user")
    {
      window.location.href = "Home.php";
    }
    else
    {
      window.location.href = "adminHome.php";
    }
  });
});

Вот сценарий обработки, который называется checkLogin.php. Здесь я пытаюсь установить $ _COOKIE:

<?php
  include ("../include/sessions.php");

  if (isset($_POST['username']) && isset($_POST['password']))
  {
    $username = strip_tags(mysqli_real_escape_string($dbc, trim($_POST['username'])));
    $password = strip_tags(mysqli_real_escape_string($dbc, trim($_POST['password'])));
    $rememberme = $_POST['rememberme'];

    $select = "SELECT username, fullname, password FROM users WHERE username = '".$username."'";
    $query = mysqli_query($dbc, $select);
    $row = mysqli_fetch_array($query);

    $dbusername = htmlentities(stripslashes($row['username']));
    $dbfullname = htmlentities(stripslashes($row['fullname']));
    $dbpassword = htmlentities(stripslashes($row['password']));

    if (password_verify($password, $dbpassword))
    {
      // setting sessions here
      $_SESSION['username'] = $username;
      $_SESSION['fullname'] = $dbfullname;

      // here is where I attempt to set the $_COOKIE
      if (isset($remember))
      {
        setcookie('username', $_POST['username'], time()+60*60*24*365);
        setcookie('password', $_POST['password'], time()+60*60*24*365);
      }
      else
      {
        setcookie('username', $_POST['username'], false);
        setcookie('password', $_POST['password'], false);
      }
      echo $username;  // this gets sent back to the JavaScript
      mysqli_free_result($query);   
    }
    else
    {
      // username/password does not match any records
      $out = 0;
      echo $out;
    }
  }
?>

Итак, теперь, когда я попытался установить $ _COOKIE, я могу попытаться распечатать его на домашней странице, например:

<?php echo 'cookie ' . $_COOKIE["username"]; ?>

На что не работает, потому что все, что я вижу, это слово «cookie».

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

Хранение конфиденциальной информации в файлах cookie - не лучшая идея.

Funk Forty Niner 12.04.2018 17:04

Конфиденциальная информация, например пароль. Верный?

John Beasley 12.04.2018 17:06

Это верно.

Funk Forty Niner 12.04.2018 17:06

Понял. Как насчет того, чтобы установить cookie только для имени пользователя?

John Beasley 12.04.2018 17:06

ну, ваша форма использует метод GET, но вы передаете массивы POST; это должно было вызвать здесь неопределенный индекс.

Funk Forty Niner 12.04.2018 17:08

Я обновил код.

John Beasley 12.04.2018 17:09

вы не должны вводить пароли в строку escape().

Rotimi 12.04.2018 17:14

Я обязательно приму ваши предложения относительно формы и значений, но мне бы очень хотелось, чтобы файлы cookie работали. Буду признателен за любой ваш вклад в отношении файлов cookie. Спасибо.

John Beasley 12.04.2018 17:17

@FunkFortyNiner - Есть мысли по поводу файлов cookie?

John Beasley 12.04.2018 18:24
if (data == 'reg-user"), который содержит смешанные кавычки в JS и должен быть как одиночными, так и двойными кавычками. Исправьте это, затем используйте отчет об ошибках php и запустите var_dump() для переменных / файлов cookie и т. д. Насколько я могу судить, остальное мне кажется нормальным. Если это скорее проблема, связанная с JS, я не тот парень. JS и я не получаемся хорошими товарищами по постели, лол!
Funk Forty Niner 12.04.2018 18:28

@FunkFortyNiner - Спасибо за вашу помощь. Я ценю это.

John Beasley 12.04.2018 18:42

пожалуйста.

Funk Forty Niner 12.04.2018 18:47
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
12
407
0

Другие вопросы по теме