<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="EN" lang="EN" dir="ltr">
<head profile="http://gmpg.org/xfn/11">
<title>Login [example]</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="imagetoolbar" content="no" />
</head>
<?php
function userauth( $user, $passwd ) {
//TODO: 在这里应该连接数据库验证用户
if($user=="test"&&$passwd=="0000")return true;
else return false;
}
?>
<body id="top">
<?php
if( $_SERVER['REQUEST_METHOD']!='POST' ){
//确认这是一个GET请求,而不是POST请求。
?>
<!-- <form action="/login.php?next=<?php echo urlencode($_SERVER['REQUEST_URI']); ?>" method="post"> -->
<?php
#如果从其他页面提交过来,可以在action中指定next参数,一般指定为自身URL,
#这样登入成功可以重定向回来。$_SERVER['REQUEST_URI']表示自身URL。通过浏览器查看本页面的源代码可以看到产生的输出。*/
?>
<form action="/login.php" method="post">
<div>请输入帐号和密码:</div><br/>
<?php if( isset($_GET["r"]) ){ //验证失败重定向过来则显示错误信息。 ?>
<div style="color:red;">登录失败</div><br/>
<?php } ?>
<div>
<input id="txtUser" name="txtUser" type="text" />
<input id="txtPasswd" name="txtPasswd" type="password" />
</div><br/>
<div>
<input type="submit" name="btnlogin" id="btnlogin" value="OK" />
</div>
</form>
<?php
}else{
if( !userauth($_POST['txtUser'],$_POST['txtPasswd']) )
Header("Location: /login.php?r=err"); //没有通过验证,重定向回去
else{
//TODO:设置Cookie或Session,记录用户的登入状态。
#如果设置Cookie则必须加密,如果设置Session则网站不能在集群服务器或多核负载均衡下工作,所以各有利弊。
if ( isset($_GET["next"]) ){
Header("Location: /".$_GET["next"]); //通过验证,重定向到next参数指定的页面
}
}
?>
<div>
<h2>您好!<?php echo $_POST['txtUser'] ?></h2>
<p>欢迎光临本站。</p><br/>
<!-- <p><a href="profile">» 账户</a> | <a href="/logout">退出 »</a></p> -->
</div>
<?php
}
#注意括号对应!要注意把动态语言和静态语言分清楚。
#这就好比做分次积分。服务器执行动态语言好比第一次积分,静态代码这时候充其量都是字符串。
#客户端运行静态代码和脚本代码好比第二次积分,这时动态语言中该输出的早已输出,都是常量了。
?>
<script type="text/javascript">
<?php #这些javascript负责在客户端对表单合法性完成初步的校验。至少各项不空才提交,节省服务器的计算资源。 ?>
function checkfields(){
var uname=document.getElementById("txtUser").value;
//var ualias=document.getElementById("txtName").value;
var upwd=document.getElementById("txtPasswd").value;
//var upwd2=document.getElementById("txtPasswdAgain").value;
var buttonSubmit=document.getElementById("btnlogin");
//if(uname.match(/^[a-z0-9A-Z]+$/)&&upwd==upwd2&&upwd!=""&&ualias.match(/^[a-z0-9A-Z\u4E00-\u9FA5\u00A0-\u00FF\u0400-\u052F]+$/))buttonSubmit.disabled=false;
if(uname.match(/^[a-z0-9A-Z]+$/)&&upwd!="")buttonSubmit.disabled=false;
else buttonSubmit.disabled=true;
}
window.setInterval('checkfields()',100);
</script>
</body>
</html>
[PHP]登录表单例程
最新推荐文章于 2024-10-08 10:00:00 发布
这个示例展示了如何使用PHP创建一个简单的登录表单,包括用户输入验证和登录失败的提示。表单数据通过POST方法发送到服务器,然后通过'userauth'函数验证用户名和密码。如果验证失败,用户将被重定向回登录页面并显示错误信息。验证成功后,用户将被重定向到指定页面或主页。此外,还包含一些JavaScript代码,用于客户端的表单字段验证。
3932

被折叠的 条评论
为什么被折叠?



