在 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 提交一样做到这一点。
我正在 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 提交一样做到这一点。