2013-10-21 46 views
-3

G'day,将会话从PHP传递给HTML?

这是我的教程目的。

我有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 

我在想,如果这是可能的。

任何帮助表示赞赏:)

+0

包括含有'$ musername'并在页面要显示的用户名的文件做''德你正在做'echo'语句的页面必须是'.php'而不是'.html' –

+0

所以你的意思是在mloginsuccess.htm中包含mlogin.php? 你确定可以在.htm文件中包含函数吗? – callMeJava

+1

除非您使用'AddHandler'将'.html'文件作为'.php'处理,否则您必须对其进行重命名。 –

回答

1

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

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

基本上,你需要在这三个地方之一来设置这些数据,这样就可以从你的静态HTML页面的JavaScript访问稍后的。要使用PHP设置cookie,请使用setcookie()。要用JavaScript阅读它,use document.cookieone of the many snippets of code to make this easier

设置查询字符串,只是这样做在您的重定向:

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

看到这个问题了所需的JavaScript读取查询字符串:How to get the value from the GET parameters?

最后,锚片段,你可以经常以相同的方式重定向到它。 (但是请注意,并非所有浏览器都保证遵循URL的锚点片段部分!)要读取锚点片段,请参阅use window.location.hash

我希望最终你可以选择不采取这些措施,并将你的认证逻辑放在一个合理的地方。要求的文字解释很少导致良好的代码和应用程​​序设计。至少,您可以使用重写规则来绕过URL要求,使whatever.html成为whatever.php的别名。客户端不知道或在意服务器上实际运行的是什么......这是服务器的工作。我会告诉你如何编写一个重写规则,但是你没有指定你正在使用哪个服务器,所以我会把这部分留给你。

+0

完全同意第一段和第一段。第一段应该是BOLD –

+0

这是一些有用的信息。我真的很感谢你解释:) 我使用的是Apache服务器,我会看看如何制作一个别名。 再次,谢谢你,好的先生。 – callMeJava

+0

@callMeJava没问题。 http://www.addedbytes.com/articles/for-beginners/url-rewriting-for-beginners/ – Brad

0

,你怎么能指望一个文件,该文件是不是PHP(.HTML)使用PHP功能(会话)。 然而,你被允许使用HTML的PHP​​文件里作为PHP是一个模板引擎和处理HTML ...这是指对于深入 What renders the HTML?

只是转换你的.html到.php然后

<?php> 
session_start(); 
$_SESSION['username']=$_GET['username'] 
?> 

<html>....<body>welcome <?=$_SESSION['username']?></body>...</html> 

或者你的html标签是。

+0

感谢您的回复@Andy。我确实意识到,但第三个文件需要是一个.html – callMeJava

0

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

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