Home >Backend Development >PHP Tutorial >PHP创建验证码时,求一个参数的作用?

PHP创建验证码时,求一个参数的作用?

WBOY
WBOYOriginal
2016-06-23 14:16:40978browse

PHP 验证码 $_POST[]


for($i=0;$i<$num;$i++){ 	$x=rand(1,8)+$imagewidth*$i/4;	$y=rand(1,$imageheight/4);	$font = ImageColorAllocate($im, rand(100,255),rand(0,100),rand(100,255)); // 生成随机颜色 	$authnum=rand(1,9); 	$vcodes.=$authnum; 	imagestring($im, 15, $x, $y, $authnum, $font); } 

在这个循环语句里,求$num的作用?

因为imagestring()函数的作用:向图像中添加数字。我认为$num肯定是用来限制向图像中添加数字的个数,
但是更改$num=4,$num=15 或者其他数字,图像中显示的仍然是4个字符。

还有我想弱弱的问一下,通过post和get传递的参数,比如login?id=2&value=3,这个id,value通过
$_POST或者$_GET获取之后,id和value的值是整数还是字符呀!

不想验证了,太麻烦,就大侠指教!!!

回复讨论(解决方案)

第一个问题 .你用$num=2试试  是不是还是四个数字? 
$x的计算方式导致只能显示四个数字而已

第二个问题 我也不清楚到底是字符还是整数期待高人回答,但是可以当字符用也可以当整数用  这是PHP的魅力所在 

第一个见楼上.

第二个字符串

你图片宽高已经固定了吧。。。

再看我一眼:
第一个问题 .你用$num=2试试  是不是还是四个数字? 
$x的计算方式导致只能显示四个数字而已

第二个问题 我也不清楚到底是字符还是整数期待高人回答,但是可以当字符用也可以当整数用  这是PHP的魅力所在  
修改$num

$x=rand(1,8)+$imagewidth*$i/4;
调整一下书写次序就清楚了
$x = $imagewidth / 4 * $i + rand(1,8);
其中:
$imagewidth / 4 把画布宽度分成 4 分
$imagewidth / 4 * $i 第 $i 个字符在画布上的起始位置
rand(1,8) 让起始位置再向有偏移若干点

当字符数超过 4 个的时候,并没有做任何限制,只是计算出的位置在画布以外。画了也白画

$x=rand(1,8)+$imagewidth*$i/4;
调整一下书写次序就清楚了
$x = $imagewidth / 4 * $i + rand(1,8);
其中:
$imagewidth / 4 把画布宽度分成 4 分
$imagewidth / 4 * $i 第 $i 个字符在画布上的起始位置
rand(1,8) 让起始位置再向有偏移若干点

当字符数超过 4 个的时候,并没有做任何限制,只是计算出的位置在画布以外。画了也白画

好像有点理解了,附带的问一下,如果想让生成的随机码里含有字母和数字,应该怎么改写?
希望大哥不吝赐教


$x=rand(1,8)+$imagewidth*$i/4;
调整一下书写次序就清楚了
$x = $imagewidth / 4 * $i + rand(1,8);
其中:
$imagewidth / 4 把画布宽度分成 4 分
$imagewidth / 4 * $i 第 $i 个字符在画布上的起始位置
rand(1,8) 让起始位置再向有偏移若干点

当字符数超过 4 个的时候,并没有做任何限制,只是计算出的位置在画布以外。画了也白画

好像有点理解了,附带的问一下,如果想让生成的随机码里含有字母和数字,应该怎么改写?
希望大哥不吝赐教

说真的如果你已经理解上边这个了  那只要看一下imagestring的几个参数就应该明白这个问题

imagestring()的第五个参数就是指定写入什么东东

你先来个$str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
然后每次从中随机取出一个字不就好了?

$str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";for($i=0;$i<$num;$i++){     $x=rand(1,8)+$imagewidth*$i/4;    $y=rand(1,$imageheight/4);    $font = ImageColorAllocate($im, rand(100,255),rand(0,100),rand(100,255)); // 生成随机颜色     $authnum=substr($str,rand(0,35),1);//从10个数+26个字母中随机选出一个     $vcodes.=$authnum;     imagestring($im, 15, $x, $y, $authnum, $font); } 

第一个问题 .你用$num=2试试  是不是还是四个数字? 
$x的计算方式导致只能显示四个数字而已

第二个问题 我也不清楚到底是字符还是整数期待高人回答,但是可以当字符用也可以当整数用  这是PHP的魅力所在 

仅代表世界人民感谢你一下。。。 ,马上给分!!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:建表单问题Next article:关于preg_match的问题