سؤال

وهنا هو رمز بلادي لاستخدام حليقة:

class cURL {
    var $headers;
    var $user_agent;
    var $compression;
    var $cookie_file;
    var $proxy;
    var $process;

    function cURL($cookies = TRUE, $cookie = 'cookies.txt', $compression = 'gzip', $proxy = '') {
        $this->headers [] = 'Connection: Keep-Alive';
        $this->headers [] = 'Content-type: application/x-www-form-urlencoded;charset=UTF-8';
        $this->user_agent = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; Media Center PC 4.0)';
        $this->compression = $compression;
        $this->proxy = $proxy;      

        $this->cookies = $cookies;
        if ($this->cookies == TRUE)
            $this->cookie ( "c:/wamp/www/googlegroups/cookies/".$cookie );

        $this->process = curl_init ();
        curl_setopt ( $this->process, CURLOPT_HTTPHEADER, $this->headers );
        curl_setopt ( $this->process, CURLOPT_USERAGENT, $this->user_agent );

        if ($this->cookies == TRUE)
            curl_setopt ( $this->process, CURLOPT_COOKIEFILE, $this->cookie_file );
        if ($this->cookies == TRUE)
            curl_setopt ( $this->process, CURLOPT_COOKIEJAR, $this->cookie_file );

        curl_setopt ( $this->process, CURLOPT_ENCODING, $this->compression );
        curl_setopt ( $this->process, CURLOPT_TIMEOUT, 30 );
        if ($this->proxy)
            curl_setopt ( $this->process, CURLOPT_PROXY, $this->proxy );
        curl_setopt ( $this->process, CURLOPT_RETURNTRANSFER, 1 );
        curl_setopt ( $this->process, CURLOPT_FOLLOWLOCATION, 1 );
        curl_setopt ( $this->process, CURLOPT_SSL_VERIFYHOST, 0 );
        curl_setopt ( $this->process, CURLOPT_SSL_VERIFYPEER, 0 );
    }

    function __destruct(){
        curl_close ( $this->process );
        unlink($this->cookie_file);
    }

    function cookie($cookie_file) {
        if (file_exists ( $cookie_file )) {
            $this->cookie_file = $cookie_file;
        } else {
            if($fp = fopen ( $cookie_file, 'w' ))
            {
                fclose($fp);
            }
            else $this->error ( 'The cookie file could not be opened. Make sure this directory has the correct permissions' );
            $this->cookie_file = $cookie_file;
        }
    }
    function get($url) {
        curl_setopt ( $this->process, CURLOPT_POST, 0);
        curl_setopt ( $this->process, CURLOPT_URL, $url);
        $return = curl_exec ( $this->process );
        return $return;
    }

 }

$cc = new cURL();
echo $cc->get("http://127.0.0.1/googlegroups/testcookie.php");

وهذا هو نوع غريب جدا من حليقة لخلل أنني لم اشهد ابدا من قبل. وهذا هو الناتج من testcookie.php:

<اقتباس فقرة>   لم يتم تمكين

والكوكيز على هاتفك   المتصفح

وهنا هو شيء مضحك إذا قمت بإزالة إلغاء الربط ($ هذا-> cookie_file)؛ من وظيفة الدمار لن تحصل على حذف ملف تعريف الارتباط وفي المرة القادمة تشغيل هذا البرنامج النصي ستحصل

<اقتباس فقرة>   

ويتم تمكين الكوكيز في المتصفح

وشفرة المصدر testcookie.php:

setcookie("test","test");
if (isset ($_COOKIE['test']))
{
    echo "Cookies are enabled on your browser";
}
else
{
    echo "Cookies are <b>NOT</b> enabled on your browser";
}
هل كانت مفيدة؟

المحلول

وأنا لا أرى أين المشكلة. والضفيرة يفعل بالضبط ما يفترض أن تفعله.

وsetcookie () يحدد الكعكة في رأس استجابة إلى العميل. _COOKIE يحتوي على قيمة رأس في الطلب. إذا قمت بإزالة ملف الكوكيز، الضفيرة ليس لديه وسيلة لتستمر قيمة الكعكة التي تحددها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top