带有 HTML 的 PHP 会话
Posted
技术标签:
【中文标题】带有 HTML 的 PHP 会话【英文标题】:PHP sessions with HTML 【发布时间】:2010-10-02 07:04:03 【问题描述】:我有一个使用 php 和 html 页面的网站,我想创建一个会话来存储登录页面中的用户名。但是登录页面是php,下一页是html。
这是一个问题还是我可以在html页面中添加一个php的小语句
<?PHP session_start();
$_session['loginid']=$_post['username'];
?>
还是我做错了?
这是我第一次使用会话,它们让我有些困惑。
感谢您的帮助。
【问题讨论】:
【参考方案1】:如果您有权访问您的 apache 配置或简单的 .htaccess 文件,您可以告诉 Apache 处理 .html 文件中的 php 代码。您可以通过在站点的文档根目录(可能是 public_html/)上创建一个 .htaccess 文件(记住 .(点)作为该文件名中的第一个字符)并将其放入其中:
# Add this to public_html/.htaccess file
AddHandler application/x-httpd-php .html
AddHandler application/x-httpd-php .htm
您应该能够重新加载 html 页面,并且您的 PHP 代码(来自 Michael Matthews 的回答)将运行良好。
【讨论】:
当然不要忘记,使用 PHP 引擎解析每个 HTML 页面会稍微变慢,但您可能不会注意到。 我同意,但如果您的网站上有任何真正是静态的页面,这只会减慢速度。否则,这与在 .php 扩展名下执行所有操作完全相同。【参考方案2】:您正试图与文本/html 类型的页面共享 PHP 会话变量。正如您所建议的,您必须将 HTML 页面设置为 PHP 页面才能正常工作,并在某处添加一点 PHP 的 sn-p 以显示用户名。
将您的 HTML 页面更改为 PHP。在页面顶部添加如下内容:
<?php
session_start(); // must be before any output
$username = $_SESSION['username']; // or whatever you called it
// check that $username is valid here (safe to display)
?>
html here
Hello <?= $username ?>!
【讨论】:
请注意,这需要短标签,以获得最大支持使用: 在最后一行。同样如前所述,请确保从 $username 那里清除 HTML 标记。否则它们将显示在您的页面中 (XSS)【参考方案3】:由于会话由 PHP 处理,因此需要 PHP 来维护状态。您至少需要session_start()
才能使用存储在$_SESSION
中的会话变量。
【讨论】:
【参考方案4】:如果不使用服务器的配置文件,就不能将 php 放入 .html 文件。您应该只将 php 放入 .php 文件中。
如果您有很多 .html 文件,您可以简单地将它们重命名为 .php 文件。把纯html放到something.php
里面就可以了。所以,你应该确保你所有的文件都以 .php 结尾,然后你可以将任何你想要的会话逻辑放入其中。
【讨论】:
以上是关于带有 HTML 的 PHP 会话的主要内容,如果未能解决你的问题,请参考以下文章