我想知道,在PHP中为用户存储消息的最佳方式是什么。消息我的意思是
身份验证成功
或
请输入有效的电子邮件地址
目前我正在处理一个项目,它存储在$_SESSION
变量中,但我不认为这是一个很好的解决方案。
简短解释我现在是如何做到的(班级Message
是由我创建的)
$_SESSION["msg"][] = new Message("...");
和
foreach ( $_SESSION ["msg"] as $msg ) :
echo $msg->getText();
endforeach;
unset ( $_SESSION ["msg"] );
这只是完整代码的简化版本,但您应该明白这一点。
编辑:忘了说,我正在使用MVC框架,并希望从输出中学习逻辑。
答案 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"]);
}