即使在浏览器关闭后打开最后一页的最佳方式是什么?

时间:2015-12-18 20:40:18

标签: javascript php jquery html ajax

如果您转到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'; ?>

custom.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”而不是“subirectoryname / index.php”< / p>

1 个答案:

答案 0 :(得分:0)

您可以在每次更改页面时捕获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中获取信息 - 如果您可以使用会话,How can I get $_SESSION data from SESSID?可能会有所帮助。

您可以在&#34; Sessions&#34;下看到php安装中的设置。如果你把它放在你的web根目录上的空白php页面中:

 <?php phpinfo(); ?>

你可以把他们持续的时间(以及许多其他SO帖子)搞得一团糟:php.net/manual/en/session.configuration.phphow to keep the session active even if the browser was accidentally close?这只适用于一个位置和浏览器,并且不会被选中如果用户改变到另一台机器,例如在工作或家里。

使用ModRewrite大师和用户https://serverfault.com/questions/214512/redirect-change-urls-or-redirect-http-to-https-in-apache-everything-you-ever的日志文件,您可能会从htaccess中获得一些快乐 - 可能是在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

获取用户统计信息

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