Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:设置cookie_Php_Cookies - Fatal编程技术网

PHP:设置cookie

PHP:设置cookie,php,cookies,Php,Cookies,尝试在用户登录网站时将用户名另存为cookie // 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

尝试在用户登录网站时将用户名另存为cookie

// 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\u value=$results;保存更改并从google chrome中删除该cookie。然后我再次尝试在chrome中重新打开页面,发现cookie根本没有被设置。

设置cookie的第二个参数必须是字符串。您正在向它传递一个mysqli::result对象。您需要从查询中获取结果,然后使用类似的方法将结果转换为字符串,然后将其存储到cookie中。例如:

if (mysqli_num_rows($results) == 1) {
    $row = mysqli_fetch_assoc($results);
    $cookie_name = "user";
    $cookie_value = serialize($row);
    setcookie($cookie_name, $cookie_value);
    // ...

《马里奥》的转载是的,我注意到我也关闭了最后一个。然而,这实际上是一个不同的问题。请注意,注释中说,设置cookie可以使用文字字符串,但不能使用$results变量。请注意,您很容易受到此问题的影响,并且应该使用它来防止此问题。除此之外,md5与salt是偶合的,不应用于密码存储。相反,你应该考虑和。