Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(PHP)如何在屏幕上保持javascript alertbox_Php_Javascript - Fatal编程技术网

(PHP)如何在屏幕上保持javascript alertbox

(PHP)如何在屏幕上保持javascript alertbox,php,javascript,Php,Javascript,当用户更改密码时,我想显示已成功更改的消息!当用户单击alertbox的OK按钮时,我会调用logout.php并强制用户使用新密码登录。但问题是php标头没有等待alertbox,而是直接转到logout.php。 我的代码- 您看到头重定向的原因是PHP是一种服务器端语言,其代码在javascript之前执行。方法是使用javascript的重定向 <script type="text/javascript"> alert("Your Password has been ch

当用户更改密码时,我想显示已成功更改的消息!当用户单击alertbox的OK按钮时,我会调用logout.php并强制用户使用新密码登录。但问题是php标头没有等待alertbox,而是直接转到logout.php。 我的代码-


您看到头重定向的原因是PHP是一种服务器端语言,其代码在javascript之前执行。方法是使用javascript的重定向

<script type="text/javascript">
  alert("Your Password has been changed successfully.Please login again.")
  document.location.href = 'logout.php';
</script>

因为您必须包含headerlocation:logout.php;在javascript代码中。PHP只是生成页面,这样它就不会因为等待js函数而停止。主要翻译headerlocation:logout.php;在js中,您就可以了

您不应该以纯文本形式存储密码。

您确定这有效吗?您在输出一些文本后调用header

无论如何,一个很好的方法是:

mysql_query(.....);
$_SESSION['message'] = "Password changed!";
header(....);
然后在logout.php页面或重定向到的任何位置

if (isset($_SESSION['message']))
    {
    echo "<div>".$_SESSION['message']."</div>";
    unset($_SESSION['message']);
    }

通过这种方式,您不必费心协调服务器端和客户端调用,并且可以避免恼人的JS弹出窗口。您可以将div的样式设置为页面顶部弹出的消息。

只是为了澄清这一点:您所经历的是,所有php代码都在javascript之前得到有效处理。PHP发生在服务器上,然后页面被发送到浏览器,然后javascript被处理。希望这能把事情弄清楚。@Pekka:是的,若那个里并没有必要,警报当然是模态对话框,只有在用户单击“确定”后才会发生重定向。事实上,以前我写的有点不同,但忘了从那里删除它。无论如何,谢谢。不,它不工作。警报框即将出现,但当我单击“确定”时,如果$result>0,它不会调用logout.php{?>如果警报您的密码已成功更改。请再次登录。{document.location.href='logout.php';}@Piyush您需要检查浏览器中实际输出的内容。$result>0是codswallop无论如何,您需要使用mysql_num_rows$result>0。@Piyush我认为当警报框打开时不可能关闭浏览器窗口。虽然从技术上讲这是一条很好的建议,但这与他遇到的问题毫无关系尽管如此,还是有一条非常重要的建议我想把它作为一条评论发布,但似乎在以前的帖子中找不到评论按钮。。
if (isset($_SESSION['message']))
    {
    echo "<div>".$_SESSION['message']."</div>";
    unset($_SESSION['message']);
    }