login.html文件

<html>

<title>login in</title>

<body>

<form action="handle_login.php" method="post"/>

用户名:<input type="text" name="username"/><br/>

密码:<input type="password" name="password"/><br/>

验证码:<input type="text" name="imgcode"><img src="code.php" width="200px" height="30px"><br/>

<input type="submit" name="button" value="登陆">

</form>

</body>

</html>  

 

code.php文件

<?php

session_start();//首先要启动session

// Set the content-type

header("Content-type: image/png"); // 告诉浏览器当前文件产生的结果以png形式进行输出

 

// Create the image

$im = imagecreate(200, 30);  // 创建一张宽为200,高为30的画布

 

// Create some colors

$bg = imagecolorallocate($im, 155, 100, 255); // 给画布加上背景颜色

$white = imagecolorallocate($im, 255, 255, 255);  // 三原色白色

//$grey = imagecolorallocate($im, 128, 128, 128);

$black = imagecolorallocate($im, 0, 0, 0);  // 黑色

 

$numer_array = range(0,9); // 生成一个0到9范围的数组

$abc = range('a','z');     // 生成一个a到z范围的数组

$big_abc = range('A','Z');  // 生成一A到Z范围的数组

$big_chars = array_merge($numer_array,$abc,$big_abc); // 将上述三个数组进行合并

 

 

$font = 'simsun.ttc';  // 设定字体文件的路径

$myimagecode = '';

for($i=0;$i<4;$i++){

   $str = $big_chars[rand(0,61)]; // 从合并后的数组中随机取一个字符

   $myimagecode = $myimagecode.$str; //将这个验证码字符窜存入变量myimagecode中

   $a=50*$i;

   $b=50*($i+1);

   imagettftext($im, 20, 0, mt_rand($a,$b), mt_rand(20,30), $black, $font, $str); // 将取出的字符写在画布上

}

$_SESSION['thisimagecode'] = $myimagecode;

for($i=0;$i<200;$i++){

   imagesetpixel( $im,mt_rand(0,200),mt_rand(0,30),$white); // 给画布加上点

}  

 

for($i=0;$i<4;$i++){

    imageline($im, mt_rand(0,200),mt_rand(0,30), mt_rand(0,200), mt_rand(0,30),$black  ); //给画面加上线条

}       

 

imagepng($im);  // 将图像以png形式输出

imagedestroy($im);  // 将图像资源从内存中销毁,以节约资源

?>

 

handle_login.php文件

 

<?php

session_start();

#接受提交过来的用户名及密码

$username = trim($_POST['username']);//用户名

$password = trim($_POST['password']);//密码

$imgcode = strtolower($_POST['imgcode']);//接受从登陆输入框提交过来的验证码并转化为小写;

$myimagecode  = strtolower($_SESSION['thisimagecode']) ;//从session中取得验证码并转化为小写;

if($imgcode!=$myimagecode){

     echo '请输入正确的验证码';exit;

}

#拿着提交过来的用户名和密码去数据库查找,看是否存在此用户名以及其密码  

$link=mysql_connect('localhost','root','123456');

mysql_query('set names utf8');

$re=mysql_select_db('companysystem',$link);

$sql="select *from admin where username = '$username'and password='$password' ";

$result=mysql_query($sql);

$rows=mysql_fetch_assoc($result);

if($rows){

  $SESSION['is_login']=$rows['username'];

  echo '登陆成功';

 

}else{

  $is_login='';

  echo '登陆失败';

}

?>

