很多关注后端开发的朋友很希望了解php框架下验证码登录 php如何写注册登录验证码,今天我爱编程网为大家整理了相关文章,一起来看看吧!
PHP中模拟登录的验证码问题应该如何解决
基本思路:
首先获取一个cookies值,再带着这个cookies去获取验证码图片,你再带着验证码值和登录数据去模拟post登录。下面是一个模拟获取验证码的。
我爱编程网
这里忽略获取cookies的过程。注意文件为UTF-8无BOM格式
?php
header('Content-Type:image/png');
$url = "";//图片链接
$ch = curl_init();
//Cookie:PHPSESSID=121b1127dcded8702c6a1e702c40eca4
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_COOKIE,'PHPSESSID=121b1127dcded8702c6a1e702c40eca4');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_TIMEOUT,0);//忽略超时
curl_setopt($ch, CURLOPT_NOBODY, false);
$str = curl_exec($ch);
curl_close($ch);
php如何写注册登录验证码
authimg.php生成验证码的文件:
<?
$IsLetter = false; //是否出现字母
session_start();
$Num = $_GET["n"];
//生成验证码图片
header("Content-type: image/PNG");
$im = imagecreate(46,20);
srand((double)microtime()*1000000);
$Red = rand(0,200);
$Green = rand(0,200);
$Blue = rand(0,200);
$Color = imagecolorallocate($im, $Red, $Green, $Blue);
$BackGround = imagecolorallocate($im, 255,255,255);
imagefill($im,0,0,$BackGround);
if($IsLetter)
{
$a = substr(md5($Num*10000000000000000),0,1);
$b = substr(md5($Num*10000000000000000),4,1);
$c = substr(md5($Num*10000000000000000),8,1);
$d = substr(md5($Num*10000000000000000),12,1);
}
else
{
$a = substr(hexdec(md5($Num*10000000000000000)),2,1);
$b = substr(hexdec(md5($Num*10000000000000000)),3,1);
$c = substr(hexdec(md5($Num*10000000000000000)),4,1);
$d = substr(hexdec(md5($Num*10000000000000000)),5,1);
}
$Authnum = strtoupper($a.$b.$c.$d);
$_SESSION["Authnum"] = $Authnum;
imagestring($im, 5, 5, 2, $Authnum, $Color);
for($i=0;$i<200;$i++) //加入干扰象素
{
$randcolor = imagecolorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()p , rand()0 , $randcolor);
}
imagepng($im);
imagedestroy($im);
?>需要显示验证码的文件:
<?
session_start();
$AuthInput = $_POST["AuthInput"];
$action = $_GET["action"];
?>
<script language="javascript">
function lyalert(){
if( addform.AuthInput.value=="") {
alert("请填写验证码");
document.addform.AuthInput.focus();
return false;
}
}
</script>
<form name="addform" method="post" action="?action=save" id="addform" onsubmit="return lyalert()">
<table width="500" border="1" cellpadding="5" cellspacing="0">
<tr><td>验证码:</td>
<td><input name="AuthInput" type="text" id="AuthInput" size="8" maxlength="4" /><script>document.write("<img src=\"authimg.php?n=",Math.random(),"\" />");</script></td></tr>
<tr><td colspan="2" align="center"><input type="submit" name="Button1" value="确定" id="Button1" /></td>
</tr>
</table>
<p></p>
</form>
<?
if($action=='save')
{
if ($_SESSION["Authnum"] != $AuthInput)
{
?>
<script language="javascript">
alert("验证码输入不正确");
</script>
<?
}
else
{
?>
<script language="javascript">
alert("提交成功!");
</script>
<?
}
}
?>推荐:php服务器
php如何实现登录验证码
php实现登录验证码的方法:首先产生4到6位数的随机验证码;然后把产生的每个字符保存到session或数据库;接着将验证码发送到用户的手机;最后将和输入的验证码进行对比验证即可。
推荐:《PHP视频教程》
PHP实现简单的验证码功能机制
网站的安全性是开发者不可忽视的一个问题,目前使用最多的一种可以提高网站安全性的方法就是使用验证码功能机制,有的仅仅使用一个几位数字字母混乱的验证码,有的进行手机发送短信进行验证,有的使用邮箱发送邮件进行验证,但是这个验证码功能机制是如何实现的呢?下面就为大家详细解释验证码功能机制的实现思路以及简单的实现方法。
1、验证码功能机制实现思路
① 常规的验证码实现:
a、产生一张png的图片
b、为图片设置背景色
c、设置字体颜色和样式
d、产生4位数的随机的验证码
e、把产生的每个字符调整旋转角度和位置画到png图片上
f、加入噪点和干扰线防止注册机器分析原图片来恶意注册
g、输出图片
h、释放图片所占内存
i、将验证码保存到session或是数据库
j、将和输入的验证码进行对比
② 短信(邮箱)验证码机制:
a、产生4-6位数的随机的验证码
b、把产生的每个字符保存到session或是数据库
c、将验证码发送到用户的手机(邮箱)
d、用户在规定时间内进行输入
e、将验证码从session或是数据库中取出
f、将和输入的验证码进行对比验证
2、简单的实现验证码功能机制
① 新建captcha.php,写入以下代码
<?php
/**
* =======================================
* Created by WeiBang Technology.
* User: Wei ZhiHua
* Date: 2016/10/12 0020
* Time: 下午 4:14
* Power: 实现验证码功能
* =======================================
*/
//开启session
session_start();
//创建一个大小为 100*30 的验证码
$image = imagecreatetruecolor(100, 30);
$bgcolor = imagecolorallocate($image, 255, 255, 255);
imagefill($image, 0, 0, $bgcolor);
$captch_code = '';
for ($i = 0; $i < 4; $i++) {
$fontsize = 6;
$fontcolor = imagecolorallocate($image, rand(0, 120), rand(0, 120), rand(0, 120));
$data = 'abcdefghijkmnpqrstuvwxy3456789';
$fontcontent = substr($data, rand(0, strlen($data) - 1), 1);
$captch_code .= $fontcontent;
$x = ($i * 100 / 4) + rand(5, 10);
$y = rand(5, 10);
imagestring($image, $fontsize, $x, $y, $fontcontent, $fontcolor);
}
//就生成的验证码保存到session
$_SESSION['authcode'] = $captch_code;
//在图片上增加点干扰元素
for ($i = 0; $i < 200; $i++) {
$pointcolor = imagecolorallocate($image, rand(50, 200), rand(50, 200), rand(50, 200));
imagesetpixel($image, rand(1, 99), rand(1, 29), $pointcolor);
}
//在图片上增加线干扰元素
for ($i = 0; $i < 3; $i++) {
$linecolor = imagecolorallocate($image, rand(80, 220), rand(80, 220), rand(80, 220));
imageline($image, rand(1, 99), rand(1, 29), rand(1, 99), rand(1, 29), $linecolor);
}
//设置头
header('content-type:image/png');
imagepng($image);
imagedestroy($image);
?>② 新建form.php,写入以下代码
以上就是我爱编程网为大家带来的php框架下验证码登录 php如何写注册登录验证码,希望能帮助到大家,更多相关信息,敬请关注我爱编程网!