什么';即使在浏览器关闭后,打开最后一个打开的页面也是最好的方法


What's the best way to open last page opened even after browser is closed?

我有这样的代码,如果你转到subdirectoryname/index.php,它会将你重定向到你打开的最后一个页面。它起作用了,但我觉得它真的很傻。有人对我如何更优雅地做到这一点有更好的想法吗?

不要将其与window.history.back()混淆;我正试图让浏览器记住你打开的最后一页。所以,即使你关闭浏览器。明天再打开网站。www.example.com您将被重定向到www.example.com/lastpageyouopened.php

setCookieLastPage.php

<?php
setcookie(
  'LastPageVisited',
  $_POST['lastpagevisited'],
  time() + 199999999
);
?>

index.php

<?php include_once 'header.php'; ?>
<a href="<?php if(isset($_COOKIE['LastPageVisited'])){echo $_COOKIE['LastPageVisited'];}else{ echo 'defaultpage.php';} ?>"  class="hiddenlink-lastpageopened"></a>

<?php include_once 'footer.php'; ?>

自定义.js

if($(location).attr('pathname')  == "/subdirectoryname/" || $(location).attr('pathname') == "/subdirectoryname/index.php"  || $(location).attr('pathname') == "/subdirectoryname/index.php/" )
{
    var lastvisitedpagelink = $('.hiddenlink-lastpageopened').attr('href');
    setTimeout(function(){
    window.location.href = lastvisitedpagelink;
    },300);
}
runSETCookieLastPageVisited(window.location.href);

function runSETCookieLastPageVisited(lastpagevisited)
{
    if($(location).attr('pathname')  != "/subdirectoryname/" || $(location).attr('subdirectoryname') != "/play2win/index.php"  || $(location).attr('subdirectoryname') != "/play2win/index.php/" )
    {
        $.ajax(
            {
               type: "POST",
               url: "setCookieLastPage.php",
               data: {"lastpagevisited":lastpagevisited},
               datatype: "json",
               cache: false,
               success: function(data)
               {
                 //alert(data);
               }
            });
    }
}

注意:我现在使用另一个网站项目的子目录,因为这个项目仍然没有自己的域。当我们将其移动到它自己的域时,将不再有/subdirectoryname/,到index.php的路径将只是"index.php",而不是"subdirectoryname/index.php"

您可以在每次页面更改时捕获esc_url($_SERVER['REQUEST_URI']),然后将其放入header( Location... php调用中。当浏览器重新打开并且他们登录时页面加载时-包装在:中

  $redirect_url_var = http etc from your database
  if( isset( $redirect_url_var)){
  header("Location: $redirect_url_var");
  } 

使用php.net/manual/en/function.header.php中的代码

确保在header()之前没有输出,否则会造成混乱-在doctype之前将其放在页面顶部(假设他们在浏览时登录了您的网站)

您可以从会话cookie中获取信息-如何从SESSID获取$_SESSION数据?如果可以使用会话,可能会有所帮助。

如果你把它放在你的web root上的一个空白php页面中,你可以在"会话"下看到php安装中的设置:

 <?php phpinfo(); ?>

你可以打乱它们持续的时间(加上许多其他SO帖子):php.net/manual/en/session.configuration.php,以及即使浏览器意外关闭,如何保持会话活动?这只适用于一个位置和浏览器,如果用户换到另一台机器,例如在工作或家中,则不会被选中。

有了htaccess大师和用户日志文件,你可能会从ModRewrite中获得一些乐趣https://serverfault.com/questions/214512/redirect-change-urls-or-redirect-http-to-https-in-apache-everything-you-ever-可能是在一个带有IP,URI,Time的平面csv类型文件中(时间是这样你就可以删除IP已经更改的死地址。)IP地址可以更改,例如TalkTalk经常重置它们,或者在路由器重新启动时它们会更改,给你留下一个不再存在的IP地址的日志条目,或者至少不再属于该用户。

你可以使用类似fail2ban的内脏——存储IP地址——fail2ban www.fail2ban.org/wiki/index.php如果你幸运的话,你可以像fail2ban一样找到访问服务器上日志文件的方法,然后你可以从那里计算出给定IP地址访问的最后一页——这样你就不需要自己记录了。

还有一种方法可以从awstats-cryptome.org/2014/01/awstats-log-spy.pdf 获取用户统计信息

不确定我是否希望浏览器将其他人带到我在您网站上查看的最后一页,如果过程中不涉及登录,但这取决于您。