亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索
博主信息
博文 59
粉絲 0
評(píng)論 1
訪問量 57367
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
PHP+MySQL實(shí)現(xiàn)用戶登錄及退出操作——2018年4月23日17時(shí)40分
白貓警長(zhǎng)的博客
原創(chuàng)
3020人瀏覽過

PHP與MYSQL實(shí)現(xiàn)用戶登錄與登錄后的退出操作

index.php文件

實(shí)例

<?php
$page_title = '首頁';

// include('inc/header.php');

//首頁登錄頁面
include('login_page.php');

//導(dǎo)入公共底部文件
// include ('inc/footer.php');

運(yùn)行實(shí)例 ?

點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例


login_page.php文件


實(shí)例

<?php
/醫(yī)院
*用戶登錄頁面
*此頁面只做2件事
*1.輸出錯(cuò)誤(比如郵箱錯(cuò)誤,密碼錯(cuò)誤等)
*2.輸出登錄表單
*/
$page_title = '用戶登錄';
//導(dǎo)入公共頭部文件
include('inc/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>';
}

?>

<div class="login_bd" style="width: 400px; height: 200px; background-color: DodgerBlue; margin: auto; color: #fff; padding: 3px 10px;">
	<form action="login.php" method="post">
		<h2>用戶登錄</h2>
		<p>
			<label for="email">郵箱:</label>
			<input type="email" name="email" id="email" value="<?php echo  isset($_POST['email'])?$_POST['email']:'' ?>" placeholder="請(qǐng)輸入登錄郵箱">
		</p>
		<p>
			<label for="password">密碼:</label>
			<input type="password" name="password" id="password" value="<?php echo  isset($_POST['password'])?$_POST['password']:'' ?>" placeholder="請(qǐng)輸入登錄密碼">
		</p>
		<p align="center">
			<button type="sublim" name="sublim" id="sublim">登錄</button>
		</p>
		
	</form>

</div>
<?php 
//導(dǎo)入公共底部文件
include('inc/footer.php');

運(yùn)行實(shí)例 ?

點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例


login.php文件

實(shí)例

<?php
/醫(yī)院
*前端代碼寫完后,點(diǎn)擊登錄按鈕后把信息提交到login.php文件,
*下面實(shí)現(xiàn)登錄驗(yàn)證
*
*思路:
*函數(shù)將完成以下2個(gè)工作:
*1.驗(yàn)證用戶的郵箱和密碼
*2.跳轉(zhuǎn)到指定頁面
*
*/

//檢測(cè)請(qǐng)求類型是否為POST
if($_SERVER['REQUEST_METHOD'] == 'POST') {
	// 1.加載公共函數(shù)庫(kù)
	require ('inc/function.php');

	// 2.連接數(shù)據(jù)庫(kù)
	require ('inc/connect.php');

	//3.驗(yàn)證登錄
	list($check, $data)= check_login($adc, $_POST['email'], $_POST['password']);

	//4.驗(yàn)證通過
	if($check) {
		 //設(shè)置cookies
        setcookie('user_id', $data['user_id']);
        setcookie('user_name', $data['user_name']);

        //跳轉(zhuǎn)頁面
        redirect_user('loggedin.php');
    } else {
		//驗(yàn)證失敗
		$errors = $data;
	}
	//關(guān)閉數(shù)據(jù)庫(kù)連接
    mysqli_close($adc);
}
//加載
include('login_page.php');

運(yùn)行實(shí)例 ?

點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例


loggedin.php文件


實(shí)例

<?php
// 沒有登錄的驗(yàn)證
if (!isset($_COOKIE['user_id'])) {
    require ('inc/function.php');	//把函數(shù)庫(kù)加載過來
    redirect_user();	//跳轉(zhuǎn)到默認(rèn)首頁
}

$page_title = '已經(jīng)登錄';	//如果已經(jīng)登錄,設(shè)置頁面標(biāo)題
include('inc/header.php');	//調(diào)用頭部信息

//輸出歡迎信息,并提供退出功能
echo <<< "WELCOME"
<h2>登錄成功</h2>
<p>歡迎您: {$_COOKIE['user_name']}</p>
<p><a href="logout.php">退出</a></p>
WELCOME;

include('inc/footer.php');	//調(diào)用公共底部

運(yùn)行實(shí)例 ?

點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例


logout.php文件

實(shí)例

