Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: cURL и редирект
 
 автор: Zend72   (05.11.2008 в 04:04)   письмо автору
 
 

На сайте есть форма с помощью которой к теме можно приаттачить картинку.

<form name=f2 action="http://10.6.5.56/cgi-local/upload2pl.pl?bla&bla&bla" method="post" enctype="multipart/form-data">
<br><input type="file" name="file">
<input type="image">
</form>

Я с помощью cURL выполняю запрос:


<?php
$url 
"http://10.6.5.56/cgi-local/upload2pl.pl?bla&bla&bla";
$ch curl_init();
curl_setopt($chCURLOPT_URL$url);
curl_setopt($chCURLOPT_USERAGENT"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($chCURLOPT_REFERER"http://10.6.5.56/cgi-local/upload2pl.pl?bla&bla&bla");
curl_setopt($chCURLOPT_POSTFIELDS$postdata);
curl_setopt($chCURLOPT_COOKIEFILE$cookie); // Отправить cookie
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_HEADER1);
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
curl_setopt($chCURLOPT_NOBODY0);
$result curl_exec($ch);
echo 
'<pre>';
print_r(curl_getinfo($ch));
echo 
"\n\ncURL error number:" .curl_errno($ch);
echo 
"\n\ncURL error:" curl_error($ch);
echo 
'<br />';
curl_close($ch);
echo 
$result;
?>

Запрос выполняется и картинка, по всей видимости заливается, но после этого следует редирект и адрес там не абсолютный, т.е.: http://10.6.5.56/cgi-local/artpl.pl?bla&bla&bla, а относительный: artpl.pl?bla&bla&bla и перенаправление идет уже на мой сервер.

Теперь вопрос, как заставить cURL самостоятельно последовать по нужному абсолютному адресу?

PS
Исходя из того, что праметр curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); присутствует в коде все должно сработать, но почемуто не работает.

Интересное:

Array
(
    [url] => http://10.6.5.56/cgi-local/upload2pl.pl?com!at&name!at5812575162&comat!frazdel&art!&comnum!&news!&autor!&comment!&razdel!r1&tema!
    [content_type] => text/html; charset=ISO-8859-1
    [http_code] => 200
    [header_size] => 195
    [request_size] => 563
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 1.585
    [namelookup_time] => 0
    [connect_time] => 0.004
    [pretransfer_time] => 0.005
    [size_upload] => 73225
    [size_download] => 417
    [speed_download] => 263
    [speed_upload] => 46198
    [download_content_length] => 0
    [upload_content_length] => 73225
    [starttransfer_time] => 0.028
    [redirect_time] => 0
)


cURL error number:0

cURL error:
HTTP/1.1 100 Continue

HTTP/1.1 200 OK
Date: Wed, 05 Nov 2008 01:12:42 GMT
Server: Apache/1.3.33 (Win32) PHP/4.4.0
Transfer-Encoding: chunked
Content-Type: text/html; charset=ISO-8859-1

  Ответить  
 
 автор: Zend72   (05.11.2008 в 04:11)   письмо автору
 
   для: Zend72   (05.11.2008 в 04:04)
 

Так кажется понял! В коде старници присутствует:

<SCRIPT Langauge="JavaScript">
function gotoURL() {
window.location.href='artpl.pl?bla&bla&bla'
}
function TimerURL() {
setTimeout("gotoURL()", 1)
}
TimerURL()
</SCRIPT>


И если параметр curl_setopt($ch, CURLOPT_NOBODY, 0); присутствует в запросе, то echo $result; выводит его в мой браузер и он редиректит на несуществующий адрес. Как быть в такой ситуайии? Парсить страничку и делать еще один запрос на правильный адрес или есть средство обойти такую нестправедливость?

  Ответить  
 
 автор: Zend72   (05.11.2008 в 04:52)   письмо автору
 
   для: Zend72   (05.11.2008 в 04:11)
 

Ну в общем так я и поступил (парсим страничку и делаем правильный запрос) и думаю другого способа просто нет. Темболее это решение для отдельно взятого сайта, поэтому тему можно закрыть удилить и т.д. Всем прочитавшим спасибо, за то что проявили интерес к теме =)

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования