【问题标题】:php file only works if file begins with php codephp 文件仅在文件以 php 代码开头时才有效
【发布时间】: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 像:&lt;input type='text' value='&lt;?php print $variable;?&gt;'&gt;
  • 感谢大家这么快的回复。这很有意义。

标签: php html setcookie


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    根据documentation:

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

    【讨论】:

      【解决方案3】:
      【解决方案4】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-20
        • 1970-01-01
        • 2020-02-09
        • 2014-09-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-14
        相关资源
        最近更新 更多