
因为你的验证码是在已经输出了<=$_SESSION['vcode']>之后才去读取的,当读取时,生成的是新的验证码,但是你在输出session到隐藏的input里面时,还没有被浏览器加载,所以验证码上的数字和隐藏的不同!
输出session是在服务器端
而加载却是在HTML代码被发送到浏览器端之后
他们是不同步的
验证码不能直接放在HTML里发送给客户端的,这样的话要不要验证码没有什么意义!验证码是为了防止不法登录(暴力破解)而设置的,如果你把验证码放在HTML代码里,那么对于暴力破解就失去意义了
function check_verify($code, $id = ''){
$verify = new \Think\Verify();
return $verify->check($code, $id);
}
可直接使用tp自带的验证码校对方法
而验证码信息储存在session里面快捷的方式直接打开 临时文件查看验证码数组是虾米
二去查看源代码 看他的储存位置
三打印session
大哥!!!
哪里没有起作用了啊!????
checknumphp
你看最后一行你写了什么???
session_destroy();
你都销毁了所有的SESSION
那么你在code_checkphp
肯定是看不到 $_SESSION['CODE'];的啊!!!
你删除session_destroy();看下
还有就是你在code_checkphp这个页面中
$_SESSION['CODE'];大小写错了!!!
应该是$_SESSION['code'];,拜托以后看清楚啊!!
基本思路:
首先获取一个cookies值,再带着这个cookies去获取验证码,你再带着验证码值和登录数据去模拟post登录。下面是一个模拟获取验证码的。
这里忽略获取cookies的过程。注意文件为UTF-8无BOM格式
phpheader('Content-Type:image/png');
$url = ">
curl就可以了
<phpheader('Content-Type:image/png');
$url = "链接";//链接
$ch = curl_init();
//Cookie:PHPSESSID=121b1127dcded8702c6a1e702c40eca4
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_COOKIE,'这里是你的cookies');
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 获取验证码session值问题全部的内容,包括:php 获取验证码session值问题、thinkphp 3.2 中怎么获取验证码的值、php 验证码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)