\n
php\n<\/span>\/*<\/span>*\n * Created by PhpStorm.\n * User: andy\n * Date: 16-11-25\n * Time: 下午10:20\n <\/span>*\/<\/span>\n\nsession_start<\/span>();\n\n<\/span>$username<\/span> = $_POST<\/span>['username'];\n<\/span>$password<\/span> = $_POST<\/span>['password'];\n\n\n<\/span>$user<\/span> = new<\/span> User($username<\/span>, $password<\/span>);\n\n<\/span>\/\/<\/span>判斷登錄是否成功<\/span>\ntry<\/span>{\n Validate<\/span>::validateUser($user<\/span>);\n\n <\/span>\/\/<\/span>驗證通過,登錄成功<\/span>\n $_SESSION<\/span>['username']=$username<\/span>;\n <\/span>header<\/span>('location:main.php');\n}<\/span>catch<\/span> (MyException $me<\/span>){\n\n <\/span>\/\/<\/span>驗證失敗<\/span>\n header<\/span>('location:index.php');\n}\n\n\n<\/span>\/*<\/span>*\n * 自動加載類\n * @param $class\n * @return string\n <\/span>*\/<\/span>\nfunction<\/span> __autoload($class<\/span>)\n{\n <\/span>$file<\/span> = __DIR__ . '\/' . strtolower<\/span>($class<\/span>) . '.php';\n <\/span>if<\/span> (is_file<\/span>($file<\/span>)) {\n <\/span>include_once<\/span> $file<\/span>;\n }\n <\/span>return<\/span> '';\n}<\/span><\/pre>\n<\/div>\nView Code<\/span><\/div>\n3.3 myexception.php<\/p>\n


\n
\n
php\n\n<\/span>\/*<\/span>*\n * Created by PhpStorm.\n * User: andy\n * Date: 16-11-25\n * Time: 下午10:50\n <\/span>*\/<\/span>\nclass<\/span> MyException extends<\/span> Exception<\/span>\n{\n\n}<\/span><\/pre>\n<\/div>\nView Code<\/span><\/div>\n3.4 user.php<\/p>\n


\n
\n
php\n\n<\/span>\/*<\/span>*\n * Created by PhpStorm.\n * User: andy\n * Date: 16-11-25\n * Time: 下午10:29\n <\/span>*\/<\/span>\nclass<\/span> User\n{\n <\/span>private<\/span> $username<\/span> = '';\n <\/span>private<\/span> $password<\/span> = '';\n\n <\/span>function<\/span> __construct($username<\/span>, $password<\/span>)\n {\n <\/span>$this<\/span>->username = $username<\/span>;\n <\/span>$this<\/span>->password = $password<\/span>;\n }\n\n <\/span>\/*<\/span>*\n * 返回用戶名\n * @return string\n <\/span>*\/<\/span>\n public<\/span> function<\/span> getUsername(): string<\/span>\n {\n <\/span>return<\/span> $this<\/span>->username;\n }\n\n <\/span>\/*<\/span>*\n * 返回密碼\n * @return string\n <\/span>*\/<\/span>\n public<\/span> function<\/span> getPassword(): string<\/span>\n {\n <\/span>return<\/span> $this<\/span>->password;\n }\n}<\/span><\/pre>\n<\/div>\nView Code<\/span>\n<\/div>\n3.5 validate.php<\/p>\n
\n


\n
\n
php\n\n<\/span>\/*<\/span>*\n * 驗證類\n * Created by PhpStorm.\n * User: andy\n * Date: 16-11-25\n * Time: 下午10:34\n <\/span>*\/<\/span>\nclass<\/span> Validate\n{\n <\/span>\/*<\/span>*\n * 驗證用戶\n * @param User $user\n * @throws MyException\n <\/span>*\/<\/span>\n static<\/span> function<\/span> validateUser(User $user<\/span>)\n {\n <\/span>\/\/<\/span>print_r($user);<\/span>\n $username<\/span> = $user<\/span>->getUsername();\n <\/span>$password<\/span> = $user<\/span>->getPassword();\n\n <\/span>unset<\/span>($_SESSION<\/span>['validate_username'],$_SESSION<\/span>['validate_password']);\n\n <\/span>\/\/<\/span>驗證用戶名<\/span>\n try<\/span> {\n self<\/span>::validateUsername($username<\/span>);\n }<\/span>catch<\/span> (MyException $me<\/span>) {\n <\/span>$_SESSION<\/span>['validate_username']=$me<\/span>->getMessage();\n }\n\n <\/span>\/\/<\/span>驗證密碼<\/span>\n try<\/span> {\n self<\/span>::validatePassword($password<\/span>);\n }<\/span>catch<\/span> (MyException $me<\/span>) {\n <\/span>$_SESSION<\/span>['validate_password']=$me<\/span>->getMessage();\n }\n\n\n <\/span>if<\/span>(isset<\/span>($me<\/span>)){\n <\/span>throw<\/span> $me<\/span>;\n }\n\n }\n\n <\/span>\/*<\/span>*\n * 驗證用戶名\n * @param $username\n * @throws MyException\n <\/span>*\/<\/span>\n static<\/span> private<\/span> function<\/span> validateUsername($username<\/span>)\n {\n <\/span>$lem<\/span> = strlen<\/span>($username<\/span>);\n <\/span>if<\/span> ($lem<\/span> < 3) {\n <\/span>\/\/<\/span>拋出異常<\/span>\n throw<\/span> new<\/span> MyException('用戶名長度不能小于3位', E_USER_ERROR<\/span>);\n } <\/span>elseif<\/span> ($lem<\/span> > 8) {\n <\/span>throw<\/span> new<\/span> MyException('用戶名長度不能超過8位', E_USER_ERROR<\/span>);\n }\n }\n\n <\/span>\/*<\/span>*\n * 驗證密碼\n * @param $password\n * @throws MyException\n <\/span>*\/<\/span>\n static<\/span> private<\/span> function<\/span> validatePassword($password<\/span>)\n {\n <\/span>$lem<\/span> = strlen<\/span>($password<\/span>);\n <\/span>if<\/span> ($lem<\/span> < 3) {\n <\/span>\/\/<\/span>拋出異常<\/span>\n throw<\/span> new<\/span> MyException('密碼長度不能小于3位', E_USER_ERROR<\/span>);\n } <\/span>elseif<\/span> ($lem<\/span> > 8) {\n <\/span>throw<\/span> new<\/span> MyException('密碼長度不能超過8位', E_USER_ERROR<\/span>);\n }\n }\n\n}<\/span><\/pre>\n<\/div>\nView Code<\/span>\n<\/div>\n <\/p>\n
(End.)<\/p>\n
<\/div>\n
<\/div>"}
Home
php教程
php手冊
PHP authentication user login example-study notes
PHP authentication user login example-study notes
Nov 30, 2016 pm 11:59 PM
1. Basic process:

2.UML class diagram:

3.PHP code:
3.1 index.php

<?<span style="color: #000000;">php
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* Created by PhpStorm.
* User: andy
* Date: 16-11-25
* Time: 下午10:13
</span><span style="color: #008000;">*/</span>
<span style="color: #008080;">session_start</span><span style="color: #000000;">();
</span><span style="color: #800080;">$validate_username</span>=<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">$_SESSION</span>['validate_username'])?<span style="color: #800080;">$_SESSION</span>['validate_username']:''<span style="color: #000000;">;
</span><span style="color: #800080;">$validate_password</span>=<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">$_SESSION</span>['validate_password'])?<span style="color: #800080;">$_SESSION</span>['validate_password']:''<span style="color: #000000;">;
</span>?>
<html>
<head>
<meta charset="utf-8"/>
<title>用戶登錄</title>
</head>
<body>
<h1>用戶登錄</h1>
<form action="login.php" method="post"><span style="color: #000000;">
用戶名:</span><input type="text" name="username" value="" /><font color="red">
<?php <span style="color: #0000ff;">echo</span> <span style="color: #800080;">$validate_username</span>; ?>
</font><br /><br /><span style="color: #000000;">
密</span> 碼:<input type="password" name="password" value="" /><font color="red">
<?php <span style="color: #0000ff;">echo</span> <span style="color: #800080;">$validate_password</span>; ?>
</font><br /><br />
<input type="submit" value="提交" />
</form>
</body>
</html>
View Code
3.2 login.php

