<?php
/**************************************************************
* login.php
* @author 风舞
* @email wjiujun (at) gmail.com
* @note ajax登录验证,用户名和密码保存在客户端cookies中
**************************************************************/
//得到安全字符串
function safe_str($str)
{
return (string)htmlspecialchars(trim($str));
}
if(safe_str($_GET['action'])=='login')
{
//登录验证
header("Content-type: text/xml");
$user=safe_str($_POST['user']);
$pwd=safe_str($_POST['pwd']);
$response_xml='<info>';
//只有当用户名为root,密码为888时才通过验证
$response_xml.=($user!='root'||$pwd!='888')?'<error>incorrect username or password!</error>':"<login><info><user>{$user}</user><pwd>{$pwd}</pwd></info></login>";
$response_xml.='</info>';
print $response_xml;
exit;
}
else
{
?>
<html>
<head>
<title>Ajax登录验证</title>
<script type="text/javascript" src="prototype.js"></script>
<script language="JavaScript" type="text/javascript">
<!--
//得到cookies的值
function getCookie(name)
{
var dc=document.cookie;
var prefix=name+"=";
var begin=dc.indexOf("; "+prefix);
if(begin==-1)
{
begin=dc.indexOf(prefix);
if(begin!=0)
return "";
}
else
begin+=2;
var end=document.cookie.indexOf(";",begin);
if(end==-1)
end=dc.length;
return unescape(dc.substring(begin+prefix.length,end));
}
//删除cookies
function delCookie(name)
{
if(getCookie(name))
document.cookie=name+"=; path=/; expires=Thu, 01-Jan-70 00:00:01 GMT";
}
//设置cookies
function setCookie(name,value)
{
var expires=new Date();
expires.setTime(expires.getTime()+30*24*60*60*1000); //设置cookies失效时间为一个月
document.cookie=name+"="+escape(value)+"; expires="+expires.toGMTString()+"; path=/";
}
//得到节点的值
function getElementTextNS(local,parentElem,index)
{
var result = parentElem.getElementsByTagName(local)[index];
return result?result.childNodes.length>1?result.childNodes[1].nodeValue:(result.firstChild?result.firstChild.nodeValue:""):"n/a";
}
//初始化
function init()
{
var loginUser=getCookie("ajaxUser");
var loginPwd=getCookie("ajaxPwd");
loginUser!=""?parseLogin(loginUser,loginPwd):genLoginForm();
}
//退出登录
function logOut()
{
delCookie("ajaxUser");
delCookie("ajaxPwd");
genLoginForm();
}
//用指定的用户名和密码登录
function parseLogin(username,password)
{
var postBody="user="+escape(username)+"&pwd="+escape(password);
new Ajax.Request("?action=login", {method:"post", postBody:postBody,
onFailure:function() {alert("程序异常")},
onSuccess:makeResult});
return false;
}
//处理登录返回结果
function makeResult(response)
{
var info=response.responseXML.getElementsByTagName("info");
var error=getElementTextNS("error",info[0],0);
if(error!="n/a")
{
genLoginForm();
alert("请输入正确的用户名和密码");
}
else
{
var user=getElementTextNS("user",info[0],0);
var pwd=getElementTextNS("pwd",info[0],0);
setCookie("ajaxUser",user);
setCookie("ajaxPwd",pwd);
if(getCookie("ajaxUser")=="")
{
genLoginForm();
alert("您的浏览器必须支持cookies");
}
else
$("content").innerHTML="<h2>Hello,<font color="red">"+user+"</font>!<a href="javascript:logOut();">logout</a></h2>";
}
}
//显示登录框
function genLoginForm()
{
$("content").innerHTML="<form onsubmit="return parseLogin($('user').value,$('pwd').value);">用户名:<input type="text" id="user" size="12"> 密码:<input type="password" id="pwd" size="12"> <input type="submit" value="登录"></form>";
}
//-->
</script>
</head>
<body onload="init();">
<div id="content"></div>
</body>
</html>
<?php
}
?>