PHP cURL не хранит файл cookie сеанса … Как это исправить?

Я создаю класс для общения с нашей компанией API … Я использую завиток для публикации данных и получения ответа в json. В последней части кода (после класса) я регистрирую пользователя на сервере (он дает истину), но когда я пытаюсь подключиться снова с завитом, он говорит, что я не зарегистрирован! Я уже выполнил поиск google и добавил curl_setopt ($ ch, CURLOPT_COOKIE, $ this-> Session_Cookie); линия.

Кто-нибудь может рассказать мне об этом?

Заранее спасибо 😉

if(!class_exists("Microdual")) { class Microdual{ // No caso de a sessão não estar iniciada, iniciar aqui a sessão ################ ################ ################ ################ Iniciar funcoes privadas ################ private function Extra_LoadSession($varname,$otherwise){ return (!empty($_SESSION[$this->Session_Prefix . $varname])) ? $_SESSION[$this->Session_Prefix . $varname] : $otherwise; } private function Extra_SaveSession($varname,$value){ $_SESSION[$this->Session_Prefix . $varname] = $value; return true; } /** * $this->API_Comunicate() "Comunicar comandos com os servidores Microdual (enviar e receber)" * * @param data array "Colocar as variaveis que deseja passar à plataforma (Ver Lista completa de variaveis no Inicio)" * * @return array or void (false) */ private function API_Comunicate($_data){ // Converter o array em string (serialize) $data = array(); while(list($n,$v) = each($_data)){ $data[] = "$n=$v"; } $data = implode('&', $data); // format --> test1=a&test2=b etc. $ch = curl_init(); curl_setopt($ch,CURLOPT_URL,$this->Geral_URLAPI); curl_setopt($ch,CURLOPT_POST,count($_data)); curl_setopt($ch,CURLOPT_COOKIE,$this->Session_Cookie); curl_setopt($ch,CURLOPT_POSTFIELDS,$data); curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); $content = curl_exec($ch); curl_close($ch); if(($content !== false) && (!empty($content))){ return json_decode($content, true); }else{ return false; } } ################ ################ ################ ################ Iniciar funcoes Públicas ################ public function Debug_VarDump($varname){ $string = "<pre>"; $string .= var_dump($varname); $string .= "</pre>"; return $string; exit; } /** * $this->IsLogged() "Verificar se está autenticado no servidor (primeiro localmente, e depois liga ao servidor)" * * @return void */ public function IsLogged(){ if($logged) return true; $logged = $this->Extra_LoadSession("Login_Logged",false); if($logged){ return true; }else{ // Conectar ao servidor $dados = $this->API_Comunicate(array()); if($dados!==false){ if(!empty($dados['auth']['logged'])){ return $dados['auth']['logged']; }else{ return false; } }else{ return false; } } } /** * $this->Login() "Executar o Login nos servidores Microdual" * * @param username string "Colocar aqui o nome de utilizador da sua conta em www.microdual.com" * @param password string "Colocar aqui a password da sua conta em www.microdual.com" * * @return void */ public function Login($username,$password){ if(empty($username) || empty($password)) return false; if($this->IsLogged()) return true; $receive = $this->API_Comunicate(array( "type" => "auth", "action" => "add", "auth_username" => $username, "auth_password" => $password )); if($receive["auth"]["status"] && $receive["auth"]["logged"]){ $this->Extra_SaveSession("Login_Logged",true); $this->Login_Logged = true; return true; }else{ return false; } } /** * $this->SMS_Send() "Executar o Login nos servidores Microdual" * * @param number string "Colocar aqui o numero do telemovel para enviar sms" * * @return void */ public function SMS_Send($number,$msg){ // Guardar apenas os numeros $number = preg_replace("/[^0-9]/", "", $number); $msg = trim($msg); $receive = $this->API_Comunicate(array( "type" => "sms", "action" => "add", "sms_to" => $number, "sms_msg" => $msg )); return $receive; } ################ ################ ################ ################ Iniciar variaveis da class ################ private $Session_Prefix; private $Session_Cookie; private $Geral_URLAPI; private $Login_Logged; ################ ################ ################ ################ Iniciar dados da class ################ function __construct(){ $this->Session_Prefix = "MYCMSAPI_"; $this->Session_Cookie = "PHPSESSID=".$_COOKIE['PHPSESSID']."; path=/"; $this->Geral_URLAPI = "http://www.MYCOMPANY.com/MyapiURL"; $this->Login_Logged = $this->Extra_LoadSession("Login_Logged",false); } } } $Microdual = new Microdual(); if($Microdual->Login("usernamehere","password")){ $Microdual->Debug_VarDump($Microdual->SMS_Send("93211254","Teste Test Hi :)")); }else{ echo "Login com erro"; } 

Параметр CURLOPT_COOKIE предназначен для отправки определенного файла cookie с использованием CURL. Параметры, которые вы ищете, – CURLOPT_COOKIEFILE и CURLOPT_COOKIEJAR , которые определяют файл для сохранения и загрузки файлов cookie.

Поэтому вам нужно будет сделать что-то вроде этого:

 curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookies.txt'); curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookies.txt');