PDA

View Full Version : ذخیره عکس با استفاده از curl



mhabat
پنج شنبه 11 مهر 1392, 18:35 عصر
با سلام.
با استفاده از کد زیر می خوام تصویر رو ذخیره کنم ولی ذخیره نمیشه!

سورس:

<?php

function save_captcha($ch) {

$url = "http://musicshadbad.blogfa.com/comments/captcha.ashx?r=3234531&c=-499455707";
static $cookie = false;
if (!$cookie) {
$cookie = session_name() . '=' . time();
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_COOKIEJAR, COOKIE);
curl_setopt($ch, CURLOPT_COOKIEFILE, COOKIE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
$data = curl_exec($ch);curl_close($ch);
$captcha_tmpfile = '/captcha-' . rand(1000, 10000) . '.jpg';
$fp = fopen($captcha_tmpfile, 'w');
fwrite($fp, $data);
fclose($fp);
return $captcha_tmpfile; }
echo save_captcha($ch);
?>

MMSHFE
جمعه 12 مهر 1392, 10:55 صبح
اینو امتحان کنید:


$ch = curl_init();
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, trim($photo_url));
curl_setopt($ch, CURLOPT_USERAGENT, 'GoogleBot');
$raw = curl_exec($ch);
$fp = fopen(ROOT . '/images/' . $name, 'w');
fwrite($fp, $raw);
fclose($fp);

mhabat
جمعه 12 مهر 1392, 11:09 صبح
سلام. تشکر فراوان.
آقا بینید ما الان از طریق سورس بالا captcha رو میگیریم.
و از طریق یه تابع دیگه url مر بوط به یک فرم ثبت نام رو میگیریم.
حالا چطور میتونم از سشن ها استفاده کنم که وقتی کپچا رو وارد می کنم شبیه ساز این باشه که انگار یک کلاینت فرم ثبت نام رو باز کرده و کپچا رو دیده و حالا می خواد پرش کنه.
یه این طور کاری انجام میدم ولی کپچا ها مطابقت نمی کنند.
منظورمو گرفتین؟ خیلی جست و جو کردم و فقط یک سری کد های ناقص در نت وجود داشت که مربوط میشد به سایت ower flow که.

مثلا این تابع رو برای گرفتن url استفاده می کنم: کار هم می کنه:

function get_url($post="",$method="") {



$ch = curl_init(); $referer=" ";
curl_setopt($ch, CURLOPT_URL," ");
if ($method == 'post') {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
}
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_REFERER, $referer);

curl_setopt($ch,CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie334.txt');
curl_setopt($ch,CURLOPT_COOKIEFILE,dirname(__FILE_ _) . '/cookie334.txt');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$buffer = curl_exec($ch);curl_close($ch); return $buffer;
}

اون کد شما هم به عنوان یک تابع ازش استفاده می کنم و در خروجی نمایشش میدم و این که یه فیلد هم برای قرار دادن مقدار کپچا در نظر گرفتم:

$image=save_captcha(); echo "<img src=\"Captcha.jpg\"/>";
if(isset($_POST['dokme'])) {
$captcha=$_REQUEST['captcha'];
$field="field ha".$captcha;
echo get_url($field,"post");

}

?>
<form action="" method="post">
<input type="text" name="captcha"/>
<input type="submit" name="dokme"/>
</form>

اگر بتونید مشکل رو اوکی کنید کمک بزرگی به بنده کردین.
با تشکر