我尝试在<?php session_start(); ?>
- 文件的第一行之前添加命令index.html
。除此之外,该文件只包含html语句。
当我注意到php代码没有被解释时,我将文件的结尾更改为index.php
,这解决了这个问题。
现在我想知道我做的是一个丑陋的黑客还是一个公认的做法?是否可以将php-prefix添加到文件中,否则为html?
另外,遗憾的是我仍然收到以下错误:
session_start() [function.session-start]: Cannot send session cache limiter - headers already sent
。如果我上面的做法没问题,是什么原因造成这个错误?
答案 0 :(得分:1)
你所做的就是你的目的。
基于文件系统的Web服务器,例如Apache和IIS(大部分)基于其文件扩展名解释所请求的文件并相应地处理它。当用户请求.html
文件时,服务器将返回文件的原始字节,而如果用户请求.php
文件,则它将通过PHP模块或CGI程序运行它,生成期望的输出。
您可以配置您的网络服务器(假设您不在共享托管服务上)以始终使用PHP处理.html
文件,但最好隐藏URI中的实现细节并使用URL重写(Apache和IIS7 +完全支持。)
关于您遇到的session_start()
错误 - 这是因为在将任何内容输出到客户端之前必须调用session_start
,这意味着<?php session_start() ?>
部分必须是在文档的最开头,没有明文或空白行。您可以在调用之前使用一些PHP代码,但请确保PHP代码没有发送任何响应或标题。
答案 1 :(得分:1)
请记住.php文件应该通过PHP和&解析。 HTML标签。在文档的开头放置标记是常见的做法。
也像@ markus-tharkun提到的那样 - 这实际上取决于你想要用PHP代码做什么。如果您只想将时间戳放在HTML文档的标题中,可以像下面这样简单:
<h2>
<?php echo date('l jS \of F Y h:i:s A'); //Prints Date inside the H2 Tag ?>
</h2>
再次,我可以将此代码放在我的Tag中的任何位置,它将使用PHP打印出当前日期。 PHP可以使用范围发挥有趣的技巧,因此应始终密切关注。