在index.php上,我想重定向登录到home.php的用户ana还检查是否设置了cookie,如果cookie存储了正确的信息,则重定向它们。但问题是,如果用户保存了cookie并想要注销并转到索引页面,他就不能,因为索引页面将重新检查他保存的cookie并重新签名。请帮助:
<?php
include("checkcook.php");
function redirect() {
header('location:home.php');
die();
}
session_start();
if((isset($_COOKIE["jmuser"])) && (isset($_COOKIE["jmpass"]))){
checkCookie($_COOKIE["jmuser"], $_COOKIE["jmpass"]);
}
if(isset($_SESSION['username'])){
redirect();
}
?>
哦,这是checkcook.php
<?php
function checkCookie($username, $password){
$conn=mysql_connect("localhost", "***", "***") or die(mysql_error());
mysql_select_db('jmtdy', $conn) or die(mysql_error());
$result=mysql_query("select * from users where username = '$username'");
if($result != false){
$username=mysql_real_escape_string($username);
$password=mysql_real_escape_string($password);
$dbArray=mysql_fetch_array($result);
$dbArray['password']=mysql_real_escape_string($dbArray['password']);
$dbArray['username']=mysql_real_escape_string($dbArray['username']);
if(($dbArray['password'] != $password ) || ($dbArray['username'] != $username) || ($dbArray['active'] != '1')){
setcookie("jmuser","",time()-3600);
setcookie("jmpass","",time()-3600);
session_unset($_SESSION['username']);
session_unset($_SESSION['password']);
return;
}
$_SESSION['username']=$username;
return true;
}
else{
setcookie("jmuser","",time()-3600);
setcookie("jmpass","",time()-3600);
session_unset($_SESSION['username']);
return;
}
}
?>
这是我的退出代码。但是,如果我销毁cookie,那么用户每次访问网站时都需要登录?我不希望这样。
<?php
function redirect() {
header('location:index.php');
die();
}
session_start();
session_destroy();
redirect();
?>
答案 0 :(得分:1)
简单的解决方案,只需在他们退出时删除
//sets the expiration time to -3600 seconds, i.e. 1 hour in the past
setcookie ("AnExampleCookie", "", time() - 3600);
或者你是说,如果他们想从 home.php注销,他们不能因为它重定向?如果是这种情况,那么可以通过设置计数器来实现一种知道用户是否已经从home.php重定向一次的方法。
好的,你现在让问题更清楚了
你说
“但是,如果我销毁cookie,那么每次用户访问网站时都需要登录?我不希望这样。”
但用户是不是选择退出?
“如果用户保存了cookie并想要注销并转到索引页面”
所以我仍然说,只需在他们登出时删除Cookie ,然后再访问home.php页面