目前我手中有一个场景。我有2页index.php and code.php.
用户首先进入index.php页面,然后重定向到code.php页面并返回index.php页面。
如果在code.php页面中发生了一些错误,我需要在index.php页面重定向到索引页面时显示该错误。
我将错误信息存储在这样的会话中,然后将页面bsck重定向到index.php页面
$_SESSION["errormsg"]='please try again';
header("Location: index.php");
但是如果我在index.php页面中回显此会话消息,它会在页面加载时显示,但是当索引页面位于code.php页面之后我只需要一次。任何人都可以告诉它如何做到
答案 0 :(得分:3)
我认为,通过会话显示错误消息的最佳方式是使用单独的消息文件,如message.php。
第1步: 你只需要在code.php。
中设置会话和错误信息$ _ SESSION [“errormsg”] ='请再试一次';
第2步:
现在创建一个名为“message.php”的新文件。
将会话错误消息存储到新变量中。
$ error = $ _SESSION [“errormsg”];
第3步:
然后,取消设置会话或销毁会话。
// remove all session variables
session_unset();
// destroy the session
session_destroy();
第4步:
<div id='alert'><div class=' alert alert-block alert-info fade in center'>$error</div></div>
我认为这会给你完整的答案。
答案 1 :(得分:2)
使用简单条件检查特定会话是否已设置。
if(isset($_SESSION["errormsg"])) {
$error = $_SESSION["errormsg"];
session_unset($_SESSION["errormsg"]);
} else {
$error = "";
}
echo $error;
答案 2 :(得分:0)
您可以在页面开头使用session_start()
,因为您在不实际启动会话的情况下分配会话变量值。
您也可以使用条件
<?php
session_start();
if (isset($_SESSION['variablename']))
{
//your code
}
?>
答案 3 :(得分:0)
//Ensure that a session exists (just in case)
if( !session_id() )
{
session_start();
}
功能
/**
* Function to create and display error and success messages
* @access public
* @param string session name
* @param string message
* @param string display class
* @return string message
*/
function flash( $name = '', $message = '', $class = 'success fadeout-message' )
{
//We can only do something if the name isn't empty
if( !empty( $name ) )
{
//No message, create it
if( !empty( $message ) && empty( $_SESSION[$name] ) )
{
if( !empty( $_SESSION[$name] ) )
{
unset( $_SESSION[$name] );
}
if( !empty( $_SESSION[$name.'_class'] ) )
{
unset( $_SESSION[$name.'_class'] );
}
$_SESSION[$name] = $message;
$_SESSION[$name.'_class'] = $class;
}
//Message exists, display it
elseif( !empty( $_SESSION[$name] ) && empty( $message ) )
{
$class = !empty( $_SESSION[$name.'_class'] ) ? $_SESSION[$name.'_class'] : 'success';
echo '<div class="'.$class.'" id="msg-flash">'.$_SESSION[$name].'</div>';
unset($_SESSION[$name]);
unset($_SESSION[$name.'_class']);
}
}
}
//Set the first flash message with default class
flash( 'example_message', 'This content will show up on example2.php' );
//Set the second flash with an error class
flash( 'example_class', 'This content will show up on example2.php with the error class', 'error' );
显示 该 消息
<?php flash( 'example_message' ); ?>
<?php flash( 'example_class' ); ?>
答案 4 :(得分:0)
问题已在3年前得到解答,但我认为我可以在同一主题中添加一些内容。我希望它有所帮助。
如果每次打开页面时都会显示index.php页面中的会话消息,则表示会话变量“errormsg”尚未清除。
因此,如上所示,请在显示后使用unset($_SESSSION['errormsg']);
将其删除。
但是,当您执行此操作时,会出现另一个问题,错误消息将不会在code.php中显示此代码:
$_SESSION["errormsg"]='please try again';
header("Location: index.php");
因为当您重定向到索引页面时,会在显示消息之前清除会话变量。
解决这个问题:
避免多次重定向页面。
在code.php中使用:
$_SESSION["errormsg"]='please try again';
没有重定向到index.php文件。