уничтожать файлы cookie, созданные функцией входа CURL?

#php #curl

#php #curl

Вопрос:

у меня есть простая функция, которую я использовал для удаленного входа на другие веб-сайты с использованием curl и php, это функция

 public function Curllogin($url,$data,$proxy,$proxystatus)
    {
        $login = curl_init();
        curl_setopt($login, CURLOPT_COOKIEJAR,$this->SetCookieFile);
        curl_setopt($login, CURLOPT_COOKIEFILE,$this->SetCookieFile);
        curl_setopt($login, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
        curl_setopt($login, CURLOPT_TIMEOUT, 40);
        curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE);
        if ($proxystatus == 'on') {
            curl_setopt($login, CURLOPT_SSL_VERIFYHOST, FALSE);
            curl_setopt($login, CURLOPT_HTTPPROXYTUNNEL, TRUE);
            curl_setopt($login, CURLOPT_PROXY, $proxy);
        }
        curl_setopt($login, CURLOPT_URL, $url);
        curl_setopt($login, CURLOPT_HEADER, TRUE);
        curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
        curl_setopt($login, CURLOPT_FOLLOWLOCATION, TRUE);
        curl_setopt($login, CURLOPT_POST, TRUE);
        curl_setopt($login, CURLOPT_POSTFIELDS, $data);
        ob_start(); // prevent any output
        return curl_exec ($login); // execute the curl command
        ob_end_clean(); // stop preventing output
        curl_close ($login);
        unset($login);
    }
  

он работает без проблем при входе в систему
но я обнаружил небольшую проблему
допустим, я вхожу в example.com и передал имя пользователя и пароль в переменной $data
он войдет в систему без проблем
но при изменении значений $ data с использованием другого имени пользователя и пароля я регистрируюсь со старыми именем пользователя и паролем, которые использовались для последнего входа
игнорирование новой информации для входа
я пробовал все, например, удаление cookies.txt запишите файл и позвольте скрипту воссоздать его
я даже пытался очистить файлы cookie, кэшированные в моем браузере
но это не изменит его для использования новых данных
каждый раз при этом используются первые имя пользователя и пароль, которые я использовал для входа в систему
существует ли какая-либо функция для уничтожения файлов cookie, созданных CURL, или я что-то пропустил?

Ответ №1:

Просто измените свой $this->SetCookieFile на пустой файл, возможно, случайный файл во временном каталоге. Файлы cookie вашего «реального» браузера не имеют к этому никакого отношения, cURL управляет файлами cookie отдельно от этого.

Комментарии:

1. вы имеете в виду, что я создаю другую функцию, устанавливающую значение $this->SetCookieFile равным null, и вызываю эту функцию каждый раз, когда я использую его для выхода из системы?

2. CURLOPT_COOKIEJAR / CURLOPT_COOKIEFILE — это файл, в котором cURL хранит все полученные файлы cookie и берет файлы cookie для отправки обратно при любых запросах по мере необходимости. Аналогия с очисткой файлов cookie вашего браузера заключается в очистке этого файла.