【发布时间】:2017-08-22 20:43:43
【问题描述】:
基本上我有以下代码,目前可以正常工作:
if ( isset($_SESSION['message']) )
{
echo '<p class="user_message">'.$_SESSION['message'].'</p>';
//unset( $_SESSION['message'] );
}
如您所见, unset() 已被注释掉。我想要做的是在回显后取消设置会话消息。但是,当我在没有 cmets 的情况下运行此代码时,会话变量根本不会回显?
非常感谢。
编辑:
感谢您的回复,但是此解决方案不起作用,并返回与我最初尝试相同的结果。这是定义会话消息的代码:
$_SESSION['message'] = "";
// We know user email exists if the rows returned are more than 0
if ( $result->num_rows > 0 ) {
$_SESSION['message'] = $_SESSION['message'].'User with this email already exists!<br />';
}
// Validate email address
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$_SESSION['message'] = $_SESSION['message'].'Email address is invalid, please try again!<br />';
}
// Validate Referral code
if ( $refby != "" ) {
if ( (count_digit($refby) > 0 && count_digit($refby) < 6) || count_digit($refby) > 6 ) {
$_SESSION['message'] = $_SESSION['message'].'Referral code is invalid!<br />';
} elseif ( !is_numeric($refby) ) {
$_SESSION['message'] = $_SESSION['message'].'Referral code is invalid!<br />';
}
}
// Validate password length
if ( count_digit($_POST['password']) < 6 ) {
$_SESSION['message'] = $_SESSION['message'].'Password invalid, must be more than 6 characters!<br />';
}
// Validate password confirmed
if ( $_POST['password'] != $_POST['confirm_password'] ) {
$_SESSION['message'] = $_SESSION['message'].'Your passwords do not match!<br />';
}
if ( count_digit($num1)>2 || count_digit($num2)>2 || count_digit($num3)>2 || count_digit($num4)>2 || count_digit($num5)>2 ) {
$_SESSION['message'] = $_SESSION['message'].'Please select your lucky numbers!<br />';
}
if ( $_SESSION['message'] != "" ) {
header("location: #register_content");
但是,在取消设置会话变量之前,我不明白代码是如何完美运行的?即使在未设置会话变量之前已回显内容?
非常感谢
【问题讨论】:
-
如果您只运行该代码,它不会显示,因为没有任何东西将值设置为
$_SESSION['message'] -
isset($_SESSION['message'])不检查会话中是否有任何值,仅在设置时检查。可以同时设置和清空。 -
你能提供更多代码吗?是什么导致了这一点?您何时/如何设置消息会话变量?
-
仅凭此代码无法给出正确答案
-
添加了更多代码,谢谢,如果我从原始代码中删除 unset(),脚本将按应有的方式执行,我可以确认消息变量包含数据。唯一的问题是消息变量仍然设置为保存错误。