• Welcome to Journal web site.

我是 PHP 程序员

- 开发无止境 -

Next
Prev

实战:登录

Data: 2017-07-07 03:20:13Form: JournalClick: 10

# 实战:登录


# 一、创建管理员表

CREATE TABLE `admin` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '管理员ID',
  `account` varchar(50) NOT NULL COMMENT '账号',
  `password` char(32) NOT NULL COMMENT '密码',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

# 创建一个管理员账号
INSERT INTO admin(`account`,`password`)VALUES('admin','e10adc3949ba59abbe56e057f20f883e');

# 二、登录

<form method="post" action="">
    <div class="layui-form-item">
        <label for="L_loginName" class="layui-form-label">账号</label>
        <div class="layui-input-inline">
            <input type="text" id="L_loginName" name="account" required="" lay-verify="required" autocomplete="off" class="layui-input"/>
        </div>
        <div class="layui-form-mid layui-word-aux">请输入账号</div>
    </div>
    <div class="layui-form-item">
        <label for="L_pass" class="layui-form-label">密码</label>
        <div class="layui-input-inline">
            <input type="password" id="L_pass" name="password" required="" lay-verify="required" autocomplete="off" class="layui-input"/>
        </div>
        <div class="layui-form-mid layui-word-aux">请输入密码</div>
    </div>
    <div class="layui-form-item">
        <button class="layui-btn" lay-filter="*" lay-submit="">立即登录</button>
    </div>
</form>
<?php
    if(!empty($_POST)){
        # 判断传值
        if(empty($_POST['account'])){
            echo '<script>window.alert("请输入账号");history.back();</script>';
            return false;
        }
        if(empty($_POST['password'])){
            echo '<script>window.alert("请输入密码");history.back();</script>';
            return false;
        }

        # 账号查询
        $pdo = new PDO('mysql:host=localhost;dbname=boke', 'root' , 'root');
        $stmt = $pdo->prepare('SELECT * FROM admin WHERE `account`="'.$_POST['account'].'"');
        $stmt->execute();
        $arr = $stmt->fetchAll();
        $find = $arr[0];

        # 判断账号
        if(empty($find)){
            echo '<script>window.alert("账号不存在");history.back();</script>';
            return false;
        }
        if($find['password'] != md5($_POST['password'])){
            echo '<script>window.alert("密码不正确");history.back();</script>';
            return false;
        }
        echo '<script>window.alert("登录成功");window.location.href="article.php";</script>';
        return false;
    }
?>

# 三、超全局变量

变量描述
$_COOKIE常用于识别用户
$_SESSION存储关于用户会话(session)的信息
  • $_COOKIE
<?php
  setcookie('user','admin');
  print_r($_COOKIE);
  • $_SESSION
<?php
    # 碰到C盘没权限,可以更改盘符目录
    // session_save_path("D:/");
    session_start();
    $_SESSION['user'] = 'admin';
    print_r($_SESSION);

# 四、cookie 保存登陆信息

<?php
    if(!empty($_POST)){
        # 判断传值
        if(empty($_POST['account'])){
            echo '<script>window.alert("请输入账号");history.back();</script>';
            return false;
        }
        if(empty($_POST['password'])){
            echo '<script>window.alert("请输入密码");history.back();</script>';
            return false;
        }

        # 账号查询
        $pdo = new PDO('mysql:host=localhost;dbname=boke', 'root' , 'root');
        $stmt = $pdo->prepare('SELECT * FROM article WHERE `title`="'.$_POST['account'].'"');
        $stmt->execute();
        $arr = $stmt->fetchAll();
        $find = $arr[0];

        # 判断账号
        if(empty($find)){
            echo '<script>window.alert("账号不存在");history.back();</script>';
            return false;
        }
        if($find['password'] != md5($_POST['password'])){
            echo '<script>window.alert("密码不正确");history.back();</script>';
            return false;
        }

        setcookie('id',$find['id']);
        setcookie('account',$find['account']);
        echo '<script>window.alert("登录成功");window.location.href="article.php";</script>';
        return false;
    }
?>

# 五、判断登录状态

<?php
    if(!empty($_COOKIE['id'])){
        echo '<script>window.location.href="login.php";</script>';
        return false;
    }
?>
Name:
<提交>