无法在 PHP 中显示会话消息?
unable to show session message in PHP?
我在 class 文件中设置会话消息 $_SESSION['op_status'] = 'MY MESSAGE HERE';
然后重定向页面 header("location:news.php");
页面重定向到 news.php
但会话消息未显示。
config.php:
<?php
session_start();
// DATABASE CONFIURATION GOES HERE
?>
news.php:
<?php
require_once 'config.php';
require_once 'classes/class.news.php';
$objNews = new News();
if(isset($_POST['submit']) && $_POST['submit'] == 'add')
$objNews->add();
?>
<span class='text-warning'><?php echo $_session['op_status']; ?></span>
class.news.php:
public function add() {
if(){
// SOME CODE GOES HERE
} else {
$_SESSION['op_status'] == 'Already Exist';
}
}
很可能您还没有开始或继续 session
<?php
session_start();
// your code
?>
另一种选择是通过 URL.This 传递您的消息 header 他们是如何关闭的:
$myMessage = "<YOUR MESSAGE HERE>";
header("Location: http://www.somesite.com/news.php?mymessage=" . $myMessage);
然后 news.php:
$theMessage = $_GET['mymessage'];
你必须改变:
$_session['op_status']
至:
$_SESSION['op_status']
因为$_SESSION
是超全局的,必须大写。
另请参阅:http://php.net/manual/en/language.variables.superglobals.php
你也在这里做个对比:
$_SESSION['op_status'] == 'Already Exist';
而且我认为您想分配它,所以将其更改为:
$_SESSION['op_status'] = 'Already Exist';
也希望你的if
语句里有条件,否则不行。
注意:确保session_start();
驻留在所有使用会话的页面中。
旁注:
您可以在测试环境中添加错误报告:
<?php
ini_set("display_errors", 1);
error_reporting(E_ALL);
// rest of your code below
您需要在 header() 之后使用 exit()。
$_SESSION['msg']="Hello";
header("Location: account.php");
exit();
然后在 account.php 使用
echo $_SESSION['msg'];
确保 session_start();
在您想要 show/create 会话消息的每个页面上。
与其使用这种方式,我更喜欢使用下面的函数。 (区分是错误消息还是成功,如 Bootstrap HTML 标记)
function _redirect($url=NULL, $message=NULL, $message_type=NULL){
$_SESSION['sess_flash_message']= array();
if($message){
switch($message_type){
case 'success': $_SESSION['sess_flash_message'][] = '<div class="alert alert-success"><button data-dismiss="alert" class="close" type="button">×</button>'.$message.'</div>';break;
case 'error': $_SESSION['sess_flash_message'][] = '<div class="alert alert-error"><button data-dismiss="alert" class="close" type="button">×</button>'.$message.'</div>';break;
case 'notice': $_SESSION['sess_flash_message'][] = '<div class="alert alert-info"><button data-dismiss="alert" class="close" type="button">×</button>'.$message.'</div>';break;
case 'warning': $_SESSION['sess_flash_message'][] = '<div class="alert alert-block"><button data-dismiss="alert" class="close" type="button">×</button>'.$message.'</div>';break;
default: $_SESSION['sess_flash_message'][] = $message;
}
}
if($url) {
header("Location: ".$url);
} else {
header("Location: ".$_SERVER['HTTP_REFERER']);
}
exit();
ob_flush();
}
并调用 _redirect('login.php','You need to login first!','warning');
我在 class 文件中设置会话消息 $_SESSION['op_status'] = 'MY MESSAGE HERE';
然后重定向页面 header("location:news.php");
页面重定向到 news.php
但会话消息未显示。
config.php:
<?php
session_start();
// DATABASE CONFIURATION GOES HERE
?>
news.php:
<?php
require_once 'config.php';
require_once 'classes/class.news.php';
$objNews = new News();
if(isset($_POST['submit']) && $_POST['submit'] == 'add')
$objNews->add();
?>
<span class='text-warning'><?php echo $_session['op_status']; ?></span>
class.news.php:
public function add() {
if(){
// SOME CODE GOES HERE
} else {
$_SESSION['op_status'] == 'Already Exist';
}
}
很可能您还没有开始或继续 session
<?php
session_start();
// your code
?>
另一种选择是通过 URL.This 传递您的消息 header 他们是如何关闭的:
$myMessage = "<YOUR MESSAGE HERE>";
header("Location: http://www.somesite.com/news.php?mymessage=" . $myMessage);
然后 news.php:
$theMessage = $_GET['mymessage'];
你必须改变:
$_session['op_status']
至:
$_SESSION['op_status']
因为$_SESSION
是超全局的,必须大写。
另请参阅:http://php.net/manual/en/language.variables.superglobals.php
你也在这里做个对比:
$_SESSION['op_status'] == 'Already Exist';
而且我认为您想分配它,所以将其更改为:
$_SESSION['op_status'] = 'Already Exist';
也希望你的if
语句里有条件,否则不行。
注意:确保session_start();
驻留在所有使用会话的页面中。
旁注:
您可以在测试环境中添加错误报告:
<?php
ini_set("display_errors", 1);
error_reporting(E_ALL);
// rest of your code below
您需要在 header() 之后使用 exit()。
$_SESSION['msg']="Hello";
header("Location: account.php");
exit();
然后在 account.php 使用
echo $_SESSION['msg'];
确保 session_start();
在您想要 show/create 会话消息的每个页面上。
与其使用这种方式,我更喜欢使用下面的函数。 (区分是错误消息还是成功,如 Bootstrap HTML 标记)
function _redirect($url=NULL, $message=NULL, $message_type=NULL){
$_SESSION['sess_flash_message']= array();
if($message){
switch($message_type){
case 'success': $_SESSION['sess_flash_message'][] = '<div class="alert alert-success"><button data-dismiss="alert" class="close" type="button">×</button>'.$message.'</div>';break;
case 'error': $_SESSION['sess_flash_message'][] = '<div class="alert alert-error"><button data-dismiss="alert" class="close" type="button">×</button>'.$message.'</div>';break;
case 'notice': $_SESSION['sess_flash_message'][] = '<div class="alert alert-info"><button data-dismiss="alert" class="close" type="button">×</button>'.$message.'</div>';break;
case 'warning': $_SESSION['sess_flash_message'][] = '<div class="alert alert-block"><button data-dismiss="alert" class="close" type="button">×</button>'.$message.'</div>';break;
default: $_SESSION['sess_flash_message'][] = $message;
}
}
if($url) {
header("Location: ".$url);
} else {
header("Location: ".$_SERVER['HTTP_REFERER']);
}
exit();
ob_flush();
}
并调用 _redirect('login.php','You need to login first!','warning');