• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 3年前 (2022-01-23) 23次浏览 已收录 0个评论
文章目录[隐藏]

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<4之后确实发生了改变,但你能给我具体是怎么$x 限制的吗?

$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()的第五个参数就是指定写入什么东东

你先来本文来源[email protected]搞@^&代*@码)网9搞代gaodaima码个$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的魅力所在

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP创建验证码时,求一个参数的作用?

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址