【发布时间】:2012-09-13 18:49:43
【问题描述】:
我是 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 语句。我遇到了一个类似的问题,直接从教程站点中提取了一个完全不同的代码:该示例仅在代码以
【问题讨论】:
-
对于 Cookie 或会话 .. 在页面中输出任何内容之前,您必须发出生成 cookie 或会话的代码,即 标签之外的任何回显语句或 html 代码.
-
当您无法设置 cookie 时,您会在 Google 上找到确切的错误消息,您会发现有几百万次点击可以解释发生了什么。简而言之:有些事情是通过 HTTP 标头完成的,一旦您开始输出内容,您就无法“返回”并添加更多标头。
-
你不应该把 HTML 放在最上面:把你想要回显的所有信息保存到 PHP 变量中,当你打印 HTML 时使用 php sn-ps 像:
<input type='text' value='<?php print $variable;?>'> -
感谢大家这么快的回复。这很有意义。