PHP: установка куки - PullRequest
0 голосов
/ 08 мая 2019

пытается сохранить имя пользователя в виде куки, когда пользователь заходит на сайт.

// LOGIN USER
if (isset($_POST['login_user'])) {
  $username = mysqli_real_escape_string($conn, $_POST['username']);
  $password = mysqli_real_escape_string($conn, $_POST['password']);

  if (empty($username)) {
    array_push($errors, "Username is required");
  }
  if (empty($password)) {
    array_push($errors, "Password is required");
  }

  if (count($errors) == 0) {
    $password = md5($password);
    $query = "SELECT * FROM tblmember WHERE Username='$username' AND Password='$password'";
    $results = mysqli_query($conn, $query);
    if (mysqli_num_rows($results) == 1) {
        $cookie_name = "user";
        $cookie_value = $results;
        setcookie($cookie_name, $cookie_value);
      $_SESSION['username'] = $username;
      $_SESSION['success'] = "You are now logged in";
      //set username as a cookie & then use that to access the user pages.
        echo "Cookie '" . $cookie_name . "' is set!<br>";
        echo "Value is: " . $_COOKIE[$cookie_name];
      header('location: profile.php');
    }else {
        array_push($errors, "Wrong username/password combination");
        echo "Cookie named '" . $cookie_name . "' is not set!";
    }
  }
}

Я попытался протестировать это, и это сработало в первый раз с: $ cookie_value = "lol";затем я переключил его на $ cookie_value = $ results;сохранил изменения и удалил этот cookie из Google Chrome.Затем я снова попытался открыть страницу в Chrome и обнаружил, что файл cookie вообще не был установлен.

1 Ответ

1 голос
/ 08 мая 2019

Второй параметр setcookie должен быть строкой.Вы передаете ему объект mysqli::result.Вам нужно получить результаты запроса, а затем использовать что-то вроде serialize, чтобы преобразовать результат в строку, которую затем можно сохранить в файле cookie.Например:

if (mysqli_num_rows($results) == 1) {
    $row = mysqli_fetch_assoc($results);
    $cookie_name = "user";
    $cookie_value = serialize($row);
    setcookie($cookie_name, $cookie_value);
    // ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...