استاید چند روزه یک مشکلی دارم. داخل سایت با 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.
در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)