2009-12-28 4 views
0

Je souhaite copier à distance un fichier d'un serveur vers mon serveur en utilisant PHP. le serveur qui contient le fichier a besoin d'autorisation, donc je mis l'autorisation (user/pass) dans ma demande, comme ceci:obtenir des cookies à partir de l'URL à distance

1- connexion socket ouvert $fp=fsockopen (....

2- mis la demande comme celui-ci :

$request = POST . " " . $url . " HTTP/1.1" . $nn . "Host: " . www.example.com:80 . $nn . "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14" . $nn . "Accept: */*" . $nn . "Accept-Language: en-us;q=0.7,en;q=0.3" . $nn . "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7" . $nn . "Pragma: no-cache" . $nn . "Cache-Control: no-chache" . $nn . "Connection: Close" 

3- Envoyer la demande comme:

fputs ($fp, $request); 

t Cela fonctionnera, mais quand un site web utilise SESSION, il envoie des cookies au navigateur et chaque fois que le navigateur veut quelque chose sur le site, le serveur du site web vérifie les cookies et répond. Donc, quand je demande à un serveur distant d'un code PHP (ie je n'ai pas de navigateur pour enregistrer les cookies) Que puis-je faire pour recevoir et stocker les cookies que le serveur distant envoie?

Je sais comment utiliser les cookies dans ma demande, je comprend tout le cookie dans ma demande comme ceci:

 $request = POST . " " . $url . " HTTP/1.1" . $nn . "Host: " . www.example.com:80 . $nn . "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14" . $nn . "Accept: */*" . $nn . "Accept-Language: en-us;q=0.7,en;q=0.3" . $nn . "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7" . $nn . "Pragma: no-cache" . $nn . "Cache-Control: no-chache" . $nn . $cookies . "Connection: Close" 

Je ne sais pas comment je peux recevoir et stocker les biscuits :(

l'idée est

1- envoyer une première demande sans cookies

2- recevoir et les cookies magasin

3 envoyer la demande avec des cookies et voler :)

comment je peux faire NO.2?

une autre suggestion: puis-je lire les cookies d'en-tête: regarder celui-ci

HTTP/1.1 302 Moved Temporarily Content-longueur: 0 Content-Type: text/html serveur: Sun-ONE-Web- serveur/6.1 date: 28 décembre 2009 11:01:05 GMT Set-cookie: = VQPFIWEdiYEtW4Eko2T3bikz4H2dDx2FtH-droits électroniques zlTTRFyzW + urkCU7bwGj2w ==; path = /; domain = .exemple.org Set-cookie: WLSESSION = 1.512.202.892,20480 .0000; expires = mar, 29-déc-2009 11:01:06 GMT chemin =/Lieu: http://example.org/example

Répondre

1

Avez-vous envisagé d'utiliser Zend_HTTP. Il a une très bonne manipulation des cookies.

$client = new Zend_HTTP_Client(); 
$client->setCookieJar(); //now all cookies are stored for this Zend_HTTP_Client 
Questions connexes