使用PHP会话向用户发送消息
我的课程如下:使用PHP会话向用户发送消息,php,session,message,Php,Session,Message,我的课程如下: <?php class Session { function __construct() { if (empty(session_id())) { session_start(); } } function AddMessage($msg="") { if (!is_array($_SESSION['messages'])) { $_SESSION[
<?php
class Session {
function __construct() {
if (empty(session_id())) {
session_start();
}
}
function AddMessage($msg="") {
if (!is_array($_SESSION['messages'])) {
$_SESSION['messages'] = [];
}
array_push($_SESSION['messages'], $msg);
}
function GetMessages() {
$messages = $_SESSION['messages'];
unset($_SESSION['messages']);
return $messages;
}
}
?>
我的layouts目录中还有一个php文件:
<?php if (!empty($_SESSION['messages'])) { ?>
<div class="messages">
<ul>
<?php
$messages = $session->GetMessages();
foreach ($messages as $message) {
echo "<li class=\"message\">{$message}</li>";
}
?>
</ul>
</div>
<?php }?>
上面的这段代码包含在我的页面顶部。
问题是,在单页提交处理的情况下——在页面中间完成-在将消息设置为AddiMeage()方法之前,打印出消息。
是否有一种简单的方法来解决这个问题,或者我必须重新考虑我的代码流?因此,基本上您已经在处理完请求之前开始渲染视图了?那么我只能建议您在渲染HTML之前先处理业务逻辑。如果你不想使用MVC框架,你不必“必须”使用,只要试着不要一次完成所有的事情。使用模板引擎怎么样?例如smarty@user3210615你可以使用模板引擎当然,就我个人而言,我不是Smarty的粉丝,我可能会选择Twig。但你的问题是找到一个解决办法,或者改变你的流程。第一个选项可以解决这一问题,但后一个选项将解决所有未来问题。将控制器从视图中分离正在更改您的代码流。您能否简要解释您的解决方案或参考教程?