- 相關推薦
php實現(xiàn)用戶登陸簡單實例
最近學習中要使用PHP+MySql實現(xiàn)簡單登錄注冊,看了很多簡單案例后發(fā)現(xiàn),并沒有人通過PDO實現(xiàn)簡單登錄注冊,要么就是Mysql和MySqli實現(xiàn),就算實現(xiàn)了意義也不大,js就可以做的事情,沒必要放到PHP中去,我卻偏偏不相信,保留著一股倔勁,簡單的實現(xiàn)了登錄注冊,下面是小編為大家整理的php實現(xiàn)用戶登陸簡單實例,歡迎閱讀與收藏。
php實現(xiàn)用戶登陸簡單實例
前言:
最近要完成的最后一個部分,就是對用戶提交的數(shù)據(jù)進行管理,至于管理,那肯定就是管理員的事了,那一定涉及登陸,驗證賬號權限,賬號是否過期等等問題。
所需知識
session,確實是很重要的東西。并且我遇到session不能跨頁,修改PHP.ini的session.use_trans_sid = 0值為1。
具體實現(xiàn)
我的后臺設計的比較簡單,只需輸入一個密碼即可,這個密碼當然是保存在服務器可以更改的啦。所以只需要給session添加兩個變量,flag、time。
首先,用flag來確定管理員是否成功登陸,用time確定登陸是否超時。提交密碼后,如果正確會給flag賦值為1,time賦值為當前時間。每次進入新的頁面或進行操作時會對這兩個變量進行判斷,首先判斷flag值是否為1,不唯一直接提示未登陸,銷毀session,如果為1,再判斷當前時間-$_SESSION(‘time')是否小于600(10分鐘),若大于,提示登陸超時,銷毀session;若小于,允許操作,并更新time變量值為當前值。
部分代碼
check_pw.php
?php session_start();
$_SESSION['flag'] = 0;
$myfile = fopen("passwd","r") or die("Unable to open file!");
$passwd = fgets($myfile);
if(empty($_POST['pass'])){
echo "不能為空,重新輸入";
$page = "login.html";
}else{
$pass = $_POST['pass'];
$passwd = test_input($passwd);
$pass = test_input($pass);
if($pass == $passwd){
echo "口令正確,允許訪問";
$page = "list_all.php";
$_SESSION['flag'] = 1;
$_SESSION['time'] = time(); //當前秒數(shù)
}else{
echo "口令錯誤,重新輸入";
$page = "login.html";
}
}
function test_input($date){
$date = trim($date);
$date = stripcslashes($date);
$date = htmlspecialchars($date);
return $date;
}
點此跳轉(zhuǎn)
list_all.php(部分)
?
?php session_start();
if($_SESSION['flag'] == 1){
if(time() - $_SESSION['time'] > 600){
echo "登陸超時";
echo '點此登陸';
session_destroy();
exit();
}else{
$_SESSION['time'] = time();
}
}else{
echo "未登陸,無權訪問!";
echo '點此登陸';
session_destroy();
exit();
}
HTML代碼(login.html):
7天內(nèi)自動登錄
login.PHP:(登陸處理頁)
<?PHP
header('Content-type:text/html; charset=utf-8');
// 開啟Session
session_start();
// 處理用戶登錄信息
if (isset($_POST['login'])) {
# 接收用戶的登錄信息
$username = trim($_POST['username']);
$password = trim($_POST['password']);
// 判斷提交的登錄信息
if (($username == '') || ($password == '')) {
// 若為空,視為未填寫,提示錯誤,并3秒后返回登錄界面
header('refresh:3; url=login.html');
echo "用戶名或密碼不能為空,系統(tǒng)將在3秒后跳轉(zhuǎn)到登錄界面,請重新填寫登錄信息!";
exit;
} elseif (($username != 'username') || ($password != 'password')) {
# 用戶名或密碼錯誤,同空的處理方式
header('refresh:3; url=login.html');
echo "用戶名或密碼錯誤,系統(tǒng)將在3秒后跳轉(zhuǎn)到登錄界面,請重新填寫登錄信息!";
exit;
} elseif (($username = 'username') && ($password = 'password')) {
# 用戶名和密碼都正確,將用戶信息存到Session中
$_SESSION['username'] = $username;
$_SESSION['islogin'] = 1;
// 若勾選7天內(nèi)自動登錄,則將其保存到Cookie并設置保留7天
if ($_POST['remember'] == "yes") {
setcookie('username', $username, time()+7*24*60*60);
setcookie('code', md5($username.md5($password)), time()+7*24*60*60);
} else {
// 沒有勾選則刪除Cookie
setcookie('username', '', time()-999);
setcookie('code', '', time()-999);
}
// 處理完附加項后跳轉(zhuǎn)到登錄成功的首頁
header('location:index.PHP');
}
}
?>
index.PHP(默認主頁):
<?PHP
header('Content-type:text/html; charset=utf-8');
// 開啟Session
session_start();
// 首先判斷Cookie是否有記住了用戶信息
if (isset($_COOKIE['username'])) {
# 若記住了用戶信息,則直接傳給Session
$_SESSION['username'] = $_COOKIE['username'];
$_SESSION['islogin'] = 1;
}
if (isset($_SESSION['islogin'])) {
// 若已經(jīng)登錄
echo "你好! ".$_SESSION['username'].' ,歡迎來到個人中心!
';
echo "注銷";
} else {
// 若沒有登錄
echo "您還沒有登錄,請登錄";
}
?>
logout.PHP注銷頁
<?PHP
header('Content-type:text/html; charset=utf-8');
// 注銷后的操作
session_start();
// 清除Session
$username = $_SESSION['username']; //用于后面的提示信息
$_SESSION = array();
session_destroy();
// 清除Cookie
setcookie('username', '', time()-99);
setcookie('code', '', time()-99);
// 提示信息
echo "歡迎下次光臨, ".$username.'
';
echo "重新登錄";
?>
【php實現(xiàn)用戶登陸簡單實例】相關文章:
php中實現(xiàn)回刪功能實例10-03
php簡單偽靜態(tài)實例09-16
PHP生成器簡單實例09-07
如何實現(xiàn)php登陸表單提交CSRF及驗證碼09-14
PHP socket的配置及實例10-16
php查詢mysql的實例09-09
PHP簡單的偽靜態(tài)URL機制實現(xiàn)09-02
php中fsockopen用法實例06-20
PHP處理密碼的幾種方式實例09-27
PHP符合PSR編程規(guī)范的實例07-31