Данные с cURL
1.
Сергей (24.08.2015 / 13:23)
Привет мастерам , подскажите как мне с запроса curl:
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, "http://adress.ru/search");
curl_setopt($ch,CURLOPT_HEADER,true);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$forma);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,0);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); curl_exec($ch);
curl_close($ch);
который выдаёт вот такой header:
HTTP/1.1 302 Moved Temporarily Server: nginx Date: Mon, 24 Aug 2015 10:11:38 GMT Content-Type: text/html; charset=UTF-8 Content-Length: 0 Connection: keep-alive Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Set-Cookie: Imperial=cc6f20153e3c027027292103db69b88f; path=/ Location: http://addres.ru/search/378305
вытащить Location: , а именно этот адрес:
http://addres.ru/search/378305
2.
iNeeXT (24.08.2015 / 13:42)
http://php.net/manual/ru/function.http-parse-headers.php
3.
Сергей (24.08.2015 / 14:06)
Подскажите как мне header который выдаёт curl загнать в переменную .
4.
Dmitry Kokorin (24.08.2015 / 14:17)
3.
LETGAM,
<?php
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, "http://adress.ru/search");
curl_setopt($ch,CURLOPT_HEADER,true);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$forma);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,0);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true); $result = curl_exec($ch);
curl_close($ch);
$var = http_parse_headers($result);
var_dump($var);
Если правильно понял
5.
Сергей (24.08.2015 / 14:37)
4.
DimmoS, Не работает твой вариант , выводит только header который отдаёт curl и всё .
Добавлено через 02:14 сек.
2.
iNeeXT, это могло бы и подойти но пока мне не ясно как применить .
6.
Dmitry Kokorin (24.08.2015 / 15:07)
5.
LETGAM, как ты результат вообще выводишь? Я в твоем коде вообще вывода не вижу
7.
Сергей (24.08.2015 / 15:32)
6.
DimmoS, curl отдаёт и выводит результат , но мне всё равно как его выводить , мне нужно редирект получить .
8.
mix (24.08.2015 / 15:34)
curl_setopt($ch,CURLOPT_RETURNTRANSFER,
1)
9.
Сергей (24.08.2015 / 15:34)
Пробовал curl_getinfo , получил только
http://adress.ru/search , а редирект не получается получить .
Добавлено через 01:52 сек.
8.
miх, и что это мне даст ?
10.
iNeeXT (24.08.2015 / 15:38)
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://byvlad.ru/mp3/index.php?query=beatles&sort=0&action=query&form=true");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_POST, true);
$forma = array();
curl_setopt($ch, CURLOPT_POSTFIELDS, $forma);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$response = curl_exec($ch);
curl_close($ch);
list($headers_raw, $resp) = explode("\r\n\r\n", $response, 2);
foreach (explode("\n", $headers_raw) as $header) {
if (stripos($header, 'Location:') !== false) {
$address = str_replace('Location: ', null, $header);
}
}
echo $address;
Сделал без функции http_parse_headers, так как она идет с модулем http, если он есть, то используй её.
11.
Tegos (24.08.2015 / 15:58)
Привет.
насколько понял, то что-то не то тебе советуют.
Установи просто CURLOPT_FOLLOWLOCATION в TRUE.
12.
Сергей (24.08.2015 / 16:21)
Всё зделал и проверил работает , кого интересует вот код:
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, "http://addres.ru/search");
curl_setopt($ch,CURLOPT_HEADER,true);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,$forma);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
curl_exec($ch);
$header=curl_getinfo($ch);
curl_close($ch);
echo $header['url'];
Добавлено через 00:55 сек.
10.
iNeeXT, сейчас ваш код проверю , для интереса .
13.
Сергей (24.08.2015 / 16:36)
10.
iNeeXT, возможно где то в вашем коде ошибка , потому что выводит это
http://addres.ru/error , а должно вывести что то вроде этого
http://addres.ru/go/12345 (цыфры изменяются) . Так как рабочий вариант есть считаю вопрос исчерпан , тему крою .
URL:
https://visavi.net/topics/42585