php文件仅在文件以php代码开头时才有效

时间:2012-09-13 18:49:44

标签: php html setcookie

我是php的新手,想知道我错过了关于交错html和php代码的规则。

现在这是第二次遇到php文件仅在我的php标签位于文件开头的情况下才能运行的情况。我的所有文件都不是这种情况。我想知道为什么会这样。

以下是一个例子:

我的文件结构如下工作正常:

<?php

... my php code

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Authentication</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<div id="container">
</div>
</body>
</html>

但是当我将html块移到顶部时(这是我最终想要的,因为我在我的php代码中使用了一些echo语句),并且只在底部留下以下内容:

</div>
</body>
</html>

然后PHP代码的某些部分不起作用。例如,我的s​​etcookie函数不再设置cookie(虽然它不会出错),而我仍然可以运行sql查询或echo语句。我遇到了一个类似的问题,直接从教程站点中获取完整的不同代码:该示例仅在代码开始时才有效

4 个答案:

答案 0 :(得分:4)

在将任何输出发送到浏览器之前,必须由PHP执行某些操作(如编写cookie),因为这些操作涉及设置响应标头(始终在任何其他内容之前发送)。这似乎是问题所在。

答案 1 :(得分:1)

根据documentation

  

setcookie()定义了一个与其余部分一起发送的cookie   HTTP标头。与其他标题一样,Cookie必须在之前发送 any   脚本输出(这是协议限制)。这个   要求您在输出之前调用此函数,   包括<html><head>标记以及任何空格。

答案 2 :(得分:0)

答案 3 :(得分:0)

回答你的问题,你可以将标签放在html代码中的任何位置,只要它的结构正确。

然而,php中有一些函数要求在执行之前没有输出,比如setcookie,setsession,header ..等等。

这里的输出是;    一个。 php代码中的echo语句。    湾在函数所在的标记之前的html代码。

并且至于php中的一些代码不起作用。 通常,如果您的代码中有任何问题,那么PHP代码不起作用。因此,最好在此之前检查语法是否正确。