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。
- 饼干
- 查询字符串
- 锚点片段
基本上,您需要在这三个位置之一设置此数据,以便以后可以从静态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>