让我解释一下:
当你发表评论时,我基本上都是这样想的(我使用js / jquery脚本将字符串发送到插入数据库的insert.php),你将收到2+分。现在我已经这样做了你获得+2分,但我想显示像stackoverflow这样的消息。我已经知道如何显示像stackoverflow这样的消息,但是我需要从insert.php发送(插入之后),这个:
<div id='message' onclick="closeNotice()" style="display: none;">
Hey, <b><? echo $pusername; ?></b> - You've just got +<? echo $gpm; ?> points for your comment!
<a href="#" class="close-notify" onclick="closeNotice()">X</a>
</div>
到index.php ..
我在考虑编写我当前的脚本(将字符串发送到insert.php),它应该找到#message并将其放入#box(在index.php中称为“box”的div)。
但是我应该怎么做?我应该喜欢,在你通过insert.php之后,然后在javascript中激活一个函数:
function showmessage() {
$("#box").html(data).find("#message").fadeIn("slow")
}
正如我所说,你激活脚本:
<script type="text/javascript" language="javascript">
showmessage();
</script>
成功插入数据库并向用户提供点数后? 我刚试过这个,我不能让它工作。 我的网站与phpBB登录会话(我已经获得的phpBB论坛)集成,所以我不认为我可以使用$ _SESSION。 并且insert.php在框架中打开。 我的问题是,操作以及确认的显示都发生在不同的页面上。
答案 0 :(得分:6)
如果我理解正确,您的问题是操作和确认的显示都发生在不同的页面上。
执行此操作的一种方法是存储要在用户会话的下一页上显示的消息:
// insert.php
$_SESSION["user_message"] = "You were awarded +2 points.";
并在下一页输出:
// thankyou.php
echo $_SESSION["user_message"]; // Or show the box, or whatever
$_SESSION["user_message"] = null; // Clean up
潜在的缺点是,如果用户打开了两个或更多页面/标签页,并在它们之间导航很多,则该消息可能出现在错误的上下文中。例如,如果单击选项卡A中的“保存”并刷新选项卡B,则可能会发生用于选项卡A的消息显示在选项卡B中。
您可以通过向邮件的变量名称添加随机生成的密钥,并将该密钥传递到要在其上显示邮件的页面来帮助您:
// insert.php
$key = "123456"; // Insert random generation method here, e.g. using rand()
$_SESSION["user_message_$key"] = "You were awarded +2 points.";
header ("Location: thankyou.php?message=$key"); // Pass the key to the next page
// thankyou.php
$key = $_GET["message"]; // No sanitation necessary here AFAICS
echo $_SESSION["user_message_$key"]; // Or show the box, or whatever
$_SESSION["user_message_$key"] = null; // Clean up
这非常优雅,因为
您要显示的消息仍保留在内部会话存储中,并且浏览器中不会传递任何消息,从而降低安全漏洞等风险。
通过取消设置会话变量,即使用户重新加载页面,也要确保消息只显示一次。
答案 1 :(得分:0)
如果需要显示消息的页面正在打开insert.php,则可以使用window.opener访问原始页面。我觉得这样的事情可能有用:
window.opener $( “#消息”)的HTML($( “#盒”)的HTML()。)淡入( “慢”);。。。
答案 2 :(得分:0)
我不确定我是否理解正确,但是如果用户在index.php上的字段中输入,那么也许你可以使用ajax请求将它发送到insert.php,并使用ajax的回调向用户显示通知?