Gå til innhold

cURL og lagring av cookie i fil


Anbefalte innlegg

Hei!

Jeg holder på med et cURL script, men jeg har et lite spørsmål ang. lagring av cookies i txt fil på serveren.

 

1. Hvis flere brukerer bruker scriptet på en gang, vil det da bli kluss med tanke på informasjonen som ligger i txt fila? Alltså slik at alle brukerene for informasjonen som den ene brukeren skrev inn?

 

2. Finnes det en annen måte å lagre det på en i en txt fil? Tenkte på sikkerheten, slik at andre folk ikke kan åpne filen for å se cookie informasjonen. Eller vil dette løse seg ved å legge txt filen utenfor public mappa?

 

 

Håper jeg fikk forklart det godt nok, og på forhånd takk for svar.. :)

Lenke til kommentar
Videoannonse
Annonse

Har fått et bra svar over på freakforum nå, men siden scriptet jeg lager trenger cookie informasjonen den ene gangen filen blir kjørt, så lurte jeg på om cURL hadde en funksjon for å lagre informasjonen til en string/variabel isteden?

Lenke til kommentar
Gjest Slettet-rXRozPkg
Har fått et bra svar over på freakforum nå, men siden scriptet jeg lager trenger cookie informasjonen den ene gangen filen blir kjørt, så lurte jeg på om cURL hadde en funksjon for å lagre informasjonen til en string/variabel isteden?

8893527[/snapback]

 

Ikke så vidt jeg vet; men det finns håp. Jeg har jobbet med cURL mot en Java-motor, og trengte å lagre cookies fra den i PHP-sesjonen.

 

curl_setopt($curlHandler, CURLOPT_HEADERFUNCTION, array(&$this, '_processHeader'));

 

Før curl_exec kjører jeg denne koden:

 

if(strlen($this->_getCookies())>0) {
 	curl_setopt($curlHandler, CURLOPT_COOKIE, $this->_getCookies());    
 }

 

_getCookies() returnerer cookies fra $_SESSION, denne sesjonsvariabelen blir satt med dette:

 

_processHeader er en callback-funksjon, som i mitt tilfelle ser slik ut:

	/**
 * Internal header processing function that is used by cURL (CURLOPT_HEADERFUNCTION) 
 * to fetch cookies sent from the server. The cookies are sotored in the current session
 * in the format cookie=value;cookie2=value2; and so on.  
 *
 * Quote from PHP.net:
 * "The name of a callback function where the callback function takes two parameters. 
 * The first is the cURL resource, the second is a string with the header data to be written. 
 * Using this callback function, it becomes your responsibility to write the header data. 
 * Return the number of bytes written."
 * 
 * @param cURL handler resource $curlHandler
 * @param string $header
 * @return integer, number of bytes in header
 */
protected function _processHeader($curlHandler, $header) {    

 if(!strncmp($header, "Set-Cookie:", 11)) {
 	$cookieString = trim(substr($header, 11, -1));
 	$cookie = explode(';', $cookieString);
 	$cookie = explode('=', $cookie[0]);
 	$cookiename = trim(array_shift($cookie));
 	$this->cookieArray[$cookiename] = trim(implode('=', $cookie));  	
 }  
   
 $this->headers[] = $header;

 $returnCookieString = "";
 if(strlen(trim($header))==0){
 	if(count($this->cookieArray)>0) {
   foreach ($this->cookieArray as $key=>$value) {
   	$returnCookieString .= "$key=$value;";
   }    
   $this->_setCookies($returnCookieString);

 	}
 }

 unset($cookie);
 unset($returnCookieString);
 
 return strlen($header); // <- do not trim(), this will cause a CURLE_WRITE_ERROR.
}

 

_setCookies er da en funksjon som lagrer $returnCookieString i $_SESSION.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...