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

搜索
博主信息
博文 87
粉絲 0
評論 0
訪問量 71990
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
第八章:實戰(zhàn)cookie實現(xiàn)用戶登錄
黃忠倚的博客
原創(chuàng)
1257人瀏覽過

實例 index.php

<?php
$page_title = '首頁';

//導(dǎo)入頭部
include('inc/header.php');
echo '<h2 style="color:red">我是首頁</h2>';

//登錄檢測
if ((isset($_COOKIE['user_id'])) && basename($_SERVER['PHP_SELF']) != 'logout.php') {
    echo '<a href="logout.php">退出</a>';
} else {
    echo '<a href="login.php">登錄</a>';
}

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

運行實例 ?

點擊 "運行實例" 按鈕查看在線實例

實例 loggedin.php

<?php
//用戶沒有登錄的驗證
if(!isset($_COOKIE['user_id'])) {
    require ('inc/function.php');
    redirect_user();
}
//如果已經(jīng)登錄
//設(shè)置頁面標(biāo)題
$page_title = '已經(jīng)登錄';

//導(dǎo)入頭部
include ('inc/header.php');

//打印歡迎信息
echo <<< "WELCOME"
<h2 style="color:red">登錄成功</h2>
<p>歡迎您:{$_COOKIE['user_name']}</p>
<p><a href="logout.php">退出</a></p>
WELCOME;

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

運行實例 ?

點擊 "運行實例" 按鈕查看在線實例

實例 login.php

<?php

if($_SERVER['REQUEST_METHOD'] == 'POST') {
    //驗證用戶的郵箱和密碼
    //跳轉(zhuǎn)到指定的頁面

    //加載公共函數(shù)庫
    require ('inc/function.php');

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

    //驗證登錄
    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)頁面
        redirect_user('loggedin.php');
    }  else {
        $errors = $data;
    }
    //關(guān)閉連接
    mysqli_close($dbc);
}

//加載
include('login_page.php');

運行實例 ?

點擊 "運行實例" 按鈕查看在線實例

實例 login_page.php

<?php
/**
 * 用戶登錄頁面
 * 1.輸出用戶的錯誤信息
 * 2.輸出登錄表單:當(dāng)前的表單渲染
 */
$page_title = '用戶登錄';
//導(dǎo)入頭部
include('inc/header.php');

//打印錯誤信息
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">
    <p>
        <label for="email">郵箱:</label>
        <input type="email" name="email" id="email" value="<?php echo isset($_PSOST['email'])?$_POST['email']:' '?>">
    </p>
    <p>
    <label for="password">密碼:</label>
    <input type="password" name="password" id="password" value="<?php echo isset($_POST['password'])?$_POST['password']:'' ?>">
    </p>
    <p>
        <button type="submit" name="submit" id="submit">登錄</button>
    </p>
</form>

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

運行實例 ?

點擊 "運行實例" 按鈕查看在線實例

實例 logout.php

<?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);
}

//退出登錄
$page_title = '退出成功';
//導(dǎo)入頭部
include ('inc/header.php');

//打印歡迎信息
echo <<<"WELCOME"
<h2 style="color: red">退出成功</h2>
<p>歡迎您:{$_COOKIE['user_name']}</p>
<p><a href="login.php">登錄</a> </p>
WELCOME;

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

運行實例 ?

點擊 "運行實例" 按鈕查看在線實例

實例 inc/connect.php

<?php

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);

if (mysqli_connect_errno($dbc)) {
    echo '連接失敗'.mysqli_connect_error($dbc);
}
mysqli_select_db($dbc,DB_NAME);
mysqli_set_charset($dbc,DB_CHAR);

運行實例 ?

點擊 "運行實例" 按鈕查看在線實例

實例 inc/function.php

<?php
/**
 * 用戶自定義跳轉(zhuǎn)地址
 * @param string $page
 */
function redirect_user($page = 'index.php')
{
    //默認(rèn)地址
    $url = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']);

    //去掉右側(cè)的/,\
    $_url - rtrim($url, '/\\');

    //生成自定義跳轉(zhuǎn)地址
    $url .= '/'.$page;

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

    //退出當(dāng)前的函數(shù)或腳本
    exit();
}

/**
 * @param $dbc
 * @param string $email
 * @param string $password
 * @return array
 */

function check_login($dbc,$email='',$password='')
{
    //創(chuàng)建錯誤信息數(shù)組
    $errors = [];

    //驗證郵箱
    if(empty($email)){
         $errors[]= '郵箱地址不能為空';
    } else {
        $e = mysqli_real_escape_string($dbc,trim($email));
    }

    //驗證密碼
    if(empty($password)){
        $errors[]= '密碼不能為空';
    } else {
        $p = mysqli_real_escape_string($dbc,trim($password));
    }
        //非空驗證通過,即$error數(shù)組為空
    if(empty($errors)) {
        //根據(jù)郵箱與密碼來查詢用戶ID與用戶名
        $sql = "SELECT `user_id`,`user_name` FROM `user` WHERE `email`='$e' AND `password`=sha1('$p') "; //注意此處的FROM

            //執(zhí)行查詢
        $res = mysqli_query($dbc,$sql);
            //查詢成功應(yīng)該返回唯一一條記錄
        if(mysqli_num_rows($res) ==1) {
            //將查詢結(jié)果解析到數(shù)組中
            $row = mysqli_fetch_array($res,MYSQLI_ASSOC);

            //返回查詢結(jié)果
//            print_r($row);die();
//            print_r($row);exit();
            return [true, $row];

            //注意此處的return不要寫錯了!
        } else{
            $errors[] = '郵箱或密碼不正確,請重新輸入';
        }
    }

    return [false,$errors];
}

運行實例 ?

點擊 "運行實例" 按鈕查看在線實例

實例 inc/header.php

<!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
            echo isset($page_title) ? $page_title : '默認(rèn)標(biāo)題';
        ?></title>

</head>
<body>

<h3>我是公共頭部的代碼</h3>

運行實例 ?

點擊 "運行實例" 按鈕查看在線實例

實例 inc/footer.php

<h3>我是公共底部的代碼</h3>
</body>
</html>

運行實例 ?

點擊 "運行實例" 按鈕查看在線實例

實例 demo1.php

<?php
//1.設(shè)置cookies
setcookie('userName','Kevin Wong',time()+3600);
setcookie('email','KevinW@php.cn');

//2.查看:$_cookie
echo '用戶名:', $_COOKIE['userName'],'<br>';
echo '郵箱:', $_COOKIE['email'],'<br>';

//3.更新
//$_COOKIE['userName'] = 'aaa';
setcookie('userName','Kevin Wong');

//4.刪除
//方法:1
//setcookie('userName');
//方法:2
//setcookie('userName');
//方法:3
//setcookie('userName','',time()-3600);

運行實例 ?

點擊 "運行實例" 按鈕查看在線實例


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

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

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