$result=mysql_query($sql_info) or die("Error 1: ".mysql_error());
$no= mysql_fetch_array($result);
$groups_no = $no['number'];
mysql_num_rows($result) or die("Error 2: ".mysql_error());
// echo "what's going on?"; if I uncomment this line then the echo below executes
if(($this->user_group=="I am Talent") &&($groups_no==0)) {
header("Location: ".MAIN_URL.$this->groups_page);
echo "what's going on?"; //THIS DOESN'T EXECUTE BY ITSELF...WHY NOT??
}
if(mysql_result(mysql_query(sprintf("SELECT last_update FROM `users_profile` WHERE users_id=%d LIMIT 1",$this->id)),0)==0) {
header("Location: ".MAIN_URL.$this->groups_page);
}
echo "what's going on?"; //won't execute unless the line above
有人知道为什么除非有echo语句,否则上面的代码将不起作用?我已经通过手动数据库检查确认了应该执行第一个if语句。
这应该导致页面重定向到存储在变量MAIN_URL。$ this-> groups_page中的链接(这种缺乏重定向的问题是原始的)。但是,除非if语句中或if语句上方有回显,否则header(“ Location:...”)部分不会执行。为什么会这样呢?我在标题(“ Location:” .MAIN_URL。$ this-> groups_page);之后放置了一条echo语句。第一个if语句中的行,它没有执行。只有在header(...)行之前有echo语句时,它才会执行。
最佳答案
该回声实际上不会影响其他回声。我怀疑发生的是第二个回显通常不会执行,因为位置重定向首先发送到浏览器,因此最后一个回显永远不会显示。
但是,当启用第一个回显,然后将位置标头之一发送到浏览器时,PHP应该发出错误,指出输出已经开始(通过第一个回显)。在那种情况下,第二个回声可能会显示出来,b / c头文件无法在该点发送。
@ldiqual同上;当您的答案通过时,我正在发布此消息;)