<?<span style="color: #000000;">php
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* Created by PhpStorm.
* User: andy
* Date: 16-11-25
* Time: 下午10:20
</span><span style="color: #008000;">*/</span>
<span style="color: #008080;">session_start</span><span style="color: #000000;">();
</span><span style="color: #800080;">$username</span> = <span style="color: #800080;">$_POST</span>['username'<span style="color: #000000;">];
</span><span style="color: #800080;">$password</span> = <span style="color: #800080;">$_POST</span>['password'<span style="color: #000000;">];
</span><span style="color: #800080;">$user</span> = <span style="color: #0000ff;">new</span> User(<span style="color: #800080;">$username</span>, <span style="color: #800080;">$password</span><span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;">判斷登錄是否成功</span>
<span style="color: #0000ff;">try</span><span style="color: #000000;">{
Validate</span>::validateUser(<span style="color: #800080;">$user</span><span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;">驗證通過,登錄成功</span>
<span style="color: #800080;">$_SESSION</span>['username']=<span style="color: #800080;">$username</span><span style="color: #000000;">;
</span><span style="color: #008080;">header</span>('location:main.php'<span style="color: #000000;">);
}</span><span style="color: #0000ff;">catch</span> (MyException <span style="color: #800080;">$me</span><span style="color: #000000;">){
</span><span style="color: #008000;">//</span><span style="color: #008000;">驗證失敗</span>
<span style="color: #008080;">header</span>('location:index.php'<span style="color: #000000;">);
}
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* 自動加載類
* @param $class
* @return string
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">function</span> __autoload(<span style="color: #800080;">$class</span><span style="color: #000000;">)
{
</span><span style="color: #800080;">$file</span> = __DIR__ . '/' . <span style="color: #008080;">strtolower</span>(<span style="color: #800080;">$class</span>) . '.php'<span style="color: #000000;">;
</span><span style="color: #0000ff;">if</span> (<span style="color: #008080;">is_file</span>(<span style="color: #800080;">$file</span><span style="color: #000000;">)) {
</span><span style="color: #0000ff;">include_once</span> <span style="color: #800080;">$file</span><span style="color: #000000;">;
}
</span><span style="color: #0000ff;">return</span> ''<span style="color: #000000;">;
}</span>
View Code
3.3 myexception.php

<?<span style="color: #000000;">php
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* Created by PhpStorm.
* User: andy
* Date: 16-11-25
* Time: 下午10:50
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">class</span> MyException <span style="color: #0000ff;">extends</span> <span style="color: #0000ff;">Exception</span><span style="color: #000000;">
{
}</span>
View Code
3.4 user.php

<?<span style="color: #000000;">php
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* Created by PhpStorm.
* User: andy
* Date: 16-11-25
* Time: 下午10:29
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">class</span><span style="color: #000000;"> User
{
</span><span style="color: #0000ff;">private</span> <span style="color: #800080;">$username</span> = ''<span style="color: #000000;">;
</span><span style="color: #0000ff;">private</span> <span style="color: #800080;">$password</span> = ''<span style="color: #000000;">;
</span><span style="color: #0000ff;">function</span> __construct(<span style="color: #800080;">$username</span>, <span style="color: #800080;">$password</span><span style="color: #000000;">)
{
</span><span style="color: #800080;">$this</span>->username = <span style="color: #800080;">$username</span><span style="color: #000000;">;
</span><span style="color: #800080;">$this</span>->password = <span style="color: #800080;">$password</span><span style="color: #000000;">;
}
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* 返回用戶名
* @return string
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> getUsername(): <span style="color: #0000ff;">string</span><span style="color: #000000;">
{
</span><span style="color: #0000ff;">return</span> <span style="color: #800080;">$this</span>-><span style="color: #000000;">username;
}
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* 返回密碼
* @return string
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">function</span> getPassword(): <span style="color: #0000ff;">string</span><span style="color: #000000;">
{
</span><span style="color: #0000ff;">return</span> <span style="color: #800080;">$this</span>-><span style="color: #000000;">password;
}
}</span>
View Code
3.5 validate.php

<?<span style="color: #000000;">php
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* 驗證類
* Created by PhpStorm.
* User: andy
* Date: 16-11-25
* Time: 下午10:34
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">class</span><span style="color: #000000;"> Validate
{
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* 驗證用戶
* @param User $user
* @throws MyException
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">static</span> <span style="color: #0000ff;">function</span> validateUser(User <span style="color: #800080;">$user</span><span style="color: #000000;">)
{
</span><span style="color: #008000;">//</span><span style="color: #008000;">print_r($user);</span>
<span style="color: #800080;">$username</span> = <span style="color: #800080;">$user</span>-><span style="color: #000000;">getUsername();
</span><span style="color: #800080;">$password</span> = <span style="color: #800080;">$user</span>-><span style="color: #000000;">getPassword();
</span><span style="color: #0000ff;">unset</span>(<span style="color: #800080;">$_SESSION</span>['validate_username'],<span style="color: #800080;">$_SESSION</span>['validate_password'<span style="color: #000000;">]);
</span><span style="color: #008000;">//</span><span style="color: #008000;">驗證用戶名</span>
<span style="color: #0000ff;">try</span><span style="color: #000000;"> {
self</span>::validateUsername(<span style="color: #800080;">$username</span><span style="color: #000000;">);
}</span><span style="color: #0000ff;">catch</span> (MyException <span style="color: #800080;">$me</span><span style="color: #000000;">) {
</span><span style="color: #800080;">$_SESSION</span>['validate_username']=<span style="color: #800080;">$me</span>-><span style="color: #000000;">getMessage();
}
</span><span style="color: #008000;">//</span><span style="color: #008000;">驗證密碼</span>
<span style="color: #0000ff;">try</span><span style="color: #000000;"> {
self</span>::validatePassword(<span style="color: #800080;">$password</span><span style="color: #000000;">);
}</span><span style="color: #0000ff;">catch</span> (MyException <span style="color: #800080;">$me</span><span style="color: #000000;">) {
</span><span style="color: #800080;">$_SESSION</span>['validate_password']=<span style="color: #800080;">$me</span>-><span style="color: #000000;">getMessage();
}
</span><span style="color: #0000ff;">if</span>(<span style="color: #0000ff;">isset</span>(<span style="color: #800080;">$me</span><span style="color: #000000;">)){
</span><span style="color: #0000ff;">throw</span> <span style="color: #800080;">$me</span><span style="color: #000000;">;
}
}
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* 驗證用戶名
* @param $username
* @throws MyException
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">static</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">function</span> validateUsername(<span style="color: #800080;">$username</span><span style="color: #000000;">)
{
</span><span style="color: #800080;">$lem</span> = <span style="color: #008080;">strlen</span>(<span style="color: #800080;">$username</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">if</span> (<span style="color: #800080;">$lem</span> < 3<span style="color: #000000;">) {
</span><span style="color: #008000;">//</span><span style="color: #008000;">拋出異常</span>
<span style="color: #0000ff;">throw</span> <span style="color: #0000ff;">new</span> MyException('用戶名長度不能小于3位', <span style="color: #ff00ff;">E_USER_ERROR</span><span style="color: #000000;">);
} </span><span style="color: #0000ff;">elseif</span> (<span style="color: #800080;">$lem</span> > 8<span style="color: #000000;">) {
</span><span style="color: #0000ff;">throw</span> <span style="color: #0000ff;">new</span> MyException('用戶名長度不能超過8位', <span style="color: #ff00ff;">E_USER_ERROR</span><span style="color: #000000;">);
}
}
</span><span style="color: #008000;">/*</span><span style="color: #008000;">*
* 驗證密碼
* @param $password
* @throws MyException
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">static</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">function</span> validatePassword(<span style="color: #800080;">$password</span><span style="color: #000000;">)
{
</span><span style="color: #800080;">$lem</span> = <span style="color: #008080;">strlen</span>(<span style="color: #800080;">$password</span><span style="color: #000000;">);
</span><span style="color: #0000ff;">if</span> (<span style="color: #800080;">$lem</span> < 3<span style="color: #000000;">) {
</span><span style="color: #008000;">//</span><span style="color: #008000;">拋出異常</span>
<span style="color: #0000ff;">throw</span> <span style="color: #0000ff;">new</span> MyException('密碼長度不能小于3位', <span style="color: #ff00ff;">E_USER_ERROR</span><span style="color: #000000;">);
} </span><span style="color: #0000ff;">elseif</span> (<span style="color: #800080;">$lem</span> > 8<span style="color: #000000;">) {
</span><span style="color: #0000ff;">throw</span> <span style="color: #0000ff;">new</span> MyException('密碼長度不能超過8位', <span style="color: #ff00ff;">E_USER_ERROR</span><span style="color: #000000;">);
}
}
}</span>
View Code
(End.)
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn