PHP:设置cookie
尝试在用户登录网站时将用户名另存为cookiePHP:设置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
// 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是偶合的,不应用于密码存储。相反,你应该考虑和。