Проблема с созданием php прокси - PullRequest
1 голос
/ 24 августа 2011

Я не могу заставить это работать:

<?php
    $url = 'http://someServer.com/save.asp?';

    $count = 0;

    foreach($_POST as $key=>$value) 
    {

        if( $count != 0 ) $url .= "&";

        $url .= urlencode($key).'='.urlencode($value);

        $count++;

    } 

?>
<html>
<head>
<meta http-equiv="refresh" content="0;url=<?php echo $url;?>">
</head>
<body>
</body>
</html>

Если я скопирую вывод последней строки $ url и вставлю ее прямо в браузер, она будет работать нормально.

Похоже, что $ url скомпилирован правильно, но есть проблема с перенаправлением.

// РЕДАКТИРОВАТЬ

Я пытаюсь заставить это работать:

<?php 


$str = '';

$count = 0;

foreach($_POST as $key=>$value) 
{
    if( $count != 0 ) $str .= "&";

    //$url .= urlencode($key).'='.urlencode($value);
    $str .= $key.'='.$value;

    $count++;
} 


$url = 'http://someDomain.com/acript.asp?'.$str; 


$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';

$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL,$url);
$result=curl_exec($ch);
var_dump($result);

?> 

Я получаю: Плохой запрос

Ответы [ 2 ]

1 голос
/ 24 августа 2011

Если вы хотите, чтобы это работало, не полагаясь на браузер, чтобы запросить страницу, удалите весь HTML и добавьте:

print file_get_contents($url);

в конце. если это не работает для вас (и может не работать по нескольким причинам), вам придется использовать - http://php.net/manual/en/book.curl.php.

Кроме того, чтобы создать правильный URL-адрес, вам не нужно перебирать $ _POST самостоятельно, используйте: http://php.net/manual/en/function.http-build-query.php

PS что бы вы ни пытались сделать, это, вероятно, неправильное решение.

0 голосов
/ 24 августа 2011

Ах, ваш cURL слишком сложный, он использует куки и заголовки, которые указывают, что запрос ожидает изображение. просто попробуйте это вместо:

$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)';

$ch = curl_init();
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
curl_setopt($ch, CURLOPT_URL,$url);
$result=curl_exec($ch);
var_dump($result);

если это по-прежнему не работает, просто используйте firebug, чтобы увидеть, какие заголовки отправляет браузер, и добавьте их, например так:

$headers = array("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7");

curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...