-3

天,

这是为了我的教程目的。

我有 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. mloginsuccess.htm - 显示菜单。

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

Welcome, John

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

mloginsuccess.php 

但它必须是

mloginsuccess.htm

我想知道这是否可能。

任何帮助表示赞赏:)

4

3 回答 3

1

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

  1. 饼干
  2. 请求参数
  3. 锚片段

基本上,您需要在这三个位置之一设置此数据,以便稍后可以使用 JavaScript 从静态 HTML 页面访问它。要使用 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 要求,使whatever.html 成为whatever.php 的别名。客户端不知道也不关心服务器上实际运行的是什么……那是服务器的工作。我会告诉你如何编写重写规则,但你没有指定你使用的服务器,所以我将把这部分留给你谷歌。

于 2013-10-21T03:35:40.713 回答
0

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

<script>
...
$(document).ready(function(){
    $.ajax({
        url: "load_session.php",
        success: function(uname){
            $("#uname").html(uname);
        }
    });
});
...
</script>
...
Welcome, <span id="uname"></span>
于 2013-10-21T03:47:10.613 回答
0

您怎么能期望在不是 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 标签是。

于 2013-10-21T03:22:04.563 回答