后台登录(包含验证码)的php代码实现
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代码实现的更多相关文章
- 【代码审计】VAuditDemo 后台登录功能验证码绕过
在 admin/logCheck.php中 $_POST['user']和$_POST['pass'] 未经过任何过滤或者编码处理就传入到$query中,可能存在万能密码绕过机制 但是$pass经过了 ...
- DEDE后台登录和前台验证码不显示的解决方法
DEDE后台登录和前台验证码不显示的解决方法,网络上现在有好几种方法,某些时候还是有用的.说说自己今天遇到的一个情况,跟其他不一样的原因和解决方法: 方法一 1.用ftp把网站根目录下的DATA文件 ...
- dedecms后台登录如何去除验证码设置
dedecms后台验证有时间输入总是不对,有时候却不显示,而输入验证码无疑是一个麻烦的过程,那么我们怎么样来去除后台验证码,实现输入帐号密码直接登录呢?我来为大家介绍一下: 让人感到烦恼的情况出现了! ...
- .NET Core实战项目之CMS 第十六章 用户登录及验证码功能实现
前面为了方便我们只是简单实现了基本业务功能的增删改查,但是登录功能还没有实现,而登录又是系统所必须的,得益于 ASP.NET Core的可扩展性因此我们很容易实现我们的登录功能.今天我将带着大家一起来 ...
- Maven + SSM + Kaptcha 实现用户登录时验证码的获取(问题:302 Found)
pom.xml(对Kaptcha.jar的引用) <!-- 验证码 jar kaptcha--> <dependency> <groupId>com.github. ...
- 使用C#登录带验证码的网站
我在上一篇文章中已经讲解了一般网站的登录原来和C#的登录实现,很多人问到对于使用了验证码的网站该怎么办,这里我就讲讲验证码的原理和对应的登录方法.验证码的由来几年前,大部分网站.论坛之类的是没有验证码 ...
- YII学习,实现基于数据库的后台登录,用户体系.
上次研究Yii框架写到了要完成用户登陆系统.这次接着上次的写. 参考官方权威指南和参考手册,外加各种博客文章.历尽千辛万苦,数遍天上滴星星.完成了后台用户登录.这里用到了YII框架的 CUserIde ...
- flask-日料网站搭建-后台登录
引言:想使用python的flask框架搭建一个日料网站,主要包含web架构,静态页面,后台系统,交互,今天教大家实现后台登录功能,比较简单. 本节知识:表单标签,表单验证,数据查询,模板 pytho ...
- Yii 1.1.17 二、Gii创建后台与后台登录验证
一.用Gii创建后台模块 1.启用gii,在config/main.php 'gii' => array( 'class' => 'system.gii.GiiModule', 'pass ...
随机推荐
- bash内置命令mapfile:读取文件内容到数组
bash提供了两个内置命令:readarray和mapfile,它们是同义词.它们的作用是从标准输入读取一行行的数据,然后每一行都赋值给一个数组的各元素.显然,在shell编程中更常用的是从文件.从管 ...
- MySQL中间件之ProxySQL(11):链式规则( flagIN 和 flagOUT )
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.理解链式规则 在mysql_query_rules表中,有两个特殊 ...
- Perl输出复杂数据结构:Data::Dumper,Data::Dump,Data::Printer
输出复杂结构 Data::Dumper.Data::Dump.Data::Printer都可以用来输出复杂的数据结构.本文只介绍简单的几个输出形式,以后再需要的地方再详细介绍. 前两者建议传递数据结构 ...
- 加密的m3u8、ts文件合并
加密后的ts文件不能直接合并或播放,需要使用key对每个ts文件进行解密. 分为两种情况: (1).如果ts文件已经全部下载好,则可以直接在本地通过ffmpeg快速解密合并. (2).如果ts文件没有 ...
- 前端axios下载excel,并解决axios返回header无法获取所有数据的问题
需求:通过后端接口下载excel文件,后端没有文件地址,返回二进制流文件 实现:axios(ajax类似) 主要代码: axios:设置返回数据格式为blob或者arraybuffer 如: var ...
- 【Java每日一题】20170222
20170221问题解析请点击今日问题下方的“[Java每日一题]20170222”查看(问题解析在公众号首发,公众号ID:weknow619) package Feb2017; import jav ...
- Netty实战三之Netty的组件和设计
有关Netty,我们可以从两个视角来讨论Netty:类库的视角以及框架的视角,对于使用Netty编写高效的.可重用的和可维护的代码来说,两者缺一不可. Netty解决了两个响应的关注领域,可以大致标志 ...
- strdup strcpy 的区别
strdup可以直接把要复制的内容复制给没有初始化的指针,因为它会自动分配空间给目的指针 strcpy的目的指针一定是已经分配内存的指针
- laravel前后台路由分离
在laravel中创建文件放置前台和后台控制器 找到app/providers/RouteServiceProvider.PHP文件 在内配置 例: <?php namespace App\Pr ...
- ListView子项点击无反应的解决办法
在使用ListView控件的过程中,当子项包括Button或者CheckBoX等控件时,直接点击子项无反应,分析发现原来是Button,CheckBoX等控件会优先获取焦点,那么子项点击的焦点就被上述 ...