(PHP)如何在屏幕上保存javascript警告框

时间:2010-05-16 11:18:48

标签: php javascript

当用户更改密码时,我想显示消息“已成功更改!”当用户点击警告框确定按钮时,我会调用 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 
        {....

4 个答案:

答案 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上弹出的消息一样。)