<?php
if (!isset($_COOKIE['user_id'])) {
    require ('inc/function.php');
    //跳轉(zhuǎn)到默認(rèn)首頁
    redirect_user();
} else {  //刪除cookies
    setcookie('user_id', '', time()-3600);
    setcookie('user_name','', 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;

include ('inc/footer.php');

運(yùn)行實(shí)例 ?

點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例


公共文件:

header.php文件


實(shí)例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title><?php echo isset($page_title) ? $page_title : '默認(rèn)標(biāo)題'; ?></title>
</head>
<body style="text-align: center;">
	<h2>我是公共頭部位置</h2>

運(yùn)行實(shí)例 ?

點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例

footer.php

實(shí)例

<h2>我是公共底部位置</h2>
</body>
</html>

運(yùn)行實(shí)例 ?

點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例


function.php文件


實(shí)例

<?php
/醫(yī)院
*用戶自定義跳轉(zhuǎn)地址
*@param string $page
*/

function redirect_user($page='index.php')
{
	//1.默認(rèn)地址
	$url = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);

	//2.如果有,去掉url右側(cè)的斜線
	$url = rtrim($url, '/\\');

	//3.添加上當(dāng)前的腳本名稱,默認(rèn)為:index.php
	$url .= '/'.$page;

	//4.跳轉(zhuǎn)到指定的目標(biāo)地址
	header('Location:'. $url);

	//5.退出當(dāng)前函數(shù),這是一個(gè)好習(xí)慣,否則后面代碼仍會(huì)執(zhí)行,僅僅不會(huì)在當(dāng)前頁面輸出罷了
	exit();
}


/醫(yī)院
*驗(yàn)證用戶登錄,需要去數(shù)據(jù)庫(kù)中去驗(yàn)證
*
*/
//第1個(gè)參數(shù): $adc 數(shù)據(jù)庫(kù)連接文件( connect.php )
//第2個(gè)參數(shù): $email 需要傳入的郵箱
//第3個(gè)參數(shù): $password 需要傳入密碼
function check_login($adc, $email='', $password='')
{
	//1.創(chuàng)建初始化錯(cuò)誤信息數(shù)組
	$errors = [];

	//2.驗(yàn)證郵箱
	if(empty($email)) {
		$errors[] = '郵箱不能為空';
	}else {
		//mysqli_real_escape_string():轉(zhuǎn)義字符串的特殊字符
		$e = mysqli_real_escape_string($adc, trim($email));
	}

	//3.驗(yàn)證密碼
	if (empty($password)) {
		$errors[] = '密碼不能為空';
	}else {
		$p = mysqli_real_escape_string($adc, trim($password));
	}

	//4.非空驗(yàn)證通過,即$error數(shù)組為空,執(zhí)行以下語句
	 if (empty($errors)) {
        //根據(jù)郵箱與密碼來查詢用戶id與用戶名
        //數(shù)據(jù)庫(kù)中的user_id,user_name,user(表名稱),WHERE `email`='$e'(條件),password(密碼)
        $sql = "SELECT `user_id`,`user_name` FROM `user` WHERE `email`='$e' AND `password`=sha1('$p') ";

        //執(zhí)行查詢
        $res = mysqli_query($adc, $sql);

        //查詢成功應(yīng)該返回唯一一條記錄
        if (mysqli_num_rows($res) == 1) {

            //將查詢結(jié)果解析到數(shù)組中
            $row = mysqli_fetch_array($res, MYSQLI_ASSOC);

            //返回查詢結(jié)果
			// print_r($row);exit();
            return [true, $row];
        } else { //查詢失敗
            $errors[] = '郵箱或密碼不正確,請(qǐng)重新輸入';
        }
    }
    return [false, $errors];
}

運(yùn)行實(shí)例 ?

點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例


connect.php文件


實(shí)例

<?php
/醫(yī)院
*創(chuàng)建連接參數(shù): 因?yàn)檫B接參數(shù)不會(huì)經(jīng)常變化,所以推薦使用常量
*/
define('DB_HOST', 'localhost');	//數(shù)據(jù)庫(kù)地址名稱
define('DB_USER', 'root');		//數(shù)據(jù)庫(kù)用戶名
define('DB_PASS', 'root');		//數(shù)據(jù)庫(kù)密碼
define('DB_NAME', 'PHP');		//數(shù)據(jù)庫(kù)名稱
define('DB_CHAR', 'utf8');		//字符編碼集


//進(jìn)行數(shù)據(jù)庫(kù)鏈接
//連接失敗一定會(huì)返回錯(cuò)誤編號(hào),可以根據(jù)編號(hào)判斷,也可用 $db是否為false進(jìn)行判斷
$adc = mysqli_connect(DB_HOST, DB_USER, DB_PASS);

//判斷是否連接成功
//1.獲取 $adc 數(shù)值
if(mysqli_connect_errno($adc)){
	//如果連接失敗,給用戶一些提示
	echo "連接失敗".mysqli_connect_errno();
}

mysqli_select_db($adc, DB_NAME);	 //選擇要操作的數(shù)據(jù)庫(kù)
mysqli_set_charset($adc, DB_CHAR);	 //設(shè)置客戶端默認(rèn)字符編碼集

運(yùn)行實(shí)例 ?

點(diǎn)擊 "運(yùn)行實(shí)例" 按鈕查看在線實(shí)例


預(yù)覽效果圖:

用戶登錄界面:

1.png


登錄后預(yù)覽圖:

2.png


退出預(yù)覽圖:

3.png

目前主要是實(shí)現(xiàn)代碼功能,沒有考慮到界面美觀,加強(qiáng)代碼功能練習(xí)

批改狀態(tài):未批改

老師批語:
本博文版權(quán)歸博主所有,轉(zhuǎn)載請(qǐng)注明地址!如有侵權(quán)、違法,請(qǐng)聯(lián)系admin@php.cn舉報(bào)處理!
全部評(píng)論 文明上網(wǎng)理性發(fā)言,請(qǐng)遵守新聞評(píng)論服務(wù)協(xié)議
0條評(píng)論
作者最新博文
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費(fèi)學(xué)