PHP/Javascript将消息传递到另一个页面
让我解释一下: 我基本上希望这样,当你发表评论时,(我使用js/jquery脚本将字符串发送到insert.php,插入到数据库中),你会得到2+分。现在我已经这样做了,你得到+2分,但我想显示一个类似stackoverflow的消息。我已经知道如何显示stackoverflow这样的消息,但在某种程度上,我需要从insert.php(插入后)发送以下消息: 正如我所说的,你激活脚本的方法是:PHP/Javascript将消息传递到另一个页面,javascript,html,message-passing,Javascript,Html,Message Passing,让我解释一下: 我基本上希望这样,当你发表评论时,(我使用js/jquery脚本将字符串发送到insert.php,插入到数据库中),你会得到2+分。现在我已经这样做了,你得到+2分,但我想显示一个类似stackoverflow的消息。我已经知道如何显示stackoverflow这样的消息,但在某种程度上,我需要从insert.php(插入后)发送以下消息: 正如我所说的,你激活脚本的方法是: <script type="text/javascript" language="javascr
<script type="text/javascript" language="javascript">
showmessage();
</script>
showmessage();
成功插入数据库并给用户打分后?
我刚刚测试过这个,但我无法让它工作。
我的站点与phpBB登录(phpBB论坛)的会话集成在一起,所以我认为我不能使用$\u会话。
然后在一个框架中打开insert.php。
我的问题是,操作和确认的显示发生在不同的页面上。如果我理解正确,您的问题是操作和确认的显示发生在不同的页面上 一种方法是存储将在用户会话的下一页上显示的消息:
// 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,则可能会在选项卡B中显示针对选项卡A的消息
您可以通过将随机生成的键添加到消息的变量名中,并将该键传递到要在其上显示消息的页面来帮助实现这一点:
// 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
这是非常优雅的,因为
- 要显示的消息仍保留在内部会话存储中,并且在任何时候都不会在浏览器中传递,从而降低了安全漏洞等风险
- 通过取消设置session变量,可以确保即使用户重新加载页面,消息也只显示一次
// 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,则可能会在选项卡B中显示针对选项卡A的消息
您可以通过将随机生成的键添加到消息的变量名中,并将该键传递到要在其上显示消息的页面来帮助实现这一点:
// 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
这是非常优雅的,因为
- 要显示的消息仍保留在内部会话存储中,并且在任何时候都不会在浏览器中传递,从而降低了安全漏洞等风险
- 通过取消设置session变量,可以确保即使用户重新加载页面,消息也只显示一次
如果需要显示mesage的页面正在打开insert.php,则可以使用window.opener访问原始页面。我认为这样做可能会奏效: window.opener.$(“#message”).html($(“#box”).html()).fadeIn(“慢”)
我不确定我是否理解正确,但是如果用户在index.php上的字段中输入,那么您可能可以将其发送到insert.php并发出ajax请求,然后使用ajax的回调向用户显示通知?我不确定我是否理解正确,但是如果用户在index.php上的字段中输入,然后,您可以通过ajax请求将其发送到insert.php,并使用ajax的回调向用户显示通知?您可以使用stack overflow平台-我不想创建一个完整的stackoverflow社区!阅读问题。谢谢..为赏金干杯,但是你没有得到一个好的答案,是吗?:)如果您使用评论讨论中获得的所有信息重新打开一个问题,请告诉我,我会看一看。这绝对是可以解决的,只是有点偏离了轨道,因为一开始需求并不完全清楚。@Pekka没关系,我使用会话解决了这个问题:在insert.php上保存变量,然后激活一个脚本,检查变量是否已保存..(检查我制作的session.php,检查是否已设置),这很有效,所以我想我想给你奖金,因为你在这个问题上帮了大忙..你可以使用stack overflow平台-我不想做一个完整的stackoverflow社区!阅读问题。谢谢..为赏金干杯,但是你没有得到一个好的答案,是吗?:)如果您使用评论讨论中获得的所有信息重新打开一个问题,请告诉我,我会看一看。这绝对是可以解决的,只是有点偏离了轨道,因为一开始需求并不完全清楚。@Pekka没关系,我使用会话解决了这个问题:在insert.php上保存变量,然后激活一个脚本,检查变量是否已保存..(检查我制作的session.php,检查是否已设置),这很有效,所以我想我想把赏金给你,因为你在这个问题上帮了大忙..嗨。这个方法看起来……好吧,我现在就测试一下,但我有一个问题。我希望当您单击insert时,它显示在index.php中。。我知道我可以在index.php中创建一个以m为单位的部分