在PHP中为用户存储错误/信息消息的位置?

时间:2016-07-18 06:48:36

标签: php messages

我想知道,在PHP中为用户存储消息的最佳方式是什么。消息我的意思是

  

身份验证成功

  

请输入有效的电子邮件地址

目前我正在处理一个项目,它存储在$_SESSION变量中,但我不认为这是一个很好的解决方案。

简短解释我现在是如何做到的(班级Message是由我创建的)

$_SESSION["msg"][] = new Message("...");

foreach ( $_SESSION ["msg"] as $msg ) :
    echo $msg->getText();
endforeach;

unset ( $_SESSION ["msg"] );

这只是完整代码的简化版本,但您应该明白这一点。

编辑:忘了说,我正在使用MVC框架,并希望从输出中学习逻辑。

1 个答案:

答案 0 :(得分:2)

人们只能推测Message班级的性质/内容。但是,这里;尝试模拟一个名为Message的类的模型;您的View脚本中的用法也显示在Class下面。确保$_SESSION在两个脚本上都处于活动状态......或许,这可能会为如何处理您的独特案例提供一些新的启示:

    <?php

        //FIRST CHECK IF SESSION EXIST BEFORE STARTING IT:
        if (session_status() == PHP_SESSION_NONE  || session_id() == '') {
            session_start();
        }

        class Message {

            protected $msg;

            public function __construct() {
                if(!isset($_SESSION['msg'])){
                    $_SESSION['msg']    = array();
                }
            }

            public function setText($message){
                if(!in_array($message, $_SESSION['msg'])){
                    $_SESSION['msg'][]  = $message;
                }
            }

            public function getText(){
                return "Some Logic for getting Message";
            }
        }
        ?>


        <?php
            // INSIDE OF YOUR VIEW SCRIPT; AT THE VERY TOP, ENABLE SESSION AS WELL:

            //FIRST CHECK IF SESSION EXIST BEFORE STARTING IT:
            if (session_status() == PHP_SESSION_NONE  || session_id() == '') {
                session_start();
            }

            // THEN LOOP THROUGH THE SESSION DATA FOR MESSAGES TO BE DISPLAYED
            $msg    = new Message();
            if(isset($_SESSION['msg'])) {
                foreach ($_SESSION ["msg"] as $msg) :
                    echo $msg->getText();
                endforeach;

                unset ($_SESSION ["msg"]);
            }