Php 要记住和重定向的Cookie

Php 要记住和重定向的Cookie,php,javascript,jquery,css,Php,Javascript,Jquery,Css,这可能是一个复杂的问题,但我需要做的与您访问制造商网站时看到的“国家/地区选择”页面非常相似,这些页面询问您来自何处,然后在选择后将您发送到相应的网站,例如美国版或西班牙版。我见过用弹出窗口或阴影框来完成这些操作,这是首选。所以 当你进入我们的主页时,会出现一个弹出窗口,或者更好,两秒钟后会出现一个阴影框 向用户提供图形和/或文本链接,以访问站点a或站点B 用户为他们选择正确的站点并发送到该站点 Cookies留给用户,因此 只要饼干还在,他们就再也看不到选择框了。 当他们点击页面时,他们总是被

这可能是一个复杂的问题,但我需要做的与您访问制造商网站时看到的“国家/地区选择”页面非常相似,这些页面询问您来自何处,然后在选择后将您发送到相应的网站,例如美国版或西班牙版。我见过用弹出窗口或阴影框来完成这些操作,这是首选。所以

当你进入我们的主页时,会出现一个弹出窗口,或者更好,两秒钟后会出现一个阴影框 向用户提供图形和/或文本链接,以访问站点a或站点B 用户为他们选择正确的站点并发送到该站点 Cookies留给用户,因此 只要饼干还在,他们就再也看不到选择框了。 当他们点击页面时,他们总是被重定向到正确的选择。
在我的研究中,看起来你可以做一个,但不能同时做两个。您认为如何?

大致了解执行每个步骤所需的内容

function redirectPopup(){
 /*Do your popup stuff*/
}

document.onload = function(){

    /*set timer to call your popup renderer*/
    setTimeout(redirectPopup,2000)
}
根据上面的内容,您有几个弹出窗口选项,我推荐以下选项之一

-将弹出窗口包含在站点访问的响应文本中,并将其可见性设置为隐藏。然后让你的redirectPopup函数更改样式属性以显示弹出窗口-禁用所有其他内容。 -让重定向弹出功能生成整个弹出窗口

至于cookie,您可以使用setcookie函数,该函数可用于在站点访问时自动重定向用户。例如:

/*Server request with $_GET redirectTo property*/
if(isset($_GET['redirectTo']))
    setcookie('redirectTo', $_GET['redirectTo'], time() + 86400 * 14);

/*Check if the redirectTo cookie exists, redirect if true*/
if(isset($_COOKIE['redirectTo']))
    header("location:". $_COOKIE['redirectTo']);

/*Do your initial, no redirect stuff here*/
....
在上面的示例中,当用户访问站点时,服务器首先检查他们是否选择了重定向选项;假设当用户选择重定向选项时,目标url与包含GET参数“redirectTo”的站点相同。如果找到此参数的值,则假定用户必须访问该站点才能查看重定向选项,并设置其重定向cookie

第二部分检查cookie是否已设置,如果已设置,则重定向用户。在本例中,我只是将cookie值传递给header函数,实际上,以稍微复杂一点的方式处理这个问题会更实际

setcookie方法不需要向其传递有限的时间段,因此不能设置永久cookie,但可以设置一个荒谬的保留期。最后,用户只能从他们当时使用的机器和浏览器访问cookie,如果没有某种形式的用户日志记录,就无法实现时间和位置的任意重定向

Kevin B提出了一个很好的观点,即用户并不总是启用Cookie。考虑到这一点,php代码的第一行部分可以编辑为以下内容,以处理此类情况

/*Server request with $_GET redirectTo property*/
if(isset($_GET['redirectTo']))

    /*Where setting a cookie fails*/
    if(! setcookie('redirectTo', $_GET['redirectTo'], time() + 86400 * 14))
        header("location:" $_GET['redirectTo']);

与前一种方法一样,重定向可能会受益于更多的参与,但使用此方法将在cookies不可用时强制重定向。

我认为您有一个需求列表,您需要什么样的建议?不确定你的要求是什么。你可以做一件事,但不能同时做两件事——不确定两者都是什么。您所描述的是完全可能的,并且是cookies的一个基本用法。看起来您可以做一个,但不能同时做一个或两个选项?如果禁用cookies会发生什么?你可能会看到这只是少数,但在我们的网站上,有相当多的用户没有cookies,因此永远无法查看我们的网站。我认为最好的解决办法是不要强迫用户选择国家或语言。将它设为默认值,然后在页面上的某个地方给他们更改它的选项。非常感谢。这是一个很好的线索,我会用它来为我指明正确的方向-真的很感谢奥利弗。也很抱歉没有在我的帖子上说清楚-这是我第一次来这里,而且是新手。下次会更具体。Kevin我同意你的观点,这对可用性或SEO都不好。我更愿意把它放在网站上,但不幸的是,尽管我提出了抗议,客户还是会这么做。。。再次感谢大家。