带有 HTML 的 PHP 会话

Posted

技术标签:

【中文标题】带有 HTML 的 PHP 会话【英文标题】:PHP sessions with HTML 【发布时间】:2010-10-02 07:04:03 【问题描述】:

我有一个使用 phphtml 页面的网站,我想创建一个会话来存储登录页面中的用户名。但是登录页面是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 会话的主要内容,如果未能解决你的问题,请参考以下文章

带有加密cookies的PHP会话类

带有 PHP 应用程序和用户会话的 NodeJS

主要的 PHP/MySQL 登录项目,带有会话变量

通过 PHP 会话进行服务器身份验证

发送序列化的表单数据并接收带有表单和会话数据的 PHP Laravel 重定向

我对 PHP 会话的理解正确吗?