在 php 中的某些操作后正确处理回复消息

Handle reply messages properly after some operations in php

我正在 corePHP 上开发一个应用程序,每当我处理添加、编辑和删除操作时,我都会使用 "header" 方法以及附加在 URL 中的查询字符串进行重定向,例如“http://mywebsite.com/my_file.php?added=1”,我正在检查 "added" 是否存在于 URL 中,并使用 "isset($_GET['added'])" 等全局变量,消息显示正常,但 我的问题是什么is“每当我刷新同一页面时,由于参数 'added' 出现在 URL 中,消息会一次又一次地显示。我知道必须有一个正确的方法处理这个。所以,任何人都可以建议一个正确的处理方法。谢谢。

我的代码如下: 浏览器 URL

http://mywebsite.com/my_website_page.php?added=1

my_website_page.php:

if(isset($_POST)){
  $is_success = my_method_todo_some_task($_POST);
  if($is_success ){
      header('Location: my_website_page.php?id='.$my_var.'&added=1');
      exit;
  }else{
      header('Location: my_website_page.php?id='.$my_var.'&added=0');
      exit;
  }
}

my_website_page.php :

if(isset($_GET['added'])) { 
 if($_GET['added'] == 1){
    echo '<div class="" style="color:green;font-size:18px;text-align:center">1 Record added successfully</div>';    
 }else{
    echo '<div class="" style="color:red;font-size:18px;text-align:center">Some problem occurred, please try again.</div>';
 } 
}

我知道这对于会话是可行的,但如果我们使用会话,那么同样的问题又会出现。所以除了使用会话之外的任何想法。谢谢。

这时候session就派上用场了

session_start();
if(isset($_POST)){ 
  $is_success = my_method_todo_some_task($_POST);
  if($is_success ){
      $_SESSION['added'] = 1;
      header('Location: my_website_page.php?id='.$my_var.'&added=1');
      exit;
  }else{
      $_SESSION['added'] = 0;
      header('Location: my_website_page.php?id='.$my_var.'&added=0');
      exit;
  }
}


if(!empty($_SESSION['added'])) {
  echo 'Your message here';
  unset($_SESSION['added']);
}

作为快速修复,我建议在会话中设置成功或失败消息 参见:

       if($is_success ){
    $_SESSION['msg']="Record added successfully";
$_SESSION['successful']=1;
          header('Location: my_website_page.php?id='.$my_var);
          exit;
      }else{
$_SESSION['successful']=0;
    $_SESSION['msg']="Some problem occurred, please try again.";
          header('Location: my_website_page.php?id='.$my_var);
          exit;
      }

并在 website.php 中:

   if(isset($_SESSION['successful']) && $_SESSION['successful'] ) { 

    echo '<div class="" style="color:green;font-size:18px;text-align:center">'. $_SESSION["msg"].'</div>';    
 }
if(isset($_SESSION['successful']) && !$_SESSION['successful'] ) {
    echo '<div class="" style="color:red;font-size:18px;text-align:center">'. $_SESSION["msg"].'</div>';
 }
unset($_SESSION['successfull']);
unset($_SESSION['msg']); 
}

不要忘记在每页顶部添加 session_start()。

注意:还有其他几种方法可以像 ajax 提交一样做到这一点。