发布网友 发布时间:2022-04-06 03:27
共4个回答
热心网友 时间:2022-04-06 04:56
没明白你的意思, 验证码就是这样, 生成的时候将验证码写进session, 验证的时候取出来的肯定是上次生成那个.
能详细说一下你哪里不明白么?
------------------------------
我想你是没明白验证码的工作原理, 验证码多数情况是用来防止机器人自动发贴或注册而采取的一种验证手段, 在php中验证码多数用session来实现.
举个例子让你理解下流程.
1. 用户访问注册页面a.php
2. a.php输出了一个验证码b.php,实际上等于用户向b.php发送了一个请求.
3. b.php生成一个随机数$a, 并将这个随机数保存到session中, 然后将图片显示给用户
4. 用户填写注册表单并提交到c.php
5. c.php接受用户注册信息, 但在注册之前要从session中取出随机数$a和你提交上来的验证码做一下比较, 这个随机数$a是在b.php那个请求中生成的, 也就是在a.php中看到的那个图片. 比较如果相同那么同意你进行申请, 如果不相同则返回错误信息并跳转回a.php, 然后回到步骤1
这里我觉得你最应该了解的是session的作用,是用来在会话期间内在请求之间传递数据.
热心网友 时间:2022-04-06 06:14
session_start();
$str_number
=
trim($_POST['number']);
if(strtolower($_SESSION['rand'])==strtolower($str_number
)){
echo
"验证码正确";
}else{
echo
"验证码不正确";
}
最好加strtolower函数转换下大小写,这样子,用户在输入时就不用区分大小写了。不然用户体验会很麻烦,这是我个人理解。
热心网友 时间:2022-04-06 07:49
因为你打印$_SESSION是在图片被加载之前。把打印语句放到<img>元素之后去吧。
热心网友 时间:2022-04-06 09:40
不用怀疑自己所做,验证码就是这样做的。没错的!你把这个实际应用一下,就知道正确了。