PHP使用COOKIE實現登錄功能和退出功能

創建一個名爲“bb”的數據庫,並創建一張“users”表,具體的數據庫語句和數據如下:

SET FOREIGN_KEY_CHECKS=0;

DROP TABLE IF EXISTS `users`;

CREATE TABLE `users` (

  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,

  `username` varchar(20) CHARACTER SET utf8 DEFAULT NULL,

  `password` varchar(32) CHARACTER SET utf8 DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
INSERT INTO `users` VALUES ('1', 'admin', '21232f297a57a5a743894a0e4a801fc3');

數據庫創建好添加數據後我們在建一個login.php文件,裏面的代碼如下:

<?php
    // 使用PDO連接數據庫
    $pdo = new PDO("mysql:host=localhost;dbname=bb","root","root");
    // 判斷do存在就執行裏面的程序
    if(isset($_POST['do'])){
        $user = $_POST['user'];
        $pass = md5($_POST['pass']);//..密碼使用md5加密
        // 準備SQL語句
        $stmt = $pdo->prepare("select id,username from users where username=? and password=?");
        // 執行SQL語句
        $stmt->execute(array($user,$pass));
        // 判斷查到數據影響行數大於0就執行裏面的程序(如果影響行數大於0,說明這個用戶時存在的,就讓登錄)否則不讓登錄
        if($stmt->rowCount()){
            $result = $stmt->fetch(PDO::FETCH_NUM);//`fetch從結果集中獲取下一行,返回一個索引以0開始的結果集列號的數組
            list($id,$username) = $result;//    list()函數用於在一次操作中給一組變量賦值
            $time = time() + 24 * 60 *60;
            setCookie("uid",$id,$time,"/");//..設置COOKIE
            setCookie("username",$username,$time,"/");//..設置一個用戶名COOKIE
            setCookie("isLogin",1,$time,"/");//..設置一個登錄判斷的標記isLogin
            // echo '<script>location="index.php"</script>';//..登錄成功跳轉到主頁
        }else{
            echo "<script>alert('登錄失敗請重新登錄)</script>";
        }
    }
    // 處理退出登錄的功能
    if(isset($_GET['do']) && $_GET['do'] == 'logout'){
        setCookie("uid",'',time() - 3600,"/");
        setCookie("username",'',time() - 3600,"/");
        setCookie("isLogin",'',time()-3600,"/");
        echo '<script>alert("退出成功");location="login.php"</script>';
    }
?>
<!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8" />
            <title>Document</title>
        </head>

        <body>
            <form action="login.php" method="post">
                <table width="400" cellpadding="10" cellspacing="0" border="1">
                    <tr>
                        <td>賬號:</td>
                        <td><input type="text" name="user"></td>
                    </tr>
                    <tr>
                        <td>密碼:</td>
                        <td><input type="text" name="pass"></td>
                    </tr>
                    <tr>
                        <td colspan="2"><input type="submit" value="登錄" name="do"></td>
                    </tr>
                </table>
            </form>
        </body>
    </html>

再創建一個index.php文件,裏面的代碼如下:

<?php
    // 判斷是否是登錄的,如果登錄的,我們纔可以通過 假如有這個變量$_COOKIE['isLogin'] = 1就是登錄了
    if(!(isset($_COOKIE['isLogin']) && $_COOKIE['isLogin'] == 1)){
        echo '<script>
            alert("你還沒有登錄,請登錄!");
            location = "login.php"
        </script>';
    }
    echo "你好{$_COOKIE['username']} | <a href='login.php?do=logout'>退出登錄</a>";
?>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章