将会话从 PHP 传递到 HTML


Pass a session from PHP to HTML?

G'day,

这是出于我的教程目的。

我有 3 个文件

1. mlogin.htm - 从用户那里获取输入(登录名和密码)。该操作将设置为下一个文件,以便可以检查详细信息。

<form id="logIn" name="logIn" method="get" action="mlogin.php"> 

2. mlogin.php - 使用 GET 方法从 mlogin 获取值.htm。如果详细信息与 XML 文件中的详细信息匹配,则用户将被重定向到下一个文件

$musername = $_GET['username'];
$mpassword = $_GET['password'];
exit(header('Refresh:5; url=mloginsuccess.htm'));

3. 登录成功.htm - 显示菜单。

现在,我要做的是在第三个文件中显示用户名,所以它类似于

Welcome, John

确实意识到我可以通过将第三个文件更改为

mloginsuccess.php 

但它必须是

mloginsuccess.htm

我想知道这是否可能。

任何帮助都值得赞赏:)

假设你确实想按照你的指示去做。 (你可能真的不想这样做...解释需求,而不是完全遵循它们,是一个体面的软件工程师的关键特征。 如果您的要求是必须使用静态页面,则有几个选项可用于获取该页面上的数据。 所有这些都需要JavaScript。

  1. 饼干
  2. 查询字符串
  3. 锚点片段

基本上,您需要在这三个位置之一设置此数据,以便以后可以从静态HTML页面使用JavaScript访问它。 要使用 PHP 设置 cookie,请使用 setcookie() 。 要使用 JavaScript 阅读它,请使用 document.cookie 或许多代码片段之一来简化此操作。

要设置查询字符串,只需在重定向中执行此操作:

header('Location: http://www.example.com/mloginsuccess.htm?name=' . urlencode($_GET['username']));

有关读取查询字符串所需的 JavaScript,请参阅此问题:如何从 GET 参数中获取值?

最后,对于定位点片段,您通常可以以相同的方式重定向到它。 (但请注意,并非所有浏览器都能保证遵循 URL 的锚片段部分! 要读取定位点片段,请使用 window.location.hash

我希望最终,你会选择不做这些,并将你的身份验证逻辑保持在合理的位置。 对需求的字面解释很少能带来好的代码和应用程序设计。 至少,您可以使用重写规则绕过URL要求,使任何内容.html成为任何.php的别名。 客户端不知道也不关心服务器上实际运行的内容...这是服务器的工作。 我会告诉你如何编写重写规则,但你没有指定你正在使用哪个服务器,所以我把这部分留

给你谷歌。

你怎么能期望在一个不是php(.HTML)的文件中使用php功能(SESSION)。但是,您可以在 php 文件中使用 html,因为 php 是一个模板引擎并处理 html ...请参阅此内容以获取深入信息什么呈现 HTML?

只需将您的.html转换为.php,然后

<?php>
session_start();
$_SESSION['username']=$_GET['username']
?>
<html>....<body>welcome <?=$_SESSION['username']?></body>...</html>

或者您的 HTML 标记。

也许您可以使用 AJAX 来加载会话详细信息。例如,使用 JQuery,

<script>
...
$(document).ready(function(){
    $.ajax({
        url: "load_session.php",
        success: function(uname){
            $("#uname").html(uname);
        }
    });
});
...
</script>
...
Welcome, <span id="uname"></span>