首页 > 编程语言 >入门PHP就来我这(高级)22 ~ 七天免登录案例

入门PHP就来我这(高级)22 ~ 七天免登录案例

时间:2024-07-11 13:01:27浏览次数:16  
标签:username 七天 php 22 登录 color width password PHP

有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享

路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。

 


 上文讲述了cookie的概念,创建,获取,销毁以及生命周期后,我们利用本文来实现一个小的案例,实现七天免登录的案例。

 七天免登录功能案例

1 创建users用户表,并添加一个用户。

CREATE TABLE `users` (
  `id` int(8) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `password` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 其中密码是md5处理过的密文
insert into `users` values('1','test','098f6bcd4621d373cade4e832627b4f6');

 2 创建登录页面login.php:

<!DOCTYPE html>
<html lang="en" class="is-centered is-bold">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>登录页面</title>
  <link href="css/login.css" rel="stylesheet">
</head>
<body>
  <section style="background: transparent;">
    <form class="box py-3 px-4 px-2-mobile"  role="form"  method="post" action="checklogin.php" onsubmit="return check()" >
   <div class="is-flex is-column is-justified-to-center">
    <h1 class="title is-3 mb-a has-text-centered">
        登录
    </h1>
    <div class="inputs-wrap py-3">
      <div class="control">
        <input class="input" type="text" id="username" name="username" placeholder="用户名"   required></input>
      </div>
      <div class="control">
        <input class="input" type="password" id="password" name="password" placeholder="密码"   required></input>
      </div>
      <div class="control">
        <button class="button is-submit is-primary is-outlined" type="submit">
          提交
        </button>
      </div>
    </div>
    <footer class="footer-box">
      <div style="display: inline-block">
        <input type="checkbox" name="keep" id="keep" checked value="">七天免登录
      </div>
      <a href="register.html">
        暂无账号,点击去登陆
      </a>
    </footer>
   </div>
    </form>
  </section>
  <script>
    function check(){
      if(document.getElementById("keep").checked){
        document.getElementById("keep").value =1;
      }
    }
  </script>
  
</body>
</html>

其中内部样式表login.css如下:

.title{

  color:rgb(116, 116, 116);
  font-size: 32px;
  text-align: center;

}

.box{
  width: 300px;
  height: 150px;
  background-color: #00f7ff;
}
.py-3{
  width: 200px;
  height: 30px;
  background-color: pink;
}
.is-flex{
  width: 300px;
  height: 350px;
  border: 15px solid #02632c;
  background-color: rgb(255, 255, 255);
}
.inputs-wrap{
  margin: 0 auto;
}
.control .input{
  width: 200px;
  height: 26px;
  margin-bottom: 25px;
  border: 1px solid #02632c;
  border-radius: 5px;
}
.control button{
  width: 200px;
  border-radius: 5px;
  border: 1px solid #9fb9aa;
  font-size: 16px;
  color: #363636;
  background-color: #b1f3cd;
  margin-left: 2px;
}
.footer-box{
  width: 240px;
  height: 100px;
  margin-top: 110px;
  margin-left: 45px;
  color: #02632c;
  font-size: 12px;

}
.footer-box input{
  float: left;
}
.footer-box a{
  float: right;
  font-size: 12px;
  color: rgb(248, 91, 91);
  text-decoration: none;
}

登录页面效果如下:

 3 创建checkLogin.php

接下来实现登录成功的检测,创建checkLogin.php用来检测:

<?php 
  if(isset($_POST['username']) && isset($_POST['password'])){
    $username = trim($_POST['username']);
    $password = md5(trim($_POST['password']));
    require "config.php";
    try {
      $pdo = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME,DB_USER,DB_PWD);

    } catch (PDOException $e) {
      echo $e->getMessage();
    }
    $sql = 'select * from users where username = :username and password = :password';
    $result = $pdo->prepare($sql);
    $result->bindParam(':username',$username);
    $result->bindParam(':password',$password);
    if($result->execute()){
        $rows=$result->fetch(PDO::FETCH_ASSOC);
        if($rows){
          if(isset($_POST['keep'])){
            //勾选七天免登录
            setcookie('username',$rows['username'],time()+604800);
          }else{
            setcookie('username',$rows['username']);
          }
          echo "<script>alert('恭喜您,登录成功!');
           window.location.href='index.php';</script>";
        }else{
          echo "<script>alert('用户名或密码错误,登录失败!');
           history.back();</script>";
           exit();
        }
    }else{
      echo "<script>window.location.href='login.php';</script>";
    }
  }
 
?>

checkLogin.php的config.php配置文件也给贴下面(不要嫌弃我啰嗦哦):

<?php
  define('DB_HOST','localhost');
  define('DB_USER','root');//你的数据库服务器登录用户
  define('DB_PWD','passwd');//替换成你的数据库服务器密码
  define('DB_NAME','db_test');//替换成你的数据库名
  define('DB_PORT','3306');
  define('DB_TYPE','mysql');
  define('DB_CHARSET','utf8');
  define('DB_DSN',"mysql:host=".DB_HOST.";dbname=".DB_NAME.";charset=".DB_CHARSET);
?>

此时你可以进行登录检测了。故意输入错误,会提示如下内容:

 4 登录成功的界面index.php:


