注册的时候 用问题验证 程序该怎么写

wang_youyu 2010-09-13 04:44:17
看到discuz 里面有个注册问题验证,就是说有人注册的时候,为了防止别人恶意注册,加入一条问题,如1+1= 如果注册者答对了就能注册,如果不对,就不能注册,这该怎么写,谁能给点思路,如果有写好的代码 发下也行
...全文
171 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
heyli 2010-09-13
  • 打赏
  • 举报
回复

<?php
session_start();

$sessionvar = 'vdcode'; //Session变量名称
$width = 150; //图像宽度
$height = 20; //图像高度

$operator = '+-*'; //运算符

$code = array();
$code[] = mt_rand(1,9);
$code[] = $operator{mt_rand(0,2)};
$code[] = mt_rand(1,9);
$code[] = $operator{mt_rand(0,2)};
$code[] = mt_rand(1,9);
$codestr = implode('',$code);
eval("\$result = ".implode('',$code).";");
$code[] = '=';

$_SESSION[$sessionvar] = $result;

$img = ImageCreate($width,$height);
ImageColorAllocate($img, mt_rand(230,250), mt_rand(230,250), mt_rand(230,250));
$color = ImageColorAllocate($img, 0, 0, 0);

$offset = 0;
foreach ($code as $char) {
$offset += 20;
$txtcolor = ImageColorAllocate($img, mt_rand(0,255), mt_rand(0,150), mt_rand(0,255));
ImageChar($img, mt_rand(3,5), $offset, mt_rand(1,5), $char, $txtcolor);
}

for ($i=0; $i<100; $i++) {
$pxcolor = ImageColorAllocate($img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
ImageSetPixel($img, mt_rand(0,$width), mt_rand(0,$height), $pxcolor);
}

header('Content-type: image/png');
ImagePng($img);
?>


要是不满意 可自己搜索 php 计算 验证码 php 数学验证码
xiaocai520 2010-09-13
  • 打赏
  • 举报
回复
session_start();
$a = round(1,10);
$b = round(1,10);
$c = $a+$b;
$_SESSION['str'] = "$a+$b=";
$_SESSION['c'] = $c;
任何页面都可以调用
wang_youyu 2010-09-13
  • 打赏
  • 举报
回复
明白你的意思,但是能力有限,写不出来啊 能不能写下啊
zccmy22 2010-09-13
  • 打赏
  • 举报
回复
其实这样也麻烦的,要是上面显示的数字可以判断,那么运算表达示理论上一样是可以被破解的。如果你实现起来困难,还是去找一个复杂一点的验证码机置好了。字符加数字的就可以。相对而言比较安全,如果可以加一个,点击才弹出验证码就更安全了。
zccmy22 2010-09-13
  • 打赏
  • 举报
回复
页面初始化时,两个随机数,再来一个随机运算符,计算个结果存入缓存或页面加密串,将表达示转成字符输出,最后判断用户的结果和你预算的结果是否一样就可以了。

个人想法。

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