我有这个php部分,如果在当前状态下为true,则用户会被发送回mail.php并且$mailErrorMsg
和$mailErrorDisplay
都能正常工作。
php原创
if ($sql_recipient_num == 0){
$mailErrorMsg = '<u>ERROR:</u><br />The Recipient does not exist.<br />';
$mailErrorDisplay = '';
}
改变的css部分
#mail_errors {
height: 30px;
width: 767px;
text-align: center;
color: #666666;
font-family: Verdana, Geneva, sans-serif;
font-size: 9px;
clear: both;
font-weight: bold;
<?php print "$mailErrorDisplay";?>
background-color: #FFF;
border: thin solid <?php print "$mail_color";?>;
}
但是,如果我添加此行header('Location: mail.php?tid=3');
,这允许我确保用户正在查看错误所在的选项卡,则不会发生上面列出的任何变量,因此不会显示错误。是否有其他形式的标题:我可以使用的位置?
if ($sql_recipient_num == 0){
header('Location: mail.php?tid=3');
$mailErrorMsg = '<u>ERROR:</u><br />The Recipient does not exist.<br />';
$mailErrorDisplay = '';
}
答案 0 :(得分:2)
使用标头不会传递任何这些变量。你应该做的是使用一个会话。
session_start(); // put this on the top of each page you want to use
if($sql_recipient_num == 0){
$_SESSION['mailErrorMsg'] = "your message";
$_SESSION['mailErrorDisplay'] = "whatever";
// header
}
然后在您要打印这些错误消息的页面上。
session_start();
print $_SESSION['mailErrorMsg'];
// then you want to get rid of the message
unset($_SESSION['mailErrorMsg']; // or use session_destroy();
答案 1 :(得分:1)
您认为header()命令的作用类似于require_once(),其中新脚本被“注入”当前脚本。 它实际上是向浏览器发送了一个名为“Location:mail.php?tid = 3”的http标头。然后浏览器通过重定向到mail.php页面来遵守,就像点击链接一样。
你下面的任何内容仍然会在后台运行,但人物浏览器现在已关闭到新页面。 如果要传递$ mailErrorMsg和/或$ mailErrorDisplay,则需要将它们存储在会话变量或cookie 中,并将这些声明放在标题重定向上方,如下所示:
if ($sql_recipient_num == 0){
$mailErrorMsg = '<u>ERROR:</u><br />The Recipient does not exist.<br />';
$mailErrorDisplay = '';
header('Location: mail.php?tid=3');
}
答案 2 :(得分:1)
header('location: mail.php');
重定向到该页面的浏览器。然后所有变量都是空的。我会使用会话变量来存储信息。
session_start(); //must be before any output
if ($sql_recipient_num == 0){
header('Location: mail.php?tid=3');
$_SESSION['mailErrorMsg'] = '<u>ERROR:</u><br />The Recipient does not exist.<br />';
$_SESSION['mailErrorDisplay'] = '';
}
然后当你想要显示:
session_start(); //must be before any output
echo $_SESSION['mailErrorMsg']; unset($_SESSION['mailErrorMsg']);
那应该能满足你的需求。