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>";
?>
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值