PHP header()重定向后提供Javascript警报的最简单方法

时间:2010-10-07 01:57:07

标签: php javascript redirect

我有一个用户提交表单的页面,它会转到单独的PHP脚本。脚本完成后,header()会将用户重定向回他们所在的页面。现在我想要做的是,如果脚本中存在错误或某些条件,将用户重定向到同一页面,但是一旦它们作为警告消息到达那里就会显示Javascript警报。我可以将一些变量附加到URL并使用$ _GET检查它,但我认为可能有一种更简单的方法...也许有一些POST数据,或类似的东西? 感谢

3 个答案:

答案 0 :(得分:2)

您可以使用会话在服务器端执行此操作:

  1. “显示表单”php脚本创建表单并将其返回给用户。

  2. 用户填写并将其提交给另一个接收表单数据的php脚本“接收脚本”,并注意到错误,缺少数据等。

  3. “接收脚本”将错误消息存储在会话中(作为项目错误)并重定向到“show form”脚本。

  4. “show form”脚本(与步骤1中相同)实际上不仅仅是创建表单。它还:

    • 在会话中查看它是否有项目'err',错误信息。在步骤1中没有。但现在有。因此php脚本创建表单,以及向用户显示错误消息的div。
    • 将会话的'错误'项重置为nil。
    • php脚本还可能在页面中包含javascript,这会使错误msg在一段时间后消失或显示为弹出窗口等等。
  5. PS。以上流程是rails处理表单的形式和重新显示的方式。

    更新:感谢@zod指出我没有清除会话中的错误项目。

答案 1 :(得分:1)

如果遇到错误,请将错误状态存储到$ _SESSION数组,然后将浏览器重定向到原始页面。在原始页面上有一个脚本来检查是否设置了错误状态。如果是,则触发javascript警报或您想要的任何处理。

在公共页脚模板(或原始页面的页脚)上,检查并清除错误数组,以便在用户移动到其他页面或重新加载当前页面时不会持续存在。

实施例

processor.php

<?php
if($something == $iswrong){
    $_SESSION['errors']['error5301'] = 1;
    session_write_close();
    header("Location: http://www.example.com/originalpage.php");
    exit;
} ?>

originalpage.php

<!-- Header -->
<?php
if(isset($_SESSION['errors']['error5301']) && $_SESSION['errors']['error5301'] == 1){ ?>
    <script type="text/javascript">
        alert('Something is not correct!');
    </script>
<?php } ?>

<!-- Some page content -->
....
.....
..
......

<!-- Footer -->
<?php
if(isset($_SESSION['errors'])){
    unset($_SESSION['errors']);
} ?>

希望有所帮助。

答案 2 :(得分:0)

第一页

<script>
onsubmitfunction()
{

document.getElementByid('errorid').value=1;

}
</script>
<form name='' id='' onsubmit="javascript:onsubmitfunction();">

<input type='hidden' id='errorid' value=''>
</form>

    In destination.php

    <?php
    if($_POST['error']==1)
    {
    ?>
    <script language='javascript'>

    alert('Errrrrorrrr');
    </script>

    <?

    }

    ?>

这对你的问题已经足够了。

根据我的理解