有思俱乐部学习园地

登录退出流程,cookie增删查改。

这节课我们讲,PHP对cookie的设置,分别是增删查改。我们通过一个登录,注销的案列来完成本章节的教程。

1、登录,设置cookie

我们在cookie文件夹下新建一个cookie.html文件,新建完成后使用编辑器打开。在编辑器下敲入以下代码:
代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>cookie设置
    <script type="text/javascript" charset="utf-8" src="http://www.1473.cn/uform.js ">
</head>
<body>
    <input type="text" id="UN">
    <input type="text" id="UP">
    <input type="submit" onclick="login()">
</body>
</html>
<script>
    var login = function () {
        var _un = document.getElementById("UN").value,
            _up = document.getElementById("UP").value;
        U.A.Request("http://127.0.0.1:8081/Phpclass/cookie.php", [_un, _up], function (r) {
            //console.log(eval(r.value));
            console.log(r.value);
        });
    }
</script>
页面效果:
    我们要做的就是,通过输入用户名和密码,点击提交按钮,通过ajax访问我们的PHP文件,实现用户登录,并且对前端页面设置cookie的功能。
    接下来,我们在集成环境的目录中的WWW文件夹下新建一个cookie文件夹,在cookie文件夹下新建一个cookie.php文件,新建完成后使用编辑器打开。在编辑器下敲入以下代码:
代码:
<?php
if (isset($_REQUEST['mode'])) {
    //建立连接
    $m=mysqli_connect('*****','*****','*****',"UseStudio_PhpClass",'14062');    
    //判断如果数据库连接不成功
    if ($m->connect_error) {
        //返回错误,结束运行,退出脚本。
        echo json_encode(Array("Error" => $m->connect_errno . " - " . $m->connect_error));
        return;
    }
    //获取前台传过来的参数,以逗号的形式分割成数组
    $ary =  explode(",",$_REQUEST['mode']);
    //获取前台传过来的参数。即是用户名
    $un = urldecode(urldecode($ary[0]));
    //获取前台传过来的参数。即是密码
    $up = urldecode(urldecode($ary[1]));

    //$sql = 'select * from cxs_test where UserName = "'.$un.'" and UserPassWord = "'.$up.'"';
    //$sql = "select * from cxs_test where UserName='蔡旭升' and UserPassWord = '1'";
    $sql = 'CALL test("'.$un.'","'.$up.'")';
    //设置字符集
    $m->set_charset('utf8');
    //执行存储过程语句
    $res = $m->query($sql);
    //mysqli_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,
    $data = $res->fetch_array(MYSQLI_ASSOC);
    //foreach循环,判断结果集中是否有,我们自定义的mode字段,如果有代表密码或者用户名错误。如果没有代表用户输入的账号密码是正确的,并且返回用户信息设置cookie。
    foreach ($data as $key=>$value)
    {
        //判断结果集中是否有,我们自定义的mode字段,如果有代表密码或者用户名错误。返回数据库中的值,前端进行判断。
        if($key=="mode"){
            echo $value;             
            break;
        }
        //如果没有代表用户输入的账号密码是正确的,并且返回用户信息设置cookie。
        else{
            //输出结果集
            echo json_encode($data);
            //判断key值是否是用户id,如果是用户id,设置cookie字符串。
            if($key=="UserId"){
                //设置cookie字符串。
                $cookie = $key.'='.$value.'&UserName='.$un;                
                //设置cookie。
                //提供了2种设置cookie的方法,setcookie与setrawcookie,
                //二者的区别是:前者会自动对cookie值进行URL编码,而后者不会进行URL编码。
                setrawcookie("usestudiosso",$cookie);            
                //跳出循环
                break;
            }
        }
    }
    //关闭数据库连接
    mysqli_close($m);
}
?>
当以上代码输入完成后,我们在页面上输入用户名和密码,点击提交按钮,这是会看到,打开F12控制台,找到顶部Application,找到左侧Cookies一列,点击查看会发现页面有我们在php设置的cookie。

结果:

工作人员

 
                        
作者:蔡旭升
信息录入:蔡旭升
视频录制:方嘉威
视频编辑:方嘉威