需求分析:
在Web应用开发中,经常需要实现用户登录的功能。假设一个名为username的用户,当该用户进入网站首页时,如果还未登录,则页面会提示登录,用户输入登录信息进行验证,验证通过进入用户中心,否则显示用户名或密码错误,重新登录。登录成功后,用户还可以单击“注销”,回到登录页面。
程序设计流程图:
login.html
-
<!DOCUMENT 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”>
-
<head>
-
<meta http-equiv=“Content-Type” content=“text/html;charset=UTF-8”/>
-
<title>会员登录
</title>
-
<style type=“text/css”>
-
ul
li{
margin:
0;
padding:
0;}
-
form{
margin:
40px
30px
0;}
-
form
li{
list-style:none;
padding:
5px
0;}
-
form
li
label{
float:left;
width:
70px;
text-align:right}
-
form
li
a{
font-size:
12px;
color:
#999;
text-decoration:none}
-
.login_btn{
border:none;
background:
#01A4F1;
color:
#fff;
font-size:
14px;
font-weight:bold;
height:
28px;
line-height:
28px;
padding:
0
10px;
cursor:pointer;}
-
form
li
img{
vertical-align:top}
-
</style>
-
-
</head>
-
<body>
-
<form action=“login.php” method=“POST”>
-
<fieldset>
-
<legend>用户登录
</legend>
-
<ul>
-
<li>
-
<label for“”>用户名:
</label>
-
<input type=“text” name=“username”/>
-
</li>
-
<li>
-
<label for“”>密码:
</label>
-
<input type=“password” name=“password”/>
-
</li>
-
<li>
-
<label for“”>
</label>
-
<input type=“checkbox” name=“remember” value=“yes”/>7天内自动登录
-
</li>
-
<li>
-
<label for“”>
</label>
-
<input type=“submit” name=“login” value=“登录” class=“login_btn”/>
-
</li>
-
</ul>
-
</fieldset>
-
</body>
-
-
</html>
login.php
-
<?php
-
header(
"Content-Type:text/html;charset=utf-8");
-
session_start();
-
if(
isset($_POST[<span class="hljs-string">'login'</span>]))</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="6"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> $username = trim($_POST[<span class="hljs-string">'username'</span>]);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> $password = trim($_POST[<span class="hljs-string">'password'</span>]);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">if</span>(($username==<span class="hljs-string">''</span>)||($password==<span class="hljs-string">''</span>))</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> header(<span class="hljs-string">'refresh:3;url=login.html'</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">echo</span> <span class="hljs-string">"改用户名或密码不能为空,3秒后跳转到登录页面"</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="12"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">exit</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="13"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="14"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(($username!=<span class="hljs-string">'username'</span>)||($password!=<span class="hljs-string">'password'</span>))</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="15"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="16"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-comment">//用户名或密码错误</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="17"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> header(<span class="hljs-string">'refresh:3;url=login.html'</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="18"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">echo</span> <span class="hljs-string">"用户名或密码错误,3秒后跳转到登录页面"</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="19"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">exit</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="20"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="21"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span>(($username==<span class="hljs-string">'username'</span>)&&($password==<span class="hljs-string">'password'</span>))</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="22"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="23"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-comment">//登录成功将信息保存到session中</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="24"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> $_SESSION[<span class="hljs-string">'username'</span>]=$username;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="25"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> $_SESSION[<span class="hljs-string">'islogin'</span>]=<span class="hljs-number">1</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="26"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-comment">//如果勾选7天内自动保存,则将其保存到cookie</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="27"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">if</span>($_POST[<span class="hljs-string">'remember'</span>]==<span class="hljs-string">"yes"</span>)</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="28"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="29"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> setcookie(<span class="hljs-string">"username"</span>,$username,time()+<span class="hljs-number">7</span>*<span class="hljs-number">24</span>*<span class="hljs-number">60</span>*<span class="hljs-number">60</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="30"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> setcookie(<span class="hljs-string">"code"</span>,md5($username.md5($password)),time()+<span class="hljs-number">7</span>*<span class="hljs-number">24</span>*<span class="hljs-number">60</span>*<span class="hljs-number">60</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="31"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="32"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">else</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="33"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> {</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="34"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> setcookie(<span class="hljs-string">"username"</span>,<span class="hljs-string">''</span>,time()<span class="hljs-number">-1</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="35"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> setcookie(<span class="hljs-string">"code"</span>,<span class="hljs-string">''</span>,time()<span class="hljs-number">-1</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="36"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="37"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-comment">//跳转到用户首页</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="38"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> header(<span class="hljs-string">'refresh:3;url=index.php'</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="39"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="40"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="41"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-meta">?></span></div></div></li></ol></code><div class="hljs-button" data-title="复制"></div></pre>index.php<br><pre οnclick="hljs.copyCode(event)"><code class="language-php hljs"><ol class="hljs-ln"><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="1"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"><span class="hljs-meta"><?php</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="2"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> header(<span class="hljs-string">"Content-Type:text/html;charset=utf-8"</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="3"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> session_start();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="4"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-comment">//首先判断Cookie是否有记住用户信息</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="5"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">if</span>(<span class="hljs-keyword">isset</span>($_COOKIE[
'username']))
-
{
-
$_SESSION[<span class="hljs-string">'username'</span>]=$_COOKIE[
'username'];
-
$_SESSION[<span class="hljs-string">'islogin'</span>]=<span class="hljs-number">1</span>;</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> }</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">if</span>(<span class="hljs-keyword">isset</span>($_SESSION[
'islogin']))
-
{
-
//已经登录
-
echo $_SESSION[
'username'].
":你好,欢迎进入个人中心!<br/>";
-
echo
"<a href='logout.php'>注销</a>";
-
}
-
else
-
{
//为登录
-
echo
"你还未登录,请<a href='login.html'>登录</a>";
-
}
-
?>
logout.php
-
<?php
-
header(
"Content-Type:text/html;charset=utf-8");
-
session_start();
-
//清除session
-
$username=$_SESSION[
'username'];
-
$_SESSION=<span class="hljs-keyword">array</span>();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="7"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> session_destroy();</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="8"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-comment">//清除cookie</span></div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="9"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> setcookie(<span class="hljs-string">"username"</span>,<span class="hljs-string">''</span>,time()<span class="hljs-number">-1</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="10"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> setcookie(<span class="hljs-string">"code"</span>,<span class="hljs-string">''</span>,time()<span class="hljs-number">-1</span>);</div></div></li><li><div class="hljs-ln-numbers"><div class="hljs-ln-line hljs-ln-n" data-line-number="11"></div></div><div class="hljs-ln-code"><div class="hljs-ln-line"> <span class="hljs-keyword">echo</span> <span class="hljs-string">"$username,欢迎下次光临";
-
echo
"重新<a href='login.html'>登录</a>";
-
?>
登录界面:
</div>