Скачать файл с сервера предварительно пройти авторизацию

12
Ezekiel
На сайте с 11.08.2010
Offline
28
#11

это не нужно


curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);

ты забыл


curl_setopt($ch, CURLOPT_POST, true);

также нужно сделать

$login = urlencode('***');

$paswd = urlencode('***');

Обмен WebMoney (http://bit.ly/kqBOlV) Продам инвайт на Хабр (http://www.plati.ru/asp/pay.asp?idd=1529255)
LEOnidUKG
На сайте с 25.11.2006
Offline
1728
#12

А ещё дамы и господа не забывайте, что куки нужно сохранять куда то :)

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
Ezekiel
На сайте с 11.08.2010
Offline
28
#13

посмотрел на сайт - тебе нужна базовая авторизация, а мой предыдущий пост - бред :) не слушай меня :)

---------- Добавлено 22.06.2012 в 19:57 ----------

$url = 'http://api2.gifts.ru/export/catalogue/1198.46_jpg_280x280b1.jpg';

$file = '/path/to/file/saved.jpg';
$user = 'sjsjsjsjsjsjsj';
$pass = 'vnfjvnjfnvjfn';
$f = fopen($file, 'w');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERPWD, $user . ":" . $pass);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FILE, $f);
curl_exec($process);
SeVlad
На сайте с 03.11.2008
Offline
1609
#14
Милованов Ю.С:
Это которая бывает бейсик/дайджест?

именно.......

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
M
На сайте с 03.06.2012
Offline
73
#15
Ezekiel:
посмотрел на сайт - тебе нужна базовая авторизация, а мой предыдущий пост - бред :) не слушай меня :)

---------- Добавлено 22.06.2012 в 19:57 ----------

$url = 'http://api2.gifts.ru/export/catalogue/1198.46_jpg_280x280b1.jpg';
$file = '/path/to/file/saved.jpg';
$user = 'sjsjsjsjsjsjsj';
$pass = 'vnfjvnjfnvjfn';
$f = fopen($file, 'w');
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_USERPWD, $user . ":" . $pass);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FILE, $f);
curl_exec($process);

Спасибо авторизация проходит успешно, и файл сохраняется. Если можно раскажите как кзнать какая авторизация на сервере что бы далее знать, а то код то работает но я не очень понимаю что он значит :)

Ezekiel
На сайте с 11.08.2010
Offline
28
#16

Даже не знаю, как объяснить... Да простят меня знатоки :)

Грубо говоря, есть 2 вида аутентификации:

Basic и Digest - это один тип (их два конечно же, но они очень похожи, поэтому я их записываю в один).

Второй тип - это аутентификация, через форму на сайте. Я не знаю как он по-научному называется :) Этот тип, например, используется на этом форуме, в гугле, вконтакте и т.д.

В случае с сайтом из этого топика - это Basic auth. Это видно по окну, которое просит пароль. Если видите такое окно, знайте - это Basic auth (или Digest).

Для работы с этим типом аутентификации, у curl'а есть опция CURLOPT_USERPWD, которая принимает строку "юзер:пароль". Это работает и для Basic и для Digest, т.е. на первых порах Вам простительно не отличать эти два типа.

Если бы, Вы пытались логинится на этом форуме, Вам следовало бы использовать что-то типа curl_setopt($ch, CURLOPT_POSTFIELDS,"LOGIN=".$login."&PASSWORD=".$paswd).

По коду:


//открываем файл на запись и получаем его дескриптор/идентификатор
$f = fopen($file, 'w');
//инициализируем курл и передаем нужный нам урл
$ch = curl_init($url);
//устанавливаем данные для аутентификации
curl_setopt($ch, CURLOPT_USERPWD, $user . ":" . $pass);
//говорим курлу, что ответ не нужно выводить в браузер (кстати, я не тестил, но возможно эта строка и не нужна :)) писал по памяти
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//говорим курлу что полученные по урлу данные хотим писать в файл и указываем дескриптор файла
curl_setopt($ch, CURLOPT_FILE, $f);
//запускаем всю эту хрень
curl_exec($process);

Как-то спутанно получилось написать, но надеюсь кому-нибудь пригодится.

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#17

ТС, basic и digest это авторизация которая проходит через сам веб-сервер. Для этого веб-серверу указывается какие страницы должны показываться авторизованому юзеру.

При бейсик авторизации посылается запрос вебсерверу вида login:password

При digest авторизации - login:md5(password)

А то что на форуме авторизация, ну другие, где Вы заполняете формы для авторизации это уже так сказать самодельная авторизация. Она уже работает как бэ без участия веб-сервера(PHP в случае с нашем форумом, ну и MYSQL для хранения данных).

Подпись))
M
На сайте с 03.06.2012
Offline
73
#18
Милованов Ю.С, Ezekiel

Огромное человеческое спасибо!

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий