验证码参考:https://www.cnblogs.com/qqblog/p/7658782.html

session实现功能:https://www.runoob.com/w3cnote/php-session-login.html(关键词搜索:php登录页面session存储问题)

index.php(登录页面):

<?php
session_start();
if(empty($_SESSION['is_login'])){
?>
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><meta name="renderer" content="webkit"><meta name="force-rendering" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><title>后台登录</title><style type="text/css">*{padding: 0;margin: 0;}.layout{position: absolute;left: 50%;transform: translateX(-50%);-webkit-transform: translateX(-50%);-moz-transform: translateX(-50%);-ms-transform: translateX(-50%);}.list{border: 1px solid #ddd;display: inline-block;padding: 15px 50px;}.txt_p{text-align: center;font-size: 1.8rem;padding: 50px 0 10px 0;}.list span{display: inline-block;width: 100px;font-size: 1rem;padding: 8px 0;text-align: right;}.list input{padding: 5px 0;outline:none;border: 1px solid #ccc;-webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);-webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;-o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;}.list input:focus {border-color: #66afe9;outline: 0;-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);}.verify,.verify input,.verify img{vertical-align: middle;}.list .up_btn{padding-top: 20px;text-align: center;}.list .up_btn input{padding: 5px 10px;font-size: 1rem;border: 1px solid #2285ed;background-color: #FFF;margin: 0 10px;}.list .up_btn input:hover{background-color: #2285ed;color: #fff;}</style>
</head>
<body><p class="txt_p">后台登录</p><div class="layout"><form class="ajaxform list" action="./login_index.php" method="post"><div><span>用户名:</span><input type="text" name="user" value="" class="input-text" /></div><div><span>密码:</span><input type="password" name="password" value="" class="input-text" /></div>            <div class="verify"><span>验证码:</span><input type="text" name="captcha" placeholder="请输入图片中的验证码"><img src="./image_captcha.php"  onclick="this.src='image_captcha.php?'+new Date().getTime();"></div>       <div class="up_btn"><input type="submit" value="提交" class="submit" /><input type="reset"  value="重置" class="btn" /></div></div></form></div>
</body>
</html>
<?php }else{echo "<script>window.location.href='./list_pl.php'</script>";
}?>

login_index.php(验证页面):exit;很重要一定要加,不然程序不会验证验证码,输入用户名和密码就能登录进去了。

<?php
session_start();
header( "Content-type:text/html;charset=utf-8" );
$link = mysqli_connect( 'localhost' , 'root' , '123456' , 'login' );
if (! $link ) {die ( "连接失败:" .mysqli_connect_error());
}$user = trim($_POST['user']);//用户名
$password = trim($_POST['password']);//密码
$captcha = strtolower($_POST['captcha']);//接受从登陆输入框提交过来的验证码并转化为小写;
$captchaimg  = strtolower($_SESSION['captchaimg']) ;//从session中取得验证码并转化为小写;
if(empty($user) || empty($password)){echo "<script>alert('用户名密码为空!');window.location.href='./index.php'</script>";exit;
}elseif($captcha!=$captchaimg){echo "<script>alert('验证码错误!');window.location.href='./index.php'</script>";exit;
}
$rows=mysqli_fetch_array(mysqli_query( $link , "select * from login where user = '$user' and password = '$password'" ));
if($rows){$_SESSION['is_login']=$rows['user'];//设置一个session值echo "<script>alert('登录成功!');window.location.href='list_pl.php'</script>" ;
}else{echo "<script>'用户名或密码错误!';window.location.href='./index.php'</script>" ;
}
?>

list_pl.php(登录成功跳转的页面):

<?php
session_start();
if(empty($_SESSION['is_login'])){echo "<script>window.location.href='./index.php'</script>";
}else{$con = mysqli_connect('localhost','root','123456','tests');
mysqli_set_charset($con,'utf8');
if(!$con){
die('Could not connect:' . mysql_error($con));
}
$sql = "select * from news";
$result = mysqli_query($con,$sql);
$rows = array();
while($row = mysqli_fetch_assoc($result)){$rows[] = $row;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  <title>列表</title><style>*{padding:0;margin:0;}.pd-lr{padding: 10px 0px}.container{width: 1200px;margin: 0 auto;text-align: center;}.clearfix{display:block;}.clearfix::after{content: "";display: block;height: 0;clear: both;visibility: hidden;overflow: hidden;}.txt{font-size: 1.8rem;padding: 40px 0 20px 0;}table{border-color: #2285ed;}.container td{padding: 5px 0;}.container table a{text-decoration: none;color: #000000;}.container table a:hover{color: #2285ed;}.btn{border: 0;padding: 8px 10px;font-size: 1rem;border: 1px solid #2285ed;background-color: #FFF;}.btn:hover{background-color: #2285ed;color: #fff;}.txt2{display:inline-block;font-size: 1rem;/* line-height: 39px; */}.align-right{text-align: right;}.a1{margin-top: 10px;}.a1 a{text-decoration: none;color: #000000;border: 1px solid #000;padding: 5px 10px;display: inline-block;}.a1 a:hover{color: #2285ed;border-color: #2285ed;}</style></head><body>
<div class="container"><div class="align-right a1"><a href="./sign_out.php" class="">退出登录</a></div><p class="txt">表单信息</p><table width="100%" border="1" cellpadding="0" cellspacing="0">  <colgroup><col width="60" /><col width="60" /><col width="100" /><col width="80" /><col width="150" /><col width="150" /><col width="80" /><col width="150" /></colgroup><thead><tr>  <td width="30">全选:<input id="checkAll" type="checkbox"></td><td>id</td><td>客户名称</td><td>客户手机号</td><td>公司名称</td><td>客户需求</td><td>操作</td>    <td>提交时间</td>    </tr></thead><tbody><?php foreach($rows as $k => $v) {?><tr><td><input type="checkbox" name="box" value="<?= $v['id'] ?>" class="checkOne"></td><td><?php echo $v['id'];?></td>  <td><?php echo $v['username'];?></td>  <td><?php echo $v['userphone'];?></td> <td><?php echo $v['company'];?></td><td><?php echo $v['textarea'];?></td><td><a href="javascript:confirm_delete('del.php?sno=<?php echo $v['id'];?>')">删除</a><a href='modify.php?sno=<?php echo $v['id'];?>'>修改</a> </td> <td><?php echo $v['CreateTime'];?></td></tr><?php } ?></tbody></table><div class="pd-lr clearfix"><button style="float:left;" class="btn">批量删除</button><!-- 数据表的总条数 --><p style="float:right;" class="txt2">总共<span><?php$sql2 = "SELECT COUNT(*) FROM news"; //获取某一张表的所有数据$all_value = $con->query($sql2);  while ($nums=$all_value->fetch_assoc()) {   //输出每一行数据 echo ($nums['COUNT(*)']); //获取数据库总条数} ?></span>条</p></div> </div><script src="../js/jquery-1.12.4.min.js"></script><script>//  单项删除function confirm_delete(url){if(confirm('您确定要执行删除操作?')){window.location.href=url;}else{return false;}}// 全选,反选
$("#checkAll").on('change', function () {if ($(this).is(":checked")) { // 全选$(".checkOne").prop("checked",true);} else { // 反选$(".checkOne").prop("checked",false);}
});
// 批量删除
$('button').click(function(){var ids=$('.checkOne:checkbox');var str='';var count=0;for(var i=0;i<ids.length;i++){if(ids.eq(i).is(':checked')){str+=','+ids.eq(i).val();count++;}}var str=str.substr(1);if(confirm('你确定要删除这'+count+'条数据吗?')){//获取id后删除$.ajax({type:'GET',url:'admindel.php',// contentType: "application/json;charset=utf-8",data:{'str':str},// dataType:'json',//用get方法时不指定这项(可能是json数据不够严谨)success:function(res){if(res>0){for(var i=ids.length-1;i>=0;i--){if(ids.eq(i).is(':checked')){ids.eq(i).parent().parent().remove();}}}alert('删除成功!');window.location.reload();},error:function(data){ console.log("数据加载失败",data); } })}return false;});</script></body></html><?php }?>

sign_out.php(退出登录的页面):

<?php
session_start();
//  这种方法是将原来注册的某个变量销毁
unset($_SESSION['is_login']);
header("location:index.php");
/* 这种方法是销毁整个 Session 文件session_destroy(); */
?>

image_captcha.php(验证码生成页面):

<?php
/*** 字母+数字的验证码生成*/
// 开启session
session_start();
//1.创建黑色画布
$image = imagecreatetruecolor(100, 30);//2.为画布定义(背景)颜色
$bgcolor = imagecolorallocate($image, 255, 255, 255);//3.填充颜色
imagefill($image, 0, 0, $bgcolor);// 4.设置验证码内容//4.1 定义验证码的内容
$content = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";//4.1 创建一个变量存储产生的验证码数据,便于用户提交核对
$captcha = "";
for ($i = 0; $i < 4; $i++) {// 字体大小$fontsize = 10;// 字体颜色$fontcolor = imagecolorallocate($image, mt_rand(0, 120), mt_rand(0, 120), mt_rand(0, 120));// 设置字体内容$fontcontent = substr($content, mt_rand(0, strlen($content)), 1);$captcha .= $fontcontent;// 显示的坐标$x = ($i * 100 / 4) + mt_rand(5, 10);$y = mt_rand(5, 10);// 填充内容到画布中imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
}
$_SESSION["captchaimg"] = $captcha;//4.3 设置背景干扰元素
for ($$i = 0; $i < 200; $i++) {$pointcolor = imagecolorallocate($image, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200));imagesetpixel($image, mt_rand(1, 99), mt_rand(1, 29), $pointcolor);
}//4.4 设置干扰线
for ($i = 0; $i < 3; $i++) {$linecolor = imagecolorallocate($image, mt_rand(50, 200), mt_rand(50, 200), mt_rand(50, 200));imageline($image, mt_rand(1, 99), mt_rand(1, 29), mt_rand(1, 99), mt_rand(1, 29), $linecolor);
}//5.向浏览器输出图片头信息
header('content-type:image/png');//6.输出图片到浏览器
imagepng($image);//7.销毁图片
imagedestroy($image);
?>

php后台登录验证(含验证码)相关推荐

  1. php 验证码不正确,dedecms织梦网站后台登录一直提示验证码不正确

    原标题:dedecms织梦网站后台登录一直提示验证码不正确 有时候我们在登陆织梦网站后台的时候,我们按照上面显示的验证码进行输入:但是后台一直不能登录成功,一直提示验证码不正确,就是登不进去,但是我明 ...

  2. Spring Security登录验证,验证码,动态管理uri访问权限,Thymeleaf,限制密码强度、过期、错误密码锁定超时自动解锁、禁用历史密码、新密码和现密码差异要求编辑距离

    在本教程中,我将指导您如何编写代码,以使用具有基于表单的身份验证的Spring安全API来保护Spring Boot应用程序中的网页.用户详细信息存储在MySQL数据库中,并使用春季JDBC连接到数据 ...

  3. java web 怎么用solr_使用web过滤器增加solr后台登录验证

    solr后台自带是没有登录功能的,默认访问地址是:http://localhost:8983/solr/#/(内置jetty运行). 要给sorl后台增加登录验证方法: 1.使用web服务器的登录验证 ...

  4. flex制作一个用户登录框(含验证码)

    代码 <?xml version="1.0" encoding="utf-8"?>   <mx:Application xmlns:mx=&q ...

  5. dedecms织梦后台登录一直提示验证码错误

    织梦CMS程序后台登录提示成功登录后又返回登录界面,明明验证码填写正确却一直提示验证码错误 演示图 可能是以下情况引起 1.由于在后台-系统-核心设置,填写了 跨域共享cookie的域名 ,而你的跨域 ...

  6. 新浪微博模拟登录分析(含验证码)

    实验室项目结题需要爬取新浪微博的内容做实验,师兄提供了一份已实现的微博爬虫系统.本身可以轻松愉快的完成语聊收集这一部分,然而自己的微博账号始终登录失败.究其原因,结果是登录时需要验证码.而系统对于需要 ...

  7. Spring Security自定义登录验证,验证码,动态管理uri访问权限,Thymeleaf,限制密码强度、过期、错误密码锁定超时自动解锁、禁用历史密码、新密码和现密码差异要求编辑距离

    在本教程中,我将指导您如何编写代码,以使用具有基于表单的身份验证的Spring安全API来保护Spring Boot应用程序中的网页.用户详细信息存储在MySQL数据库中,并使用春季JDBC连接到数据 ...

  8. django框架下后台登录验证

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.中间件的设置 二.登录与退出 三,添加验证码 总结 前言 对于后台管理页面,需要设置 1.中间件:用来防止用户未登 ...

  9. 苹果CMS的V10版本后台登录一直提示验证码错误的解决方案

    今天,好奇的我准备 搭建一个电影网站,一切准备就绪,刚开始出现的问题是,不支持fileinfo,然后不能继续安装,这个的解决方案是: 直接在服务器里面查找文件:phop.ini文件,查找出来之后使用记 ...

  10. solr后台登录验证

    为什么80%的码农都做不了架构师?>>>    正确安装solr后,在浏览器访问http://localhost:8080/solr 就可以访问到solr的后台管理页面. 这样任何人 ...

最新文章

  1. 发推吐槽职场性别歧视后,苹果女高管被无限期行政休假
  2. linux ubuntu kubuntu与xubuntu等各版本差别
  3. linux密码修改时间,linux 查看、修改用户及密码过期时间(示例代码)
  4. php 画布插入图像,javascript – 如何在PHP中将html5画布图像保存到数据库
  5. sublime运行python代码python没显示_解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享...
  6. jstl 获取 javascript 定义的变量_前端开发大牛完整总结出了JavaScript 难点 +最新web前端开发教程...
  7. 剑指Offer - 面试题5. 替换空格(字符串)
  8. c语言 main函数
  9. JavaWeb初学者session的使用
  10. 云呐|固定资产盘点管理办法
  11. 微信小程序腾讯云实时语音转写
  12. Power Apps 中显示 SharePoint Online 数据
  13. md文件转换成word文档
  14. 阿里云跨云迁移工具案例实践:华为云迁移到阿里云
  15. iTunes_12.7 iPhone 自定义铃声
  16. 懂得选择,学会放弃,耐得住寂寞,经得起诱惑
  17. 点电荷分布matlab仿真,利用Matlab模拟点电荷的电场分布..doc
  18. 机器人香囊_原来这些穿古装的小孩都是假人,这些店铺都是卖香囊的
  19. 安装笔记本内存条及认识内存插槽
  20. 嵌入式linux下控制电机运动

热门文章

  1. 局域网监控软件:让员工上网行为规范形成自觉
  2. gps数据解析程序c语言,GPS数据采集分析要点
  3. 2019年软件评测师考试大纲
  4. 门窗计算机公式,门窗天使软件怎么编辑公式 公式输入方法
  5. SQL查询分析器SQL语句导入TXT文件
  6. 常用工具软件使用【1】
  7. APUE C内存空间详解图
  8. 51单片机对GPS卫星信号的解码并通过LCD1602或12864显示
  9. 写了一个3D彩票软件!
  10. Displaytag 详解