批改狀態(tài):未批改
老師批語:
PHP登錄實(shí)例 后臺(tái)驗(yàn)證
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>數(shù)組的排序</title> <style type="text/css"> .box {width:90%;line-height:1.2em;border:1px dotted #d6d6d6;padding-left:15px;background-color:#f5f5f5;margin:10px auto;font-family:微軟雅黑;} .box1 {width:90%;line-height:1.5em;border:1px dotted #d6d6d6;background-color:#f2edd7;font-family:微軟雅黑;} .box p {margin-left:20px;font-size:14px;} hr {height:1px;width:95%;border:none;border-top:1px dashed #666;} </style> </head> <body> <?php session_start(); //開啟會(huì)話 echo '<div class="box">'; echo '<h4>首頁</h4>'; echo '<div class="box1">'; echo ' <p>判斷是否登錄<p>'; if ((isset($_SESSION['user_id'])) && basename($_SERVER['PHP_SELF']) != 'logout.php') { echo '<a href="logout.php">退出</a>'; } else { echo '<a href="login.php">登錄</a>'; } echo '</div>'; echo '<br>'; echo '</div>'; ?> </body> </html>
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
登錄驗(yàn)證
<?php //開啟會(huì)話 session_start(); if ($_SERVER['REQUEST_METHOD'] == 'POST') { //加載公共函數(shù)庫 require ('inc/function.php'); //連接數(shù)據(jù)庫 require ('inc/connect.php'); //驗(yàn)證登錄 list($check, $data) = check_login($dbc, $_POST['email'], $_POST['password']); //驗(yàn)證通過 if ($check) { //設(shè)置session會(huì)話 $_SESSION['user_id'] = $data['user_id']; $_SESSION['user_name'] = $data['user_name']; //跳轉(zhuǎn)頁面 redirect_user('loggedin.php'); } else { //驗(yàn)證失敗 $errors = $data; } //關(guān)閉數(shù)據(jù)庫連接 mysqli_close($dbc); } //加載 include('login_page.php');
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
退出登錄/刪除會(huì)話
退出登錄,進(jìn)入登錄界面,或首頁 顯示為未登錄狀態(tài)
<?php //開啟會(huì)話 session_start(); if (!isset($_SESSION['user_id'])) { require ('inc/function.php'); //跳轉(zhuǎn)到默認(rèn)首頁 redirect_user(); } else { //刪除會(huì)話 $_SESSION = []; session_destroy(); setcookie('PHPSESSID', '', time()-3600); } //設(shè)置頁面標(biāo)題 $page_title = '已經(jīng)登錄'; include ('inc/header.php'); //打印退出信息,并提供登錄功能 echo <<< "WELCOME" <h2 style="color:red">退出成功</h2> <p><a href="login.php">登錄</a></p> WELCOME;
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
后臺(tái)驗(yàn)證
<?php function redirect_user($page = 'index.php') { //默認(rèn)url格式 $url = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']); //如果有,去掉url右側(cè)的斜線 $url = rtrim($url, '/\\'); //添加當(dāng)前的腳本名稱,默認(rèn)為:index.php $url .= '/'.$page; //跳轉(zhuǎn)到指定目標(biāo)地址 header('Location:'. $url); exit(); } /醫(yī)院 * 驗(yàn)證用戶登錄 * @param $dbc * @param string $email * @param string $password */ function check_login($dbc, $email='', $password='') { //初始化錯(cuò)誤信息數(shù)組 $errors = []; //驗(yàn)證郵箱 if (empty($email)) { $errors[] = '郵箱地址不能為空'; } else { //mysqli_real_escape_string():轉(zhuǎn)義字符串的特殊字符 $e = mysqli_real_escape_string($dbc, trim($email)); } //驗(yàn)證密碼 if (empty($password)) { $errors[] = '密碼不能為空'; } else { $p = mysqli_real_escape_string($dbc, trim($password)); } //非空驗(yàn)證通過,即$error數(shù)組為空 if (empty($errors)) { //根據(jù)郵箱與密碼來查詢用戶id與用戶名 $sql = "SELECT `user_id`,`user_name` FROM `user` WHERE `email`='$e' AND `password`=sha1('$p') "; //執(zhí)行查詢 $res = mysqli_query($dbc, $sql); //查詢成功應(yīng)該返回唯一一條記錄 if (mysqli_num_rows($res) == 1) { //將查詢結(jié)果解析到數(shù)組中 $row = mysqli_fetch_array($res, MYSQLI_ASSOC); //返回查詢結(jié)果 // return [true, $row]; } else { //查詢失敗 $errors[] = '郵箱或密碼不正確,請(qǐng)重新輸入'; } } return [false, $errors]; }
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
數(shù)據(jù)庫連接
<?php //創(chuàng)建連接參數(shù): 因?yàn)檫B接參數(shù)不會(huì)經(jīng)常變化,所以推薦使用常量 define ('DB_HOST', 'localhost'); define ('DB_USER', 'root'); define ('DB_PASS', 'root'); define ('DB_NAME', 'php'); define ('DB_CHAR', 'utf8'); $dbc = @mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); //連接失敗一定會(huì)返回錯(cuò)誤編號(hào),可以根據(jù)編號(hào)判斷,也可用 $db是否為false進(jìn)行判斷 if (mysqli_connect_errno($dbc)) { echo '連接失敗'.mysqli_connect_error($dbc); } mysqli_select_db($dbc, DB_NAME); //選擇要操作的數(shù)據(jù)庫 mysqli_set_charset($dbc, DB_CHAR); //設(shè)置客戶端默認(rèn)字符編碼集
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
操作流程
登錄表單(登錄頁) — 登錄驗(yàn)證(連接后臺(tái)信息驗(yàn)證) — 數(shù)據(jù)庫連接 — 后臺(tái)驗(yàn)證(登錄信息驗(yàn)證)— 退出登錄
有信息交互的 必須要 開啟會(huì)話 session_start()
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)