使用php header Location用POST在页面之间交换消息

时间:2017-07-06 14:13:08

标签: php post message

我已使用此代码:

<?php
// [...]
ELSE IF(isset($_GET['msg'])){
    echo "<div id='noticePanel' class='panel panel-success'><div class='panel-heading'>
    <h2 class='panel-title'>Good job!</h2></div>
    <div class='panel-body'><h4>".addslashes(strip_tags(trim(@$_GET[msg])))."</h4></div></div>";
    }
//[...]
?>

如果某些操作顺利,可以从其他页面调用:

  if ($result){
      header("Location:index.php?msg=DB updated succesfully");
      exit;
  }
你可以想象

但是,它不干净。工作,但不是最好的。

是否可以告诉我是否应将其移至 POST 请求,或者此代码是否“广泛”用于在页面之间交换状态消息?

并且,在POST的情况下,有人可以写下一些代码或将我重定向到一个解释良好的页面吗?我当然已经搜索了,我从mozilla找到了THIS,用jquery找到了THIS,并且在google上搜索了“发送帖子php标题”。 但我无法理解如何做到这一点。

非常感谢你们!

2 个答案:

答案 0 :(得分:1)

因为您希望保持代码纯净

我建议你不要在GET / POST中发送消息

只需发送状态

即可
index.php?status=success

然后检查结果文件中的状态

if(isset($_GET['status']) AND $_GET['status'] == success){
   echo "bla bla";
}elseif(isset($_GET['status']) AND $_GET['status'] == fail){
   echo "bla bla";
}else{
   //do something
}

修改

如果您有许多消息,则可以创建数组

$message = [
  'success' => 'success message here',
  'fail' => 'failmessage here',
  'notFound' => 'not found message'
];

$status = ( isset($_GET['status']) AND 
            isset($message[$_GET['status']]) )?$_GET['status']:'notFound';

echo $message[$status];

答案 1 :(得分:0)

我想我会接受这个:PHP. How to pass variable and auto redirect to another PHP file

<?php
 session_start();
 $id = $user_profile['id'];
 $_SESSION['id'] = $id;
 header('Location: checkIfExsists.php');
?>

在checkIfExsists.php页面上,检索变量:

<?php
 session_start();
 $id = $_SESSION['id'];
?>

新代码

session_start()
// [...]
ELSE IF(isset($_GET['msg'])){
    echo "<div id='noticePanel' class='panel panel-success'><div class='panel-heading'>
    <h2 class='panel-title'>Good job!</h2></div>
    <div class='panel-body'><h4>".addslashes(strip_tags(trim(@$_SESSION['msg'])))."</h4></div></div>";
    }

和..

session_start();
if ($result){
          $_SESSION['msg'] = "DB updated!";
          header("Location:index.php?msg");
          exit;
      }