php curl验证码不加载,curl提交登陆信息遇到验证码问题

本文档描述了一个使用PHP cURL进行AJAX登录时遇到验证码错误的场景。问题在于通过cURL提交验证码时似乎导致了刷新,从而导致验证失败。代码示例展示了获取验证码、识别验证码、以及使用cURL发送登录信息的过程,但仍然存在一些问题。作者尝试解决验证码错误,但未成功。解决方案可能涉及正确处理cookie和会话状态。
摘要由CSDN通过智能技术生成

验证码,目前是找到URL,在前端网页上直接显示,然后手动输入。

在网页上用AJAX提交登陆信息可以正确返回。

我将同样的组合好的信息,传入后台PHP文件中,用curl提交,但每次都报验证码错误。

感觉起来好像是在php中提交又刷新了一次验证码,请问这个需要怎么解决?

借用了ty0716的代码试了一下,还是有一些问题,不明白要怎么处理。

直接取验证码地址,没有cookie保存。用登陆页面的地址,没办法取验证码来识别。

define('SCRIPT_ROOT',dirname(__FILE__).'/');

include "code.php";

function send($loginUrl, $cookieFile){

// $name = $_POST['name'];

// $idcard = $_POST['idcard'];

// $pw = $_POST['pw'];

// $code = $_POST['code'];

$code = getCode('http://www.xxx.com/Num.jsp');

header("Content-Type: text/html;charset=utf-8");

$post_data = "".$code;

return post($loginUrl, $post_data, $cookieFile);

}

function getCode($captchaUrl, $cookieFile){

$captchaString = get($captchaUrl, $cookieFile);

$tempCaptchaFile = SCRIPT_ROOT. date('YmdHis') . '.jpg';

file_put_contents($tempCaptchaFile, $captchaString);

$ocr = new code($tempCaptchaFile);

$captcha = $ocr->getCode();

echo $captcha;

return $captcha;

}

function get($url, $cookie_file, $isCookiesSave = false)

{

// 初始化

$curl = curl_init($url);

$header = array();

$header[] = 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36';

curl_setopt($curl, CURLOPT_HTTPHEADER, $header);

// 不输出header头信息

curl_setopt($curl, CURLOPT_HEADER, 0);

if ($isCookiesSave) {

curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_file);

} else {

curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);

}

// 保存到字符串而不是输出

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

// 是否抓取跳转后的页面

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

$info = curl_exec($curl);

curl_close($curl);

return $info;

}

function post($url, $data, $cookie_file)

{

// 初始化

$curl = curl_init($url);

$header = array();

$header[0] = 'User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36';

curl_setopt($curl, CURLOPT_HTTPHEADER, $header);

// 不输出header头信息

curl_setopt($curl, CURLOPT_HEADER, 0);

// 保存到字符串而不是输出

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);

// post数据

curl_setopt($curl, CURLOPT_POST, 1);

// 请求数据

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

// 是否抓取跳转后的页面

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

$response = curl_exec($curl);

curl_close($curl);

return $response;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值