2016-08-13 35 views
0

我正在尝试学习如何复制google chrome的返回功能,它会将您发送回去的specific page复制谷歌浏览器的返回功能

这里是我的情况:

这是主要的网页

www.mysite.com/main 

现在主要的页面可以有不同类型的网址在这里有一个例子:

  1. www.mysite.com/main/type
  2. www.mysite.com/main/type/pagenum
  3. 现在

,例如用户访问这个网址:www.mysite.com/main/dog/labrador/3

然后当用户试图查看这样的链接(www.mysite.com/view/title-of-the-link ),我将有一个回去链接按钮返回用户到www.mysite.com/main/dog/labrador/3

我有一个解决方案来解决这个使用$_SESSION变量,例如:

if($_GET['type']) { 
    $sess_type = '/' . $_GET['type']; 
} 

if($_GET['category']) { 
    $sess_cat = '/' . $_GET['category']; 
} 

if($_GET['pagenum']) { 
    $sess_page = '/' . $_GET['pagenum']; 
} 

$_SESSION['link'] = '/main' . $sess_type . $sess_cat . $sess_page; 

这确实是一份工作,我试图在我的本地主机上做这个想法。但是我遇到了一个问题,例如:

如果最后的$_SESSION['link']是 - >www.mysite.com/main/cat/persian/5,然后用户试图再次查看他们以前的历史访问。然后他们重新访问了这样的链接,例如www.mysite.com/view/labrador-is-the-title。然后$_SESSSION['link']将保存在返回按钮将是www.mysite.com/main/cat/persian/5。这是我在解决方案中看到的问题。

我的问题是,我该如何正确地做到这一点?任何建议和建议都会对我有所帮助!

回答

0

首先,你应该使用Javascript的相同。它有一个你可以使用的历史api。现在假设你想在php中做到这一点,你应该对浏览器后退按钮的工作原理有一点点想法。它基于存储所有URL的堆栈。这里是一个小的代码,让你开始

调用下面的代码每个PHP脚本

<?php 
    array_push($_SESSION["session_stack"],$_SERVER['REQUEST_URI']); 
?> 

调用下面的代码返回到最后一页之前

<?php 
    $url = array_pop($_SESSION["session_stack"]); 
    header('Location: '.$url); 
?> 

这基本上维持一个堆栈在服务器端类似于浏览器。当你调用代码的第二部分时,它只是重定向到堆栈中的最后一个元素。

+0

好的,谢谢,我会试试这个。 Thansk – googol8080

+0

@ googol8080再次我只是演示了因为你标记了PHP而不是javascript。这将是明智的使用JavaScript的相同:) – georoot

+0

老兄什么是$ _SESSION ['session_stack']'? – googol8080