استاید چند روزه یک مشکلی دارم. داخل سایت با curl یا snoopy کامل لاگین میشه. حالا میام صفحه رو مثلا از صفحه رو سیو کنم یا file-get-contents کنم اما باز لاگین میخواد انگار سشن فقط برای کار با snoopy یا curl میمونه. راه حل چییه ؟
نمایش نسخه قابل چاپ
استاید چند روزه یک مشکلی دارم. داخل سایت با curl یا snoopy کامل لاگین میشه. حالا میام صفحه رو مثلا از صفحه رو سیو کنم یا file-get-contents کنم اما باز لاگین میخواد انگار سشن فقط برای کار با snoopy یا curl میمونه. راه حل چییه ؟
سلام.
بله سشن برای curl باز میمونه. دلیلش هم واضحه، چون فایل کوکی رو به curl میدید.
با استفاده از curl و تعریف مجدد فایل کوکی که هنگام لاگین استفاده شده، میتونید این کار رو انجام بدید.
در مورد snoopy نمیدونم چی هست . ولی اگر شما cookie ذخیره کنید و از curl_close استفاده کنید . در درخواست های بعدی دیگه این cookie معتبر نیست . شما در تابعی که باهاش لاگین میکنید و cookie نگه میدارید نباید از curl_close استفاده کنید تا cookie در دیگر توابع نیز قابل استفاده باشد .
قبل اینکه curl_close کنیم مثلا باید با تابع file-get-contents کار کنم ؟ یا باید یک curl جدید با COOKIEJAR ؟
- - - Updated - - -
حل شد. برای دوستانی که سول من رو دارن : (اگر لینکتون شناسایی یوز میخواد خودتون setopt کنید)
کد PHP:
function file_get_contents_curl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
من طبق تجربه ای که داشتم گفتم . در سیستم هایی که براساس session میان و کوکی ست میکنن با هر بار curl_close استفاده از اون کوکی امکان پذیر نیست و مجددا باید کوکی بگیرید .
البته این رو هم خوندم .
نقل قول:
You should only call curl_close() when you know you're done with that particular handle, or if switching from its current state to a new one (ie: changing a ton of options via curl_setopt() would be faster by going from a clean new handle than your current "dirty" one.