zoukankan      html  css  js  c++  java
  • 夺命雷公狗---Redis---6-案例操作1(注册-登录)

    完成用户注册,用户登录,分页功能,完成数据的增删改查,添加好友的功能

    1、完成用户注册

    公共文件:redis.php

    注册页面:reg.php   

    处理注册用户的页面action.php

    用户列表页面:index.php

    登录页面:login.php

    我们要考虑reg发送数据到actrion页面后如何redis数据库

    废话不多说,开干

    使用哈希来存储注册的用户信息:

    如何构建存储用户的哈希的键

    $id = $redis->incr(‘id’);//没刷新一次+1和mysql里面的自动增长其实差不多

    user:id:$id   ==èhmset(user:id:$id,array(‘id’=>$id,’username’=>$username))

    因为连接redis属于一个公共文件,所以创建一个redis.php

    <?php
        $redis = new Redis();
        $redis -> connect('localhost',6379);
        $redis -> auth('123456');//因为我修改了配置文件的密码是123456

    下一步就开始写注册页面了reg.php

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title></title>
        </head>
        <body>
            <form action="action.php?act=reg" method="post">
                <table>
                <caption><h1>用户注册</h1></caption>
                    <tr>
                        <th>name</th>
                        <td><input type="text" name="username"></td>
                    </tr>
                    <tr>
                        <th>pass</th>
                        <td><input type="password" name="pass"></td>
                    </tr>
                    <tr>
                        <th>age</th>
                        <td><input type="text" name="age"></td>
                    </tr>
                    <tr>
                        <td align="rigth"><input type="submit" value="注册" /></td>
                        <td align="center"><input type="reset" value="重置"></td>
                    </tr>
                </table>
            </form>
        </body>
    </html>

    这里完事,下一步就到了注册成功跳转页面了index.php

    <?php
        header("Content-Type:text/html;charset=utf-8");
        echo "欢迎来到首页";
        echo "<a href='./action.php?act=unse'>清空session</a>";
        session_start();
        var_dump($_SESSION);

    下一步就开始写注册处理页了,action.php

    <?php
        header("Content-Type:text/html;charset=utf-8");
        require "redis.php";
        $act = isset($_GET['act']) ? $_GET['act'] : '';
        if($act == 'reg'){
            //完成用户注册处理
            //接收用户名和密码以及年龄
            $username = $_POST['username'];
            $password = $_POST['pass'];
            $age = $_POST['age'];
            $res = $redis -> get('username:'.$username);
    
            //判断下如果帐号是否存在
            if(!empty($res)){
                echo "<script>alert('抱歉,您的的用户名已存在!');window.location.href='./reg.php';</script>";die;
            }
            //生成自增的id
            $id = $redis -> incr('id');  //就算一开始没有id这个键,他也会自动增长的
            //构建哈希的键
            $key = "user:id".$id;
    
            //数据存储成哈希
            $redis -> hmset($key,array('id'=>$id,'username'=>$username,'password'=>$password,'age'=>$age));
    
            //把用户名和id的关系存储起来,便于在登录时验证
            //我们使用字符串类型来存储该关系'username:'.$username;作为字符串的键,值为id
            //$redis -> get('username:'.$username);//在存储前,验证下用户名是否存在
            $redis -> set('username:'.$username,$id);
            session_start();
            $_SESSION['username'] = $username;
            $_SESSION['user_id'] = $id;
            header("location:index.php");
        }else if($act=='login'){
            //处理登录的程序
            //接收输入的用户名和密码
            $username = $_POST['username'];
            $password = $_POST['pass'];
            //更具用户名找出id
            $id = $redis -> get("username:".$username); //取出存储的id
            if(!$id){
                echo "<script>alert('抱歉,您输入的用户名有误!');window.location.href='./login.php';</script>";die;
            }
    
            //根据id拼接哈希的键
            $key = "user:id".$id;
    
            //在哈希里取出密码的字段
            $pass = $redis -> hget($key,'password');
    
            //判断用户输入的密码和取出的密码是否一致
            if($password == $pass){
                //如果一样的证明是合法的用户
                session_start();
                $_SESSION['username'] = $username;
                $_SESSION['user_id'] =$id;
                header("location:index.php");
            }else{
                echo "<script>alert('抱歉,您输入的用户名或密码有误!');window.location.href='./login.php';</script>";die;
            }
    
        }else if($act =='unse'){
            session_start();
            session_destroy();
            header("location:login.php");
        }

    完事后开始测试注册两个帐号,然后查看redis里面没注册前数据时空的,注册后数据是否和这里的一样,如果一样,恭喜成功

    下一步就开始写登录页面了login.php,我们做的前提是要考虑下如何从redis里面将数据拿出来和用户输入进来的进行匹配

    决解的思路是:

    找到哈希的键,取出密码的字段进行匹配即可

    哈希的键我们目前只是知道user:id:$id,但这里面的$id我们可以根据用户输入的用户名找出id,只要id能找出来,那哈希的键也意味着找到了。

    这样说明我们刚才所做的注册还没完成做好,要把用户名和id的关系存储起来,才可以更加的便于在登录时候做验证。

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
        </head>
        <body>
            <form action="action.php?act=login" method="post">
                <table>
                    <caption><h1>用户登录</h1></caption>
                    <tr>
                        <th>name</th>
                        <td><input type="text" name="username"></td>
                    </tr>
                    <tr>
                        <th>pass</th>
                        <td><input type="password" name="pass"></td>
                    </tr>
                    <tr>
                        <td><input type="submit" value="提交"></td>
                        <td><input type="reset" name="重置"></td>
                    </tr>
                </table>
            </form>
        </body>
    </html>
  • 相关阅读:
    C#开发ActiveX控件并应用于网页
    C#编写ActiveX控件
    WPF Step By Step 系列5-Prism框架在项目中使用
    WPF Step By Step4- 自定义模板
    WPF Step By Step3- 控件介绍
    WPF Step By Step2 -基础知识介绍
    WPF Step By Step 系列1
    斑马打印机设定值取值优先级顺序
    WPF资料汇总
    linux(centos8):使用cgroups做资源限制
  • 原文地址:https://www.cnblogs.com/leigood/p/4959615.html
Copyright © 2011-2022 走看看