2009-12-28 2 views
0

Я хочу удаленно скопировать файл с сервера на свой сервер с помощью PHP. сервера, который содержит файл требуется авторизация, поэтому я поставил разрешение (пользователь/пасс) в моей просьбе, как это:получить файлы cookie удаленный url

1 открытого сокет соединение $fp=fsockopen (....

2- установить запрос, как это : запрос

$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- посыла, как:

fputs ($fp, $request); 

это будет работать, но когда веб-сайт использует SESSION, он отправляет файлы cookie в браузер, и каждый раз, когда браузер хочет что-то с веб-сайта, сервер веб-сайта проверяет файлы cookie и отвечает.

Итак, когда я запрашиваю удаленный сервер из кода PHP (то есть у меня нет браузера для сохранения файлов cookie) Что делать, чтобы получать и хранить файлы cookie, которые отправляет удаленный сервер?

Я знаю, как использовать печенье в моей просьбе, я просто включить куки в мой запрос, как это:

 $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" 

Я не знаю, как я могу получить и хранить куки :(

идея

1- послать первый запрос без печенья

2- получать и хранить печенье

3 отправить запрос с печеньем и летать :)

как я могу сделать NO.2?

другое предложение: может я прочитал печенье из заголовка: Посмотрите на это один

HTTP/1.1 302 Moved Временно Content-Length: 0 Content-тип: текст/html сервер: вс-ONE-веб Сервер/6,1 Дата: Пн, 28 декабря 2009 11:01:05 GMT Set-Cookie: ERIGHTS = VQPFIWEdiYEtW4Eko2T3bikz4H2dDx2FtH-zlTTRFyzW + urkCU7bwGj2w ==, путь = /; домен = .example.org Set-Cookie: WLSESSION = +1512202892,20480 .0000; expires = Tue, 29-Dec-2009 11:01:06 GMT path =/Местоположение: http://example.org/example

ответ

1

Рассматривали ли вы использование Zend_HTTP. Он имеет очень хорошую обработку файлов cookie.

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