http://api.94qing.com/verify.php
这个地址
试了好多次不行 希望指导怎么获取这个地址的验证码写到本地目录并显示
回复讨论(解决方案) 获取到本地目录并显示...你的意图是?
@phpnewnew 显示验证码
获取到本地目录并显示...你的意图是?
获取到验证码 显示在网站要求用户输入验证码后继续调用该网站 我没看懂你的意思:
本地是指你自己的网站吗?如果是有两种方法:
1、
2|
$img=file_get_contents(http://api.94qing.com/verify.php);header(content-type:image/jpeg);echo $img;
希望对你有帮助
我没看懂你的意思:
本地是指你自己的网站吗?如果是有两种方法:
1、
2|
$img=file_get_contents(http://api.94qing.com/verify.php);header(content-type:image/jpeg);echo $img;
希望对你有帮助
那么获取改图片保存本地再读出呢
file_put_contents('图片文件名', $img);
但你这个连接是个验证码图片,带有 sessionid
当普通图片处理是不行的
想跨域....这个你要是做成个客户端 保持连接 那还是可以的...要是按照你现在的逻辑 本地网站套别人的网站...那你直接引用他的图片地址不就好了 模拟提交嘛
使用curl模拟获取验证码,同时将curl获取的cookie进行存储,等你发送数据的时候(curl发送数据)带上这个cookie
说白吧 --我研究出这个网站的api调用是这样的 论坛之前说的是访问存个cookie去调用 但是现在他加了一个验证码 验证码对了才能 所以 我想调用必须解决验证码问题-- 所以想到让访问用户自己打 因为 cookie的是一天内有效 所以 只要有一个人打了验证码就可以了 所以说获取这个图片到本地再显示 用户ip去获取的验证码似乎行不通
显然你的思路是正确的
写了一个测试例 session_start();header('content-type: text/html;charset=utf-8');include 'curl/curl_get.php';$url = 'http://api.94qing.com/';if(isset($_get['img'])) { curl_get($url); echo curl_get($url . 'verify.php'); exit;}switch(1) { case isset($_post['code']): $_session['94qing'] = $_post['code']; curl_get($url . ?code=$_post[code]); case isset($_session['94qing']): echo curl_get($url?type=time); break; default: echo <<< formform; exit;}
第一次进入会有输入验证码的表单,以后再刷新就不需要了
为简单起见,只示例了获取当前时间的 api
curl_get 函数已经贴过多遍了,只是涵盖了常见的设置
就再贴一遍吧 function curl_get($durl, $data=array()) { $cookiejar = realpath('cookie.txt'); $t = parse_url($durl); $ch = curl_init(); curl_setopt($ch, curlopt_url,$durl); curl_setopt($ch, curlopt_timeout,5); curl_setopt($ch, curlopt_ssl_verifypeer, 0); curl_setopt($ch, curlopt_useragent, $_server['http_user_agent']); curl_setopt($ch, curlopt_referer, http://$t[host]/); curl_setopt($ch, curlopt_cookiefile, $cookiejar); curl_setopt($ch, curlopt_cookiejar, $cookiejar); curl_setopt($ch, curlopt_returntransfer,1); curl_setopt($ch, curlopt_encoding, 1); //gzip 解码 curl_setopt($ch, curlopt_followlocation, true); if($data) { curl_setopt($ch, curlopt_post, 1); curl_setopt($ch, curlopt_postfields, $data); } $r = curl_exec($ch); curl_close($ch); return $r;}