zoukankan      html  css  js  c++  java
  • PHP(基本语法)PHP中的Cookie---登录案例

    文件结构:

    login.html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        <form action="./loginCookie.php" method="post">  
            姓名:<input type="text" name="username" placeholder="请输入用户名"><hr>  
            密码:<input type="password" name="password" placeholder="请输入密码"><hr>  
            <input type="submit" value="提交按钮">  
        </form>  
    </body>
    </html>

    loginCookie.php:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  
    <?php
        include 'config.php';  
        /**1、连接数据库 */
        $conn = mysqli_connect(DB_HOST,DB_USER,DB_PWD,DB_NAME);  
        if(!$connect){  
            die("could not connect:".mysqli_error());  
        }else{
            echo "连接成功<br>"; 
            /**识别cookie,判断是否访问过,有无cookie或者是否过期 */
            if (($_COOKIE['username'] != null)&&($_COOKIE['password'] != null)) {  
                $userName = $_COOKIE['username'];
                $password = $_COOKIE['password'];
                /** 连接数据库,从db获取用户信息 */
                // $conn = mysqli_connect('localhost','root','root','login');
                $res = mysqli_query($conn,"select * from user where `username` =  '$userName' ");
                $row = mysqli_fetch_assoc($res);
                if ($row['password'] == $password) {
                    /** 验证通过后跳转到登录后的欢迎页面 */
                    header('location: welcome.php' . "?username=$userName");
                } 
            }else{  
                echo("上一个COOKIE过期");  
            }  
            /**如果第一次访问或者cookie过期则重新到数据库查找对比 */
            if(($_POST['username'] != null)&&($_POST['password'] != null)){  
                $userName = $_POST['username'];
                $password = $_POST['password'];
                /** 连接数据库,从db获取用户信息 */
                // $conn = mysqli_connect('localhost','root','root');
                // mysqli_select_db($conn,'login');
                $sql = "select * from user where `username` = '$userName' ";
                $res = mysqli_query($conn,$sql);
                $row = mysqli_fetch_assoc($res);/**从结果集中取得一行作为关联数组 */
                /**执行判断--用户名和密码是否正确 */
                if($row){
                    /**echo('用户名存在');用户名存在的情况下判断密码 */
                    if ($row['password'] == $password) {
                        /**
                         * 密码验证通过,设置cookies,把用户名和密码保存在客户端
                         * 设置时效一个月60*60*24*30,一个月后这个cookie失效。这里我们设置60s失效,为time()+60
                         */
                        setcookie('username',$userName,time()+60);
                        setcookie('password',$password,time()+60);
                        /** 最后跳转到登录后的欢迎页面 */
                        header('location: welcome.php' . "?username=$userName");
                    }
                }else{
                    /**不存在该用户 */
                    exit('用户名错误');
                }
            }else{  
                echo "请输入用户名或密码";  
            }  
        }
    
    
        /**5、关闭连接 */
        $close = mysqli_close($connect);  
        if(!$close){  
            die("关闭数据库失败");  
        }else{  
            echo "关闭成功";  
        }  
    ?>

    config.php:

    <?php
        //数据库服务器
        define('DB_HOST', 'localhost');
        //数据库用户名
        define('DB_USER', 'root');
        //数据库密码
        define('DB_PWD', 'root');
        //数据库名
        define('DB_NAME', 'login');
        //字符集
        define('DB_CHARSET', 'utf8');
    ?>

    welcome.php:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>    
    <?php  
        $user = $_GET['username'];
        echo "欢迎"."<h1>".$user."</h1>";  
    ?>  

    .

  • 相关阅读:
    HTML知识点链接
    Apache和PHP的安装
    MySql的安装
    MY_FIRSH_MODULE
    【PAT甲级】1053 Path of Equal Weight (30 分)(DFS)
    Atcoder Grand Contest 039B(思维,BFS)
    Codeforces Round #589 (Div. 2)E(组合数,容斥原理,更高复杂度做法为DP)
    Codeforces Round #589 (Div. 2)D(思维,构造)
    【PAT甲级】1052 Linked List Sorting (25 分)
    【PAT甲级】1051 Pop Sequence (25 分)(栈的模拟)
  • 原文地址:https://www.cnblogs.com/fightjianxian/p/14292373.html
Copyright © 2011-2022 走看看