后台登录(包含验证码)的php代码实现的更多相关文章

  1. 【代码审计】VAuditDemo 后台登录功能验证码绕过

    在 admin/logCheck.php中 $_POST['user']和$_POST['pass'] 未经过任何过滤或者编码处理就传入到$query中,可能存在万能密码绕过机制 但是$pass经过了 ...

  2. DEDE后台登录和前台验证码不显示的解决方法

    DEDE后台登录和前台验证码不显示的解决方法,网络上现在有好几种方法,某些时候还是有用的.说说自己今天遇到的一个情况,跟其他不一样的原因和解决方法:  方法一 1.用ftp把网站根目录下的DATA文件 ...

  3. dedecms后台登录如何去除验证码设置

    dedecms后台验证有时间输入总是不对,有时候却不显示,而输入验证码无疑是一个麻烦的过程,那么我们怎么样来去除后台验证码,实现输入帐号密码直接登录呢?我来为大家介绍一下: 让人感到烦恼的情况出现了! ...

  4. .NET Core实战项目之CMS 第十六章 用户登录及验证码功能实现

    前面为了方便我们只是简单实现了基本业务功能的增删改查,但是登录功能还没有实现,而登录又是系统所必须的,得益于 ASP.NET Core的可扩展性因此我们很容易实现我们的登录功能.今天我将带着大家一起来 ...

  5. Maven + SSM + Kaptcha 实现用户登录时验证码的获取(问题:302 Found)

    pom.xml(对Kaptcha.jar的引用) <!-- 验证码 jar kaptcha--> <dependency> <groupId>com.github. ...

  6. 使用C#登录带验证码的网站

    我在上一篇文章中已经讲解了一般网站的登录原来和C#的登录实现,很多人问到对于使用了验证码的网站该怎么办,这里我就讲讲验证码的原理和对应的登录方法.验证码的由来几年前,大部分网站.论坛之类的是没有验证码 ...

  7. YII学习,实现基于数据库的后台登录,用户体系.

    上次研究Yii框架写到了要完成用户登陆系统.这次接着上次的写. 参考官方权威指南和参考手册,外加各种博客文章.历尽千辛万苦,数遍天上滴星星.完成了后台用户登录.这里用到了YII框架的 CUserIde ...

  8. flask-日料网站搭建-后台登录

    引言:想使用python的flask框架搭建一个日料网站,主要包含web架构,静态页面,后台系统,交互,今天教大家实现后台登录功能,比较简单. 本节知识:表单标签,表单验证,数据查询,模板 pytho ...

  9. Yii 1.1.17 二、Gii创建后台与后台登录验证

    一.用Gii创建后台模块 1.启用gii,在config/main.php 'gii' => array( 'class' => 'system.gii.GiiModule', 'pass ...

随机推荐

  1. 开源项目filepond的独立自由之路:城市套路深

    微信原文更清晰:https://mp.weixin.qq.com/s/dv39XvvDNlDqvSgrhN2f7A 最近一直在做一个有关独立开发者友链联盟的插件项目,在做到上传头像时,满网络找最好的头 ...

  2. [PKUWC2018] Slay the spire

    Description 现在有 \(n\) 张强化牌和 \(n\) 张攻击牌: 攻击牌:打出后对对方造成等于牌上的数字的伤害. 强化牌:打出后,假设该强化牌上的数字为 \(x\),则其他剩下的攻击牌的 ...

  3. Go Web:数据存储(2)——CSV文件

    存储到CSV文件中 1.内存存储 2.CSV文件存储 3.gob序列化存储 本文接上一篇:内存存储. 关于CSV文件的说明,见csv文件格式 当数据存储到了内存中,可以在需要的时候持久化保存到磁盘文件 ...

  4. [转]USDT与omniCore钱包

    本文转自:http://www.cnblogs.com/red-evil/p/10039740.html USDTUSDT,又称为泰达币,是由Tether公司在 2015年推出的一种与美元锚定的加密货 ...

  5. PHP中如何给日期加上一个月/天

    使用php的strtotime实例:比如现在时间是“2017-07-06”,加一个月. echo date("Y-m-d", strtotime("+1 months&q ...

  6. 【Java每日一题】20170320

    20170317问题解析请点击今日问题下方的“[Java每日一题]20170320”查看(问题解析在公众号首发,公众号ID:weknow619) package Mar2017; public cla ...

  7. 【Java每日一题】20170215

    20170214问题解析请点击今日问题下方的“[Java每日一题]20170215”查看(问题解析在公众号首发,公众号ID:weknow619) package Feb2017; public cla ...

  8. python中的tcp

    目录 TCP简介 TCP介绍 TCP特点 TCP与UDP的不同点 udp通信模型 TCP通信模型 tcp客户端 tcp服务器 tcp注意点 TCP简介 TCP介绍 TCP协议,传输控制协议(英语:Tr ...

  9. 雪碧图和如何实现浏览器中title的小图标

    background-position 雪碧图 我们的html和css中有三个属性可以向服务器发送请求 ser href url 2.overflow (1) 值hidden 超出就隐藏 (2)值sc ...

  10. 在Java中进行序列化和反序列化

    对象序列化的目标是将对象保存在磁盘中,或者允许在网络中直接传输对象. 对象序列化允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久保存在磁盘上或者通过网络将这种二进制流传输 ...