[php] Problem z ciastkami w curlu na wykupionym hostingu

0

Witam. Sprawdziłem wszystko i wychodzi na to, że cURL nie ma prawa do zapisywania ciasteczek na serwerze (wyczytałem gdzieś, że tak jest jak serwer ma włączony safe mode). A więc nie działają te opcje:

curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . $ciastko);
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . $ciastko);

Ja tego bardzo potrzebuję, ponieważ moja strona będzie się łączyć z inną stroną używając różnych loginów i haseł no i do tego przydałyby mi się ciastka. Jest jakiś sposób, żeby to ominąć? W ogóle po co jest takie zabezpieczenie? [???]

0

Sprawdzałem w manualu, wygląda na to że nawet kiedy safemode jest włączony - można ustawiać te opcje. Powiedz jakie komunikaty ci pokazuje. Stwórz plik $ciastko i nadaj mu prawa do zapisu...

0

Nie pokazuje żadnych komunikatów. A możesz mi na szybkości napisać jak dać prawa do zapisu jak już stworzę plik? Jeżeli jest tak jak piszesz to bardzo by mi pomogło.

0

$ciastko = '/cookies.txt';
Stworzyłem plik cookies.txt i nadałem mu atrybuty 777, chyba o to Tobie chodziło.
Dalej nic, plik w ogóle nie jest modyfikowany przez skrypt. Nie pojawiają się żadne komunikaty, server to ignoruje. Bardzo proszę o jakieś rozwiązanie (jeżeli istnieje). Pozdrawiam.

0
<?php
 class mycurl {
     protected $_useragent = 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1';
     protected $_url;
     protected $_followlocation;
     protected $_timeout;
     protected $_maxRedirects;
     protected $_cookieFileLocation = './cookie.txt';
     protected $_post;
     protected $_postFields;
     protected $_referer ="http://www.google.com";

     protected $_session;
     protected $_webpage;
     protected $_includeHeader;
     protected $_noBody;
     protected $_status;
     protected $_binaryTransfer;
     public    $authentication = 0;
     public    $auth_name      = '';
     public    $auth_pass      = '';

     public function useAuth($use){
       $this->authentication = 0;
       if($use == true) $this->authentication = 1;
     }

     public function setName($name){
       $this->auth_name = $name;
     }
     public function setPass($pass){
       $this->auth_pass = $pass;
     }

     public function __construct($url,$followlocation = true,$timeOut = 30,$maxRedirecs = 4,$binaryTransfer = false,$includeHeader = false,$noBody = false)
     {
         $this->_url = $url;
         $this->_followlocation = $followlocation;
         $this->_timeout = $timeOut;
         $this->_maxRedirects = $maxRedirecs;
         $this->_noBody = $noBody;
         $this->_includeHeader = $includeHeader;
         $this->_binaryTransfer = $binaryTransfer;

         $this->_cookieFileLocation = dirname(__FILE__).'/cookie.txt';

     }

     public function setReferer($referer){
       $this->_referer = $referer;
     }

     public function setCookiFileLocation($path)
     {
         $this->_cookieFileLocation = $path;
     }

     public function setPost ($postFields)
     {
        $this->_post = true;
        $this->_postFields = $postFields;
     }

     public function setUserAgent($userAgent)
     {
         $this->_useragent = $userAgent;
     }

     public function createCurl($url = 'nul')
     {
        if($url != 'nul'){
          $this->_url = $url;
        }

         $s = curl_init();

         curl_setopt($s,CURLOPT_URL,$this->_url);
         curl_setopt($s,CURLOPT_HTTPHEADER,array('Expect:'));
         curl_setopt($s,CURLOPT_TIMEOUT,$this->_timeout);
         curl_setopt($s,CURLOPT_MAXREDIRS,$this->_maxRedirects);
         curl_setopt($s,CURLOPT_RETURNTRANSFER,true);
         curl_setopt($s,CURLOPT_FOLLOWLOCATION,$this->_followlocation);
         curl_setopt($s,CURLOPT_COOKIEJAR,$this->_cookieFileLocation);
         curl_setopt($s,CURLOPT_COOKIEFILE,$this->_cookieFileLocation);

         if($this->authentication == 1){
           curl_setopt($s, CURLOPT_USERPWD, $this->auth_name.':'.$this->auth_pass);
         }
         if($this->_post)
         {
             curl_setopt($s,CURLOPT_POST,true);
             curl_setopt($s,CURLOPT_POSTFIELDS,$this->_postFields);

         }

         if($this->_includeHeader)
         {
               curl_setopt($s,CURLOPT_HEADER,true);
         }

         if($this->_noBody)
         {
             curl_setopt($s,CURLOPT_NOBODY,true);
         }
         /*
         if($this->_binary)
         {
             curl_setopt($s,CURLOPT_BINARYTRANSFER,true);
         }
         */
         curl_setopt($s,CURLOPT_USERAGENT,$this->_useragent);
         curl_setopt($s,CURLOPT_REFERER,$this->_referer);

         $this->_webpage = curl_exec($s);
                   $this->_status = curl_getinfo($s,CURLINFO_HTTP_CODE);
         curl_close($s);

     }

   public function getHttpStatus()
   {
       return $this->_status;
   }

   public function __tostring(){
      return $this->_webpage;
   }
}
?> 

Sprawdź czy użycie tej klasy pomoże, może masz jakieś braki w opcjach.

0

Z klasami jeszcze nie miałem do czynienia w php. Jak mam tego używać? Jakiś przykład?

0
$oCurl = new mycurl($url, $oraz, $reszta, $parametrow, $jak, $w, $__construct);
$oCurl->setPost($twoj_string_do_POST); // zakladam ze wysylasz post, skoro to sie ma logować
$oCurl->setReferer($twoj_referer_jak_potrzebujesz);
$oCurl->setCookiFileLocation($jezeli_chcesz_zmieniac_sciezke_do_cookies_to_tu_ja_wpisz_jak_nie_to_usun_linie); // domyslnie: ./cookie.txt
$wynik = $oCurl->createCurl();

1 użytkowników online, w tym zalogowanych: 0, gości: 1