我使用document.referrer查看用户是否在我的应用程序中添加了新消息。显示消息的页面称为“messages.php”,处理添加消息的脚本称为“add_message.php”。
我想在最后添加的消息上创建一个效果,但前提是用户刚刚添加了消息。要查看最后一条消息是否刚刚添加并且之前没有,我需要查看用户上次访问的页面是否为“add_message.php”。
这是我用来检测上次访问过的URL的代码,用if语句检查是否是这种情况:
var prevURL = document.referrer;
var newMessageURL = 'add_message.php';
if(prevURL.indexOf(newMessageURL) > -1) {
alert(prevURL);
}
问题在于,当我添加消息时,脚本'add_message.php'被调用(通过表单操作),但是,document.referrer返回'messages.php'作为最后访问过的页面,但它应该是' add_message.php',因为这是我在添加新邮件时回来的地方。
如何在添加消息时让document.referrer返回'add_message.php'?
在'add_message.php'中我使用
header('Location: ' . $_SERVER['HTTP_REFERER']);
这会导致问题吗?
答案 0 :(得分:1)
推荐人充其量是不可靠的,特别是因为浏览器可以选择欺骗或完全隐藏它。在这种情况下,因为它是一个重定向,所以"在...之间"页面不会被计为您访问的最后一页。
那就是说,既然你正在使用PHP,那还有另一种方式:
作为add_message.php
文件的一部分,请添加以下内容:
// assuming you already have session_start() somewhere above
$_SESSION['just_added_a_message'] = true;
然后,在您拥有JavaScript的地方,将其替换为PHP:
<?php
if( !empty($_SESSION['just_added_a_message'])) {
?>
<script>alert("Ohai there!");</script>
<?php
unset($_SESSION['just_added_a_message']);
}
?>
我自己使用这种技术来显示确认信息&#34;你发送了一条个人信息给X&#34;发送后用户被重定向回收件箱时的消息。