当用户更改密码时,我想显示消息“已成功更改!”当用户点击警告框的确定按钮时,我会调用 logout.php 并强制用户使用新密码登录。但问题是PHP header()不等待alertbox并直接转到logout.php。 我的代码 -
if($count==1)
{
$sqlchange="UPDATE $tbl_name SET password='$newpassword' WHERE userId='$myusername'";
unset($result);
$result=mysql_query($sqlchange,$link);
if($result>0)
{ ?>
<script type="text/javascript">
alert("Your Password has been changed successfully.Please login again.");
</script>
<?php
header("location:logout.php");
exit;
}
else
{....
答案 0 :(得分:5)
您目睹标头重定向的原因是PHP是服务器端语言,其代码在 javascript之前执行。要做的就是使用javascript的重定向。
<script type="text/javascript">
alert("Your Password has been changed successfully.Please login again.")
document.location.href = 'logout.php';
</script>
答案 1 :(得分:1)
因为您必须在JavaScript代码中加入header("location:logout.php");
。 PHP只生成页面,因此它不会停止等待js函数。基本上在js中翻译header("location:logout.php");
,你就可以了。
答案 2 :(得分:1)
您不应以纯文本格式存储密码。
答案 3 :(得分:1)
你确定有效吗?输出一些文字后,您正在调用header
无论如何,一个很好的方法是:
mysql_query(.....);
$_SESSION['message'] = "Password changed!";
header(....);
然后在logout.php页面(或重定向的任何地方)
if (isset($_SESSION['message']))
{
echo "<div>".$_SESSION['message']."</div>";
unset($_SESSION['message']);
}
通过这种方式,您不必费心调整服务器端和客户端调用,并避免烦人的JS弹出窗口。 (您可以设置div
的样式,就像在页面顶部的SO上弹出的消息一样。)