【问题标题】:How to show a success message after PHP form submission?PHP表单提交后如何显示成功消息?
【发布时间】:2015-10-16 05:07:23
【问题描述】:

这里是代码。我想要这样--

表单提交 --> page2.php --> 重定向 --> page1.php (这是消息。弹出窗口或其他)

page1.php

<form action="page2.php" method="post" enctype="multipart/form-data" class="form-inline subscribe-form">

                    <input type="name" name="name" placeholder="Jack">
                </div>
                <button type="submit" name="sub" value="sub" >Submit</button>

            </form>

page2.php

    <?php
//include necessary

if(isset($_POST['sub'])) {

    $nameget = mysqli_real_escape_string($dbconnect, $_POST['name']);
    $sqlentry = .....bla bla......//insert into DB
}

$getsql = mysqli_query($dbconnect, $);


if($getsql){
    mysql_close($dbconnect);
    header('location:page1.php');

}



?>

【问题讨论】:

  • 也许通过 url 将成功消息传递给 page1.php ?

标签: php ajax forms redirect post


【解决方案1】:

你在哪里:

header('location:page1.php');

在位置上附加一个变量,例如:

header('location:page1.php?status=success');

在 page1.php 上,执行如下操作:

if( $_GET['status'] == 'success'):
    echo 'feedback message goes here';
endif;

【讨论】:

  • 这很好。它奏效了,谢谢。但是当我刷新“page1.php?status=success”页面时,有没有办法前往“page1.php”?
  • 当然,取决于你想要什么.. 可能将状态存储在会话中,或者只是使用 javascript 进行简单的重定向,或者在链接到 page1 的警报或模式窗口中显示反馈.php..
【解决方案2】:

这样你的flash消息就不会在刷新后一次又一次地出现。

<?php session_start();
if(isset($_SESSION['msg']) && $_SESSION['msg'] != ''){
    echo $_SESSION['msg'];
    unset($_SESSION['msg']);
}
?>
    <form action="page2.php" method="post" 
enctype="multipart/form-data" class="form-inline subscribe-form">

                    <input type="name" name="name" placeholder="Jack">
                </div>
                <button type="submit" name="sub" value="sub" >Submit</button>    


           </form>

还有

<?php
session_start();
//include necessary

if(isset($_POST['sub'])) {

    $nameget = mysqli_real_escape_string($dbconnect, $_POST['name']);
    $sqlentry = .....bla bla......//insert into DB
}

$getsql = mysqli_query($dbconnect, $);
  if($getsql){
        mysql_close($dbconnect);
        $_SESSIOM['msg'] = 'Value Inserted or whatever';
        header('location:page1.php');        
    } 
?>

【讨论】:

  • 不要忘记取消设置 $_SESSION 消息,否则在页面刷新后它仍然存在。
  • 还要在顶部使用 isset() 语句添加对 $_SESSION['msg'] 的检查,否则会抛出错误!
  • 是的,当然。添加了相同的内容。
  • 稍微修改了你的答案:)