我在一个名为site
的类中包含其他无害的东西:
private
$notice_type = '',
$notice_msg = '';
public function setNotice($type,$msg){
$this->notice_type=$type;
$this->notice_msg=$msg;
}
public function notice($what){
switch($what){
case 'type': return $this->notice_type; break;
case 'msg': return $this->notice_msg; break;
}
}
public function clearNotice(){
$this->notice_type='';
$this->notice_msg='';
}
我已将此类设置为这样的会话:
$_SESSION['site'] = new site();
以下是我如何使用它的情景:
提交表格后;我设置了这样的通知:$_SESSION['site']->setNotice('success','success message');
,如果是这种情况则会出错,并使用header()
将用户重定向到某个地方。
然后我在着陆页上输出这样的信息:
echo $_SESSION['site']->notice('msg');
$_SESSION['site']->clearNotice();
。
但;当我使用clearNotice()
- 函数时,$notice_type
和$notice_msg
的内容会在输出到浏览器之前被清除。
我需要让它保持直到用户以某种方式导航离开页面。我在这里缺少什么?
答案 0 :(得分:0)
我不知道发生了什么。但不知何故,这个脚本开始按预期工作 我已经一遍又一遍地重写了代码,据我所知,它和以前差不多。但无论如何;这就是现在有效的方法:
网站() - 类:强>
此类控制通知以及用户设置的设置 - 如数据的优先排序方向和值得记住的选项,以获得更好的用户体验等。
<?php
class site {
private
$notice_type = '',
$notice_msg = '';
public function newNotice($type,$msg){
$this->notice_type=$type;
$this->notice_msg=$msg;
}
public function notice($what){
switch($what){
case 'type': return $this->notice_type; break;
case 'msg': return $this->notice_msg; break;
}
}
public function clearNotice(){
$this->notice_type='';
$this->notice_msg='';
}
}
?>
我有一个文档,我通过将一些变量设置为Yes
或No
来配置整个网站 - 在这种情况下:$_SITE_CLASS_site
。
<?php
# check to see if session is started
if(!isset($_SESSION)){session_start();}
//
// check if site()-class should be activated for this site
if($_SITE_CLASS_site=='Yes'){
# if Yes; prevent resetting the class if it has already been started.
if(!isset($_SESSION['site'])){$_SESSION['site']=new site();}
//
}
//
?>
我已经创建了一个模板,在输出页面内容之前我有这个代码:
基本上只是检查是否有要显示的消息
<?php if ($_SITE_CLASS_site=='Yes'&&$_SESSION['site']->notice('msg')!=''): ?>
<div id="site-notice-<?=$_SESSION['site']->notice('type')?>" class="grid_12"><p><?=$_SESSION['site']->notice('msg')?></p></div>
<?php endif; ?>
然后我加载页面内容,最后我有这个:
通知应该是可见的,直到用户关闭它或离开页面。我不想或不需要保留消息
<?php
if ($_SITE_CLASS_site=='Yes'&&$_SESSION['site']->notice('msg')!=''):
$_SESSION['site']->clearNotice();
endif;
?>
现在;每当我需要向用户提供有关其操作的反馈时 - 例如,在成功提交表单后 - 我可以在脚本结束时执行此操作:
$_SESSION['site']->newNotice('success','<b>Success!</b> Your request was submitted successfully...');
header('Location '.$_SERVER['HTTP_REFERER']);
exit;
它就像一个魅力......