1

我是 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 代码不起作用。例如,我的 setcookie 函数不再设置 cookie(尽管它不会出错),而我仍然可以正常运行 sql 查询或 echo 语句。我遇到了一个类似的问题,直接从教程站点中提取了一个完全不同的代码:该示例仅在代码以

4

4 回答 4

4

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

于 2012-09-13T18:51:44.660 回答
1

根据文档

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

于 2012-09-13T18:52:59.593 回答
0

看看这些链接,他们会解释一些事情,永远不要忘记在 stackOverflow 上提问

http://www.w3schools.com/php/php_cookies.asp

http://php.net/manual/en/features.cookies.php

http://www.w3schools.com/php/php_sessions.asp

http://it.php.net/manual/en/session.examples.basic.php

于 2012-09-13T18:55:53.483 回答
0

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

但是,php 中有些函数要求在执行之前不输出任何内容,例如 setcookie、setsession、header .. 等。

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

至于 php 中的某些代码不起作用。通常,如果您的代码有任何问题,则该 php 代码不起作用。因此,最好在此之前检查它的语法是否正确。

于 2012-09-13T18:56:36.497 回答