php链接mysql实例之用户登录验证以及使用cookie登录

这篇博客实现用户登录验证以及使用cookie登录,它承接了前面的几个博客:
1. php连接mysql实例之新用户注册实现
2. php连接mysql实例之后台列表显示已注册的用户信息
3. php连接mysql实例之删除某条已注册的用户信息
4.php连接mysql实例之修改用户密码

我们先验证用户登陆,然后保存cookie,再次访问时不需要重复输入用户名和密码就可以登录。
首先介绍一下php中设置cookie的方法。
php中提供了一个函数来让我们设置cookie,这个函数是:

bool setcookie (
string [,string 名 字 [ , s t r i n g 值]
[, int =0][,string 过 期 时 间 = 0 ] [ , s t r i n g 路径]
[, string ][,bool 域 名 ] [ , b o o l 安全 = false]
[, bool http=false]); h t t p 只 读 = f a l s e ] ) ; 参 数 描 述 名字 必需。规定 cookie 的名称。
cookie 值 可 选 。 规 定 c o o k i e 的 值 。 有效期 可选。规定 cookie 的有效期。
cookie 路 径 可 选 。 规 定 c o o k i e 的 服 务 器 路 径 。 域名 可选。规定 cookie 的域名。
HTTPScookie 安 全 可 选 。 规 定 是 否 通 过 安 全 的 H T T P S 连 接 来 传 输 c o o k i e 。 http安读 可选。如果true,那么js就无法读取改cookie,增加安全性。

一般来说,我们其实用不到上面那么多参数,对于这个函数,我们一般这么用: setcookie(cookie名,cookie值,cookie有效期);

没错,就那么3个。如此一来,我们就可以在服务端通过$_COOKIE[‘name’] 来读取cookie了。
首先是一个用户登录的HTML文件—-denglu.html

<!DOCTYPE html>
<html>
<head>

</head>
<body>
<form action="cookie.php" method="POST">
    <div>
        用户名:<input type="text" name="username" />
        密  码:<input type="password" name="password" />
        <input type="submit" value="登录">
    </div>
</form>
</body>
</html>

对登录事件做出响应的就是cookie.php——她实现的功能有验证用户名与密码,如果正确则跳转到welcome.html,并切保存cookie。。。当下次需要访问时不必输入用户名和密码即可登录。cookie代码如下:

<?php
//第一次登陆的时候,通过用户输入的信息来确认用户
if ( ( $_POST['username'] != null ) && ( $_POST['password'] != null ) ) {
    $userName = $_POST['username'];
    $password = $_POST['password'];
    //从db获取用户信息
    //PS:数据库连接信息改成自己的 分别为主机 数据库用户名 密码
    $conn = mysqli_connect('localhost','root','password');

    mysqli_select_db($conn,'test');

    $sql = "select * from user where username = '$userName' ";
    $res = mysqli_query($conn,$sql);
    $row = mysqli_fetch_assoc($res);
    if ($row['password'] == md5($password)) {                           //md5(trim($_POST['password']))
        //密码验证通过,设置cookies,把用户名和密码保存在客户端
        setcookie('username',$userName,time()+60*60*24*30);//设置时效一个月,一个月后这个cookie失效
        setcookie('password',$password,time()+60*60*24*30);
        //最后跳转到登录后的欢迎页面
        header('Location: welcome.php' . "?username=$userName");
    }
}

//再次访问的时候通过cookie来识别用户
if ( ($_COOKIE['username'] != null)  && ($_COOKIE['password'] != null) ) {
    $userName = $_COOKIE['username'];
    $password = $_COOKIE['password'];

    //从db获取用户信息
    //PS:数据库连接信息改成自己的 分别为主机 数据库用户名 密码
    $conn = mysqli_connect('localhost','root','password','test');
    $res = mysqli_query($conn,"select * from user where username =  '$userName' ");
    $row = mysqli_fetch_assoc($res);
    if ($row['password'] == md5($password)) {
        //验证通过后跳转到登录后的欢迎页面
        header('Location: welcome.php' . "?username=$userName");
    }
}

?>

登录成功后的跳转的welcome页面如下:

<?php
$user = $_GET['username'];
?>
<html>
<head>

</head>
<body>
welcome,<?php echo $user;?>
</body>
</html>

这样,当我第一次访问cookie.php的时候,我需要输入用户名和密码,输入完毕后跳转到了welcome.php。然后我关闭浏览器,再次打开cookie.php,这次没有要求我输入用户信息,而是直接跳转到了welcome.php,因为之前我们存的cookie信息被浏览器自动发送到了服务端,服务端做完处理直接跳转到了welcome.php,服务器认识我们了!知道我是之前那个登陆过的用户,这样我们就通过cookie技术让无状态的HTTP协议保持了状态。

只不过!!!只不过!!!只不过!!!重要的事要说3遍,我们一般是不会把用户名和密码放到cookie中的,因为这并不安全,容易泄露自己的信息,请不要把重要的信息放到cookie中。我们这个只是一个学习cookie的例子。
本人也是菜鸟,也处在学习阶段,代码写的都很粗糙,大牛勿喷,如有错误烦请批评指正。

  • 0
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值