Php cookie在根目录中工作正常,但在子目录中不工作
我想当一个访问者访问我的网站时,它会检查这个网站cookie是否保存在他的浏览器中。如果之前未保存,则将保存新的cookie。然后,如果他要访问主页,他将被重定向到保存在浏览器cookie中的页面。为此,我在任何页面中使用以下代码:Php cookie在根目录中工作正常,但在子目录中不工作,php,cookies,Php,Cookies,我想当一个访问者访问我的网站时,它会检查这个网站cookie是否保存在他的浏览器中。如果之前未保存,则将保存新的cookie。然后,如果他要访问主页,他将被重定向到保存在浏览器cookie中的页面。为此,我在任何页面中使用以下代码: $exlink = "http://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}"; if(!isset($_COOKIE['saveexperice'])){ setcookie('saveexper
$exlink = "http://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
if(!isset($_COOKIE['saveexperice'])){
setcookie('saveexperice', $exlink, time()+60*60*24*30, '/');
}
并在主页中使用此代码:
if($_COOKIE['saveexperice']){
$exlinkr = $_COOKIE['saveexperice'];
header('Location: ' . $exlinkr);
}
很好用。但问题是它只在根目录上工作。未使用任何子目录,如domain.com/subfolder。
在这里,当访问者访问时会生成cookie,但如果他访问主页,它不会重定向子文件夹。如果我访问根目录的任何页面,如domian.com/about.php,cookie将被保存并返回我的主页,它会将我重定向到保存的cookie页面domain.com/about.php。
我想它的需要工作在子文件夹页面。
我怎样才能做到这一点呢?各位,我已经找到了解决这个问题的方法,如果您需要,可以查看github链接 设置cookie并使用cookie重定向以前的访问链接 您可以在访问者/客户端浏览器上设置cookie,然后当访问者脱机并再次回到您的网站时,访问者/客户端在尝试访问者主页时自动重定向上次访问链接。他/她无法访问主页自动重定向最新链接。清除/删除cookie后,他/她可以再次访问主页 设置Cookie 首先,您需要将浏览时的链接设置为cookie。只需使用下面的代码
$exlink = "http://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}";
setcookie('saveexperice', $exlink, time()+(60*60*24*30), '/'); // set cookie for 30 days
注意:您必须需要php文件。像.php一样,如果您的文件是.html、.css,则表明php不起作用(新用户示例)。并且必须使用该代码作为上述所有代码的标题。示例请参见屏幕截图
现在我们已经将浏览器上上次访问的链接设置为cookie
现在我们将从cookie中获取该url
if(isset($_COOKIE['last_visited_url'])){
$redirect_url = $_COOKIE['last_visited_url'];
}
现在我们有了那个url,您可以将header()重定向到那个url
header('Location: '. $redirect_url);
完全代码式
if(isset($_COOKIE['last_visited_url'])){
$redirect_url = $_COOKIE['last_visited_url']; // get link from cookie
header('Location: '. $redirect_url); // redirect cookie link
}
注意:您必须需要php文件。像.php一样,如果您的文件是.html、.css,则表明php不起作用(新用户示例)。并且必须使用该代码作为上述所有代码的标题。示例请参见屏幕截图
只需为另一个页面设置cookie并放置重定向代码,访问哪个链接将被重定向?比如主页
Cookie清除/删除
现在,您可以使用该代码删除/清除cookie
$cookieurl = $_SERVER['REQUEST_URI'];
setcookie('last_visited_url', $current_location, time()-60*60*24*30, '/'); // remove cookie time
header('location: https://link.com'); // inpur link which link redirect after clear cookie
更改Cookie链接
$current_location = $_SERVER['REQUEST_URI'];
if(isset($_COOKIE['last_visited_url'])){
$cookie_location = $_COOKIE['last_visited_url'];
if($current_location != $cookie_location){
setcookie('last_visited_url', $current_location, time()+60*60*24*30, '/');
}
} else {
setcookie('last_visited_url', $current_location, time()+60*60*24*30, '/');
}
因为您只在尚未根据代码设置cookie的情况下设置cookie<代码>如果(!isset($_COOKIE['saveexperice']){是的,我已经使用过,我只需要在还没有设置COOKIE的情况下设置COOKIE,现在COOKIE没有问题,现在问题是我不能从子目录使用COOKIE主域(根目录)。现在我有了解决方案