回到呼叫网站

时间:2011-07-13 20:11:05

标签: php javascript firefox session-cookies

在搜索(并测试)提供某种 go-back 按钮的方法后,我在这里提出这个问题(也许有一个简单的解决方案)。

我在我的网站上有关于定向运动的描述(5页):http://www.uhebeisen.net/o-def/o-definition_ge.php

国外有很多网站都有这个页面的链接。现在我想在网页浏览器进入我的网页时获取他们的网址。然后我可以将一个按钮返回到我的导航列表,将他带回他的页面,然后点击链接到我的描述页面。

我已经看过使用javascript:history.go(-1)或$ _SERVER ['HTTP_REFERER']与PHP的解决方案,但问题是,websurfer可以在我的页面上移动,如果从任何页面完成他的阅读应该提供用他的(调用)URL,例如他的一所大学。

所以我需要抓住他的网址并将其存放在一个安全的地方,直到他决定离开。如果他在我的网页上浏览时返回起始页面,则不应覆盖其URL。 因为我没有编程 - 只需复制和粘贴并尝试了解会发生什么。关于如何做到这一点的任何建议都是值得欢迎的。


谢谢乔治,那个人工作了 我不知道将 session_start 放在文件的最开头,这就是我收到两个警告的原因。 在测试此函数时,我发现浏览器并不总是清除会话变量。特别是对于Firefox,它几乎永远保持调用URL(WinXP,FF 5.x),而Mac,Safari(Mac)和Camino(Mac)上的Firefox 5按预期工作:重新启动程序后,我可以使用其他网站成功测试

Firefox在会话方面的设置可能性与其他浏览器不同吗?

4 个答案:

答案 0 :(得分:4)

您应该在抵达时在用户的会话中存储$ _SERVER ['HTTP_REFERER']。使用此方法,当用户在您的站点中浏览时,该值不会被过度压缩。

session_start();
if ( !isset( $_SESSION['referrer'] ) ) {
    if ( !empty( $_SERVER['HTTP_REFERER'] ) ) { // Because not all browsers set this
        $_SESSION['referrer'] = $_SERVER['HTTP_REFERER'];
    }
}

答案 1 :(得分:2)

这样做的一种方法是存储某个地方(可能在cookie或会话中,这很容易与您的PHP页面一起)来自他们来自的页面,但仅当该页面时不在您网站的域名上。这将需要一些if语句来适当地设置cookie /会话值,但是可以使用referrer变量的特定部分相对容易地完成。可能有一种更有效的方式来存储它,但这是一个立即浮现在脑海中的想法。

编辑:我强烈推荐乔治的解决方案,这是更好的方法。

答案 2 :(得分:0)

您是否尝试过使用会话?

session_start();

if( !isset($_SESSION['refer']) )
{
    $_SESSION['refer'] = $_SERVER['HTTP_REFERER'];
}

然后,准备好按钮后,将链接设置为$ _SESSION ['refer']。

答案 3 :(得分:0)

在我过去的项目中,我通常会在此过程后存储重定向网址:

  1. 搜索查询字符串参数网址(www.yoursite.com/?redirect_url=my_encoded_url)
  2. 如果在第1点搜索没有返回任何结果,那么我会检查HTTP_REFERER
  3. 在这两种情况下,我都会在验证网址属于我网站的域后,将该值存储在SESSION变量中。