效果:
文件放置
cookie登錄文件說(shuō)明
include文件夾里都是公共的部分
譬如 connect 連接數(shù)據(jù)庫(kù)
header footer 公共頭部底部
公用函數(shù)庫(kù) function
index 是首頁(yè)
loggedin 是登錄進(jìn)來(lái)的歡迎頁(yè)面
login與login_page是登錄頁(yè)
logout是退出頁(yè)
session登錄
session登錄呢其實(shí)與cookie是一樣的
只要把cookie替換成session,并在有session的文件頭部開(kāi)啟session會(huì)話即可
session_start(); //開(kāi)啟會(huì)話
下邊呢看代碼
include文件夾的文件
connect.php實(shí)例
<?php /醫(yī)院 * Created by PhpStorm. * User: Z先生 * Date: 2018/4/23 * Time: 8:31 */ //創(chuàng)建連接參數(shù) 使用常量 define('DB_HOST','localhost');//連接數(shù)據(jù)庫(kù)地址 define('DB_USER','root');//用戶名 define('DB_PASS','root');//用戶密碼 define('DB_NAME','php');//數(shù)據(jù)庫(kù)名稱 define('DB_CHAR','utf8');//字符編碼 //連接數(shù)據(jù)庫(kù) $dbc = @mysqli_connect(DB_HOST,DB_USER,DB_PASS,DB_NAME); //如果鏈接不成功 if(mysqli_connect_errno($dbc)){ echo '連接失敗'.mysqli_connect_errno($dbc); } mysqli_select_db($dbc,DB_NAME); mysqli_set_charset($dbc , DB_CHAR);
運(yùn)行實(shí)例 ?點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
----------------------------------------------------------------------------------------------------------------------
footer.php實(shí)例
<h3>我是公共低部</h3> </body> </html>
運(yùn)行實(shí)例 ?點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
----------------------------------------------------------------------------------------------------------------------
function.php實(shí)例
<?php /醫(yī)院 * Created by PhpStorm. * User: Z先生 * Date: 2018/4/23 * Time: 8:42 */ /醫(yī)院 * 用戶定義跳轉(zhuǎn)格式 醫(yī)院/ function redirect_user($page = 'index.php') { // 默認(rèn)URL格式 $url = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']); //移除右側(cè) 線 $url = rtrim($url,'/\\'); // 添加當(dāng)前腳本名稱,默認(rèn)為index.php $url .='/'.$page; // 跳轉(zhuǎn)到指定地址 header('location:'.$url); //退出當(dāng)前函數(shù) exit(); } /醫(yī)院 *驗(yàn)證用戶登錄 * $dbc,$email,$password 醫(yī)院/ function check_login($dbc, $email = '', $password =''){ //收集、初始化錯(cuò)誤數(shù)據(jù) $errors = []; //email if(empty($email)){ $errors[] = '用戶名不能為空'; }else{ // 轉(zhuǎn)義email,以便在 SQL 中使用 $e = mysqli_real_escape_string($dbc,trim($email) ); } //password if(empty($password)){ $errors[] = '密碼不能為空'; }else{ // 轉(zhuǎn)義$password,以便在 SQL 中使用 $p = mysqli_real_escape_string($dbc,trim($password) ); } // 數(shù)組的非空判斷,執(zhí)行數(shù)據(jù)查詢 if (empty($errors)){ // $sql = "SELECT `user_id`,`user_name` FROM `user` WHERE `email`='$e' AND `password`=shal('$p') "; $sql = "SELECT `user_id`,`user_name` FROM `user` WHERE `email`='$e' AND `password`=sha1('$p') "; //查詢 $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]; }
運(yùn)行實(shí)例 ?點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
--------------------------------------------------------------------------------------------------------------------
header.php實(shí)例
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title> <?php // 設(shè)置當(dāng)前頁(yè)面標(biāo)題 echo isset($page_title) ? $page_title : "默認(rèn)標(biāo)題" ?> </title> </head> <body> <h3>我是公共頭部</h3>
運(yùn)行實(shí)例 ?
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
-----------------------------------------------------------------------------------------------------------------------
下面是登錄文件了
----------------------------------------------------------------------------------------------------------------------
index.php實(shí)例
<?php /醫(yī)院 * Created by PhpStorm. * User: Z先生 * Date: 2018/4/23 * Time: 10:51 */ $page_title = '首頁(yè)'; include('include/header.php'); echo '<h2 style="color:red">我是首頁(yè)</h2>'; echo "<p>用戶: {$_COOKIE['user_name']}</p>"; if((isset($_COOKIE['user_id'])) && basename($_SERVER['PHP_SELF']) != 'logout.php') { echo '<a href="logout.php">退出</a>'; }else{ echo '<a href="login.php">登錄</a>'; } include('include/header.php');
運(yùn)行實(shí)例 ?點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
----------------------------------------------------------------------------------------------------------------------
<?php /醫(yī)院 * Created by PhpStorm. * User: Z先生 * Date: 2018/4/23 * Time: 10:55 */ if (!isset($_COOKIE['user_id'])) { require ('include/function.php'); //跳轉(zhuǎn)到默認(rèn)首頁(yè) redirect_user(); } //如果已經(jīng)登錄 //設(shè)置頁(yè)面標(biāo)題 $page_title = '已經(jīng)登錄'; include ('include/header.php'); //打印歡迎信息,并提供退出功能 echo <<< "WELCOME" <h2 style="color:red">登陸成功</h2> <p>歡迎您: {$_COOKIE['user_name']}</p> <p><a href="logout.php">退出</a></p> WELCOME; //加載底部 include ('include/footer.php');
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
----------------------------------------------------------------------------------------------------------------------
<?php /醫(yī)院 * Created by PhpStorm. * User: Z先生 * Date: 2018/4/23 * Time: 9:39 */ if($_SERVER['REQUEST_METHOD'] == 'POST'){ //加載公共函數(shù)庫(kù) require ('include/function.php'); //連接數(shù)據(jù)庫(kù) require ('include/connect.php'); // 驗(yàn)證登錄 list($check,$data) = check_login($dbc,$_POST['email'],$_POST['password']); if($check){ // 設(shè)置cookie setcookie('user_id',$data['user_id']); setcookie('user_name',$data['user_name']); // 跳轉(zhuǎn)頁(yè)面 redirect_user('loggedin.php'); }else{ $errors = $data; } //clos mysqli_close($dbc); } include('login_page.php');
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
----------------------------------------------------------------------------------------------------------------------
<?php /醫(yī)院 * Created by PhpStorm. * User: Z先生 * Date: 2018/4/23 * Time: 8:46 * * 登錄頁(yè)面并報(bào)告錯(cuò)誤 * 設(shè)置當(dāng)前頁(yè)面標(biāo)題 * 在login中調(diào)用 */ $page_title = '用戶登錄'; //加載頭部文件 include('include/header.php'); //打印錯(cuò)誤信息 if (isset($errors) && !empty($errors)) { $errors_msg = '<p style="color:red">'; foreach ($errors as $msg) { $errors_msg .= $msg.'<br>'; } echo $errors_msg.'</p>'; } ?> <h2 style="color: red">用戶登錄</h2> <form action="login.php" method="post"> <label for="email">郵箱:</label> <input type="email" name="email" id="email" value="<?php echo isset($_POST['email'])?$_POST['email']:''; ?>"><br> <label for="password">密碼:</label> <input type="password" name="password" id="password" ><br> <input type="submit" mame="submit" id="submit" value="登錄"> </form> <?php //加載低部文件 include('include/footer.php'); ?>
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
----------------------------------------------------------------------------------------------------------------------
<?php /醫(yī)院 * Created by PhpStorm. * User: Z先生 * Date: 2018/4/23 * Time: 10:56 */ if (!isset($_COOKIE['user_id'])) { require ('inc/function.php'); //跳轉(zhuǎn)到默認(rèn)首頁(yè) redirect_user(); } else { //刪除cookies setcookie('user_id', '', time()-3600); setcookie('user_name','', time()-3600); } //設(shè)置頁(yè)面標(biāo)題 $page_title = '已經(jīng)登錄'; include ('include/header.php'); //打印退出信息,并提供登錄功能 echo <<< "WELCOME" <h2 style="color:red">退出成功</h2> <p><a href="login.php">登錄</a></p> WELCOME; include ('include/footer.php');
點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例
微信掃碼
關(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)