Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.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是否保存在他的浏览器中。如果之前未保存,则将保存新的cookie。然后,如果他要访问主页,他将被重定向到保存在浏览器cookie中的页面。为此,我在任何页面中使用以下代码: $exlink = "http://{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}"; if(!isset($_COOKIE['saveexperice'])){ setcookie('saveexper

我想当一个访问者访问我的网站时,它会检查这个网站cookie是否保存在他的浏览器中。如果之前未保存,则将保存新的cookie。然后,如果他要访问主页,他将被重定向到保存在浏览器cookie中的页面。为此,我在任何页面中使用以下代码:

$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主域(根目录)。现在我有了解决方案