PhP头和输出缓冲
所以。。。如果你有一个脚本是这样写的PhP头和输出缓冲,php,header,buffer,ob-start,Php,Header,Buffer,Ob Start,所以。。。如果你有一个脚本是这样写的 while($result = mysql_fetch_array($resource)) { if($result['TITLE'] == $this->title) { header("LOCATION: profile.php?error=11"); } echo 'testing'; } //Create the database
while($result = mysql_fetch_array($resource))
{
if($result['TITLE'] == $this->title)
{
header("LOCATION: profile.php?error=11");
}
echo 'testing';
}
//Create the database profile
$second_query = "INSERT INTO profiles(USER_ID, KEYWORDS, TITLE, INTRO) ";
$second_query .= "VALUES(".$this->userId.",'".serialize($this->keywords)."','".$this->title."','".$this->intro."')";
echo $second_query;
if($result = mysql_query($second_query))
{
if(isset($file))
{
$this->update_profile($this->files);
}
return true;
}else
{
return false;
}
第一个条件失败并将标头发送回。。。如果发送头后没有返回false,它是否继续运行脚本?我遇到了一个问题,如果在我的数据库中找到标题,它将返回错误,但它将继续运行该脚本,从而将重复的标题条目插入到我的数据库中
所以再一次。。。即使在发送头之后,脚本是否仍继续执行?aka(在本例中)重定向?如果发送
位置
头时没有退出是,它将继续运行脚本
有效期:
header("Location: profile.php?error=11");
die(); // or exit();
想想看,header
不是由PHP本身执行的,它是由浏览器执行的,当您应用header(“内容类型:应用程序/强制下载”)时也是如此代码>它告诉浏览器必须下载以下输出块
因此,即使您将头设置到另一个位置,脚本中的所有代码(除非我们退出)都将由PHP
处理,然后浏览器将获取位置并重定向。如果发送位置
头时没有退出
是,它将继续运行脚本
有效期:
header("Location: profile.php?error=11");
die(); // or exit();
想想看,header
不是由PHP本身执行的,它是由浏览器执行的,当您应用header(“内容类型:应用程序/强制下载”)时也是如此代码>它告诉浏览器必须下载以下输出块
因此,即使您将头设置到另一个位置,脚本中的所有代码(除非我们退出)都将由PHP
处理,然后浏览器将获取位置并重定向。是的,它将这样做,所以在发送头后退出脚本
header("Location: profile.php?error=11");
exit;
是的,它会,所以在发送标题后退出脚本
header("Location: profile.php?error=11");
exit;
另一个简短的问题。。。我想在我的脑海里,我明白这个问题的答案;但是,当我在脚本继续运行的时候,我在页面的任何地方都没有看到echo“Testing”。我假设这与它首先发送头并忽略所有输出有关,但仍在运行脚本;我说的对吗?修改了我的答案,你现在应该明白了。看到你的编辑。。。我会在它允许的时候检查它,再4分钟,再次感谢。另一个快速问题。。。我想在我的脑海里,我明白这个问题的答案;但是,当我在脚本继续运行的时候,我在页面的任何地方都没有看到echo“Testing”。我假设这与它首先发送头并忽略所有输出有关,但仍在运行脚本;我说的对吗?修改了我的答案,你现在应该明白了。看到你的编辑。。。如果时间允许,我会再检查4分钟,再次感谢。