Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在会话中存储错误消息并显示在另一页上_Php_Html_Session - Fatal编程技术网

Php 在会话中存储错误消息并显示在另一页上

Php 在会话中存储错误消息并显示在另一页上,php,html,session,Php,Html,Session,目前我手头有一个场景。我有两个页面index.php和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。

用户首先进入index.php页面,然后被重定向到code.php页面并返回index.php页面

若code.php页面出现错误,我需要在index.php页面重定向回索引页面时显示该错误

我像这样将错误消息存储在会话中,然后将页面bsck重定向到index.php页面

$_SESSION["errormsg"]='please try again';
header("Location: index.php");

但是,如果我在index.php页面中回显此会话消息,则每次加载页面时都会显示该消息,但是当index页面位于code.php页面之后时,我只希望显示一次。有人能告诉我怎么做吗?

使用一个简单的条件来检查是否设置了特定的会话

if(isset($_SESSION["errormsg"])) {
    $error = $_SESSION["errormsg"];
    session_unset($_SESSION["errormsg"]);
} else {
    $error = "";
}

echo $error;

使用简单条件检查是否设置了特定会话

if(isset($_SESSION["errormsg"])) {
    $error = $_SESSION["errormsg"];
    session_unset($_SESSION["errormsg"]);
} else {
    $error = "";
}

echo $error;

您可以在页面开始时使用
session\u start()

你也可以使用这个条件

<?php
session_start();
if (isset($_SESSION['variablename']))
{
 //your code
}
?>

您可以在页面开始时使用
session\u start()
,因为您在分配会话变量值时没有实际启动会话

你也可以使用这个条件

<?php
session_start();
if (isset($_SESSION['variablename']))
{
 //your code
}
?>

我认为,通过会话显示错误消息的最佳方式是使用单独的消息文件,如message.php

步骤1: 您只需在code.php中使用错误消息设置会话

$\会话[“errormsg”]=“请重试”

步骤2:

  • 现在创建名为“message.php”的新文件

  • 将会话错误消息存储到新变量中

$error=$\会话[“errormsg”]

步骤3:

然后,取消设置会话或销毁会话

 // remove all session variables
 session_unset(); 

 // destroy the session 
 session_destroy(); 
步骤4:

  • 现在,在格式化的div标记中回显这个错误变量,这样您的错误看起来很好,也很吸引人

$error
我认为,通过会话显示错误消息的最佳方式是使用单独的消息文件,如message.php

步骤1: 您只需在code.php中使用错误消息设置会话

$\会话[“errormsg”]=“请重试”

步骤2:

  • 现在创建名为“message.php”的新文件

  • 将会话错误消息存储到新变量中

$error=$\会话[“errormsg”]

步骤3:

然后,取消设置会话或销毁会话

 // remove all session variables
 session_unset(); 

 // destroy the session 
 session_destroy(); 
步骤4:

  • 现在,在格式化的div标记中回显这个错误变量,这样您的错误看起来很好,也很吸引人
$error
作用

/**
 * 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 ) &amp;& 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] ) &amp;& 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' );
/**
*用于创建和显示错误和成功消息的函数
*@access-public
*@param字符串会话名称
*@param字符串消息
*@param字符串显示类
*@返回字符串消息
*/
函数flash($name='',$message='',$class='successfadeout message')
{
//只有当名字不是空的时候,我们才能做点什么
如果(!空($name))
{
//没有消息,创建它
if(!empty($message)&;&empty($\会话[$name]))
{
如果(!empty($\u会话[$name]))
{
取消设置($\会话[$name]);
}
if(!empty($\u会话[$name.''类']))
{
取消设置($会话[$name.''类']);
}
$\会话[$name]=$message;
$\u会话[$name.''u类]=$class;
}
//消息存在,请显示它
elseif(!empty($\会话[$name])&;&empty($message))
{
$class=!空($会话[$name.''类'])?$会话[$name.''类']:'success';
回显'.$'会话[$name].';
取消设置($\会话[$name]);
取消设置($会话[$name.''类']);
}
}
}
//使用默认类设置第一条flash消息
flash('example_message','此内容将显示在example2.php上');
//使用错误类别设置第二个闪存
flash('example_class','This content将在example2.php上显示错误类''error');
展示 这个 信息


作用

/**
 * 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 ) &amp;& 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] ) &amp;& 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' );
/**
*用于创建和显示错误和成功消息的函数
*@access-public
*@param字符串会话名称
*@param字符串消息
*@param字符串显示类
*@返回字符串消息
*/
函数flash($name='',$message='',$class='successfadeout message')
{
//只有当名字不是空的时候,我们才能做点什么
如果(!空($name))
{
//没有消息,创建它
if(!empty($message)&;&empty($\会话[$name]))
{
如果(!empty($\u会话[$name]))
{
取消设置($\会话[$name]);
}
if(!empty($\u会话[$name.''类']))
{
取消设置($会话[$name.''类']);
}
$\会话[$name]=$message;
$\u会话[$name.''u类]=$class;
}
//消息存在,请显示它
elseif(!empty($\会话[$name])&;&empty($message))
{
$class=!空($会话[$name.''类'])?$会话[$name.''类']:'success';
回显'.$'会话[$name].';
取消设置($\会话[$name]);
取消设置($会话[$name.''类']);
}
}
}
//使用默认类设置第一条flash消息
flash('example_message','此内容将显示在example2.php上');
//使用错误类别设置第二个闪存
flash('example_class','This content将在example2.php上显示错误类''error');
展示 这个 信息


这个问题在3年前已经得到了回答,但我想我可以在同一个主题中添加一些内容。我希望这是有帮助的

如果每次打开页面时都显示index.php页面中的会话消息,则表示该会话变量