<?php
date_default_timezone_set('PRC');
//如果cookie不存在,那就是第一次访问网站
if(!isset($_COOKIE["username"])){
    echo "<script>alert('请先登录');
           window.location.href='login.php';</script>";
}  
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>欢迎界面</title>
    <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="container">
    <div class="jumbotron" style="background-color:#17ecf1">
       <h1>欢迎
          <span style="color:white;font-weight:700">
            <?php echo $_COOKIE['username']; ?>

          </span>
          登录网站
       </h1>
       <p><a  class="btn btn-warning btn-lg" href="logout.php" role="button">退出登录</a></p>
    </div>
</body>
</html>

我们测试一下,登录成功后的效果,此时你拷贝这个连接到新开一个浏览器页面,会出现不需要登录就能成功进入主页。

顺手把退出登录的功能也给实现了logout.php:

<?php 
 setcookie("username","",time()-1);
 echo "<script>window.location.href='login.php';</script>";
?>

 此文到此接触!

 下一篇 Session


大家如果喜欢技术,并想有个好的交流平台可以关注我的 我的知乎首页,会不定期分享本人觉得比较好的技术类电子书。

另外,自己创建的一个技术qq群,玩转技术群,该群里功能:分享技能,电子书,源代码,以及兼职项目等交流,欢迎大家加入一起交流。

标签:username,七天,php,22,登录,color,width,password,PHP
From: https://blog.csdn.net/weixin_38298363/article/details/140348699

相关文章

  • SSM电商微信小程序 毕业设计-附源码09228
    摘 要随着微信小程序的使用越来越广泛,在传统的商业模式中,对于各类生活日常商品,人们习惯于到各种商家店铺购买。然而在快节奏的新时代中,人们不一定能为购买商品腾出时间,更不会耐心挑选自己想要的商品。所以设计一个电商微信小程序,既是迎合电子商务的大潮流,也是传统商品行业......
  • (免费领取源码)计算机毕业设计项目:宠物店管理系统 19849(开题答辩+程序定制+全套文案 )上
    目 录摘要1绪论1.1背景及意义1.2研究现状1.3springboot框架介绍2 宠物店管理系统系统分析2.1可行性分析2.2系统流程分析2.2.1数据流程3.3.2业务流程2.3系统功能分析2.3.1功能性分析2.3.2非功能性分析2.4系统用例分析2.5本章小结......
  • [题解] [ABC221H] Count Multiset - DP
    [ABC221H]CountMultiset题面翻译输入两个正整数\(N,M\),并存在一个集合,问你一个长度为\(k\)的合法集合存在多少个?你需要回答\(k\)的值为\(1\)到\(N\)的每种情况。一个合法的集合定义指长度为\(k\),元素和为\(N\),每一个数字在集合中出现的次数都小于等于\(M\)的集......
  • (免费领源码)Java/Mysql数据库+09536 SSM爱心捐赠物资维护系统,计算机毕业设计项目推荐上
    摘要随着信息技术的快速发展,计算机应用已经进入成千上万的家庭。随着物资数量的增加,物资库存管理也存在许多问题。物资数据的处理量正在迅速增加,原来的手工管理模式不适合这种形式。使用计算机可以完成数据收集、处理和分析,减少人力和物力的浪费。需要建立爱心捐赠物资维护系......
  • PHP 程序员是学 Swoole ?还是学 Go ?
    大家好,我是码农先森。面临现状这次为什么要讨论这个话题,因为Swoole和Go在PHP程序员坊间一直都是茶语饭后的谈资,觉得懂Swoole和Go的就高人一等。相信有很多的PHP程序员,自打Swoole发布以来就从来没有使用过。还记得Swoole官方有一遍入门文章中曾建议学习Swoole......
  • 坐牢第七天 20040710
    1.作业:完成学生管理系统1>使用菜单完成2>有学生的信息录入功能:输入学生个数,并将学生的姓名、分数录入3>查看学生信息:输出所有学生姓名以及对应的分数4>求出学习最好的学生信息:求最大值5>按姓名将所有学生进行升序排序6>按成绩将所有学生进行升序排序要求每个功能......
  • 22 HarmonyOS应用权限管控
    两种系统授权用户授权系统授权(配置文件)和用户授权(比较敏感的用户自己授权+弹窗授权)常见权限要在moudle.json5里面配置 用户授权相机设备位置开放匿名设备符麦克风读写问价等系统权限访问网络蓝牙后台运行打印马达等使用方法 1检查访问令牌是否有权限 2......
  • 280个地级市金融集聚水平数据(2006-2022年)
    2006年-2022年280个地级市金融集聚水平数据整理资源-CSDN文库金融集聚水平:衡量地级市金融发展的新维度金融集聚水平是衡量一个地区金融发展程度的重要指标,它反映了金融机构、金融资源、金融服务在特定时间和空间的集中程度。这一指标的评估可以从多个维度进行,包括金融机构的......
  • PHP环境集成面板使用教程
    “让天下没有难配的服务器环境!-phpStudy”phpStudy是一个PHP开发环境集成包,可用在本地电脑或者服务器上,该程序包集成最新的PHP/MySql/Apache/Nginx/Redis/FTP/Composer,一次性安装,无须配置即可使用,非常方便、好用!phpstudy2019年新推出的V8版本全新界面,支持最新php、mysql版......
  • springboot公寓租赁系统-计算机毕业设计源码03822
    目 录摘要1绪论1.1研究背景与意义1.2选题背景1.3论文结构与章节安排2 公寓租赁系统系统分析2.1可行性分析2.1.1技术可行性分析2.1.2经济可行性分析2.1.3法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析2.3系统用例分......