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;}