0

我试图在 - 文件<?php session_start(); ?>的第一行之前添加命令。index.html除此之外,该文件仅包含 html 语句。当我注意到 php 代码没有被解释时,我将文件的结尾更改为index.php,从而解决了该问题。

现在我想知道我所做的是丑陋的黑客行为还是实际上是一种公认​​的做法?可以将 php 前缀添加到原本是 html 的文件中吗?

另外,很遗憾我仍然收到以下错误: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent. 如果我的上述做法很好,是什么导致了这个错误?

4

2 回答 2

1

你所做的就是你应该做的。

基于文件系统的网络服务器,例如 Apache 和 IIS(大多数情况下)根据文件扩展名解释请求的文件并相应地处理它。当用户请求.html文件时,服务器将返回文件的原始字节,而如果用户请求.php文件,则它将通过 PHP 模块或 CGI 程序运行它,从而生成所需的输出。

您可以配置您的网络服务器(假设您不在共享托管服务上)以始终.html使用 PHP 处理文件,但最好在 URI 中隐藏实现细节并改用 URL 重写(Apache 和 IIS7+ 完全支持)。

关于session_start()您遇到的错误 - 这是因为session_start必须在任何内容输出到客户端之前调用,这意味着该<?php session_start() ?>部分必须位于文档的开头,之前没有明文或空行。您可以在调用之前有一些 PHP 代码,但要确保 PHP 代码没有发送任何响应或标头。

于 2012-10-10T23:54:19.940 回答
1

请记住,.php 文件应该通过 PHP 和 HTML 标签进行解析。在文档的开头放置标签是一种常见的做法。

也像提到的@markus-tharkun 一样——这真的取决于你试图用 PHP 代码做什么。如果您只是想在 HTML Doc 的标头中添加时间戳,则可以像下面这样简单:

<h2>
  <?php echo date('l jS \of F Y h:i:s A'); //Prints Date inside the H2 Tag ?> 
</h2>

再一次,我可以将此代码放在我的标签中的任何位置,它会使用 PHP 打印出当前日期。 PHP 可以在作用域上玩一些有趣的技巧,因此应始终密切关注它。

于 2012-10-11T00:03:52.157 回答