Прокси-сервер PHP и вызов кода JSON? - PullRequest
0 голосов
/ 14 августа 2011

Исходя из этого вопроса Я использую код, указанный в одном из ответов.

Вот код:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>

<body>



<?php

$server_url = "http://www.nfl.com/liveupdate/scorestrip/ss.json";

$options = array
(
    CURLOPT_HEADER         => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_TIMEOUT        => 60,
    CURLOPT_CONNECTTIMEOUT => 0,
    CURLOPT_HTTPGET        => 1
);

$service = $_GET["service"];

$request_headers = Array();
foreach($_SERVER as $i=>$val) {
        if (strpos($i, 'HTTP_') === 0) {
                $name = str_replace(array('HTTP_', '_'), array('', '-'), $i);
                if ($name != 'HOST')
                {
                    $request_headers[] = "{$name}: {$val}";
                }
        }
}

$options[CURLOPT_HTTPHEADER] = $request_headers;

switch (strtolower($_SERVER["REQUEST_METHOD"]))
{

    case "post":
        $options[CURLOPT_POST] = true;
        $url = "{$server_url}/services/".$service;

        $options[CURLOPT_POSTFIELDS] = file_get_contents("php://input");

        break;
    case "get":

        unset($_GET["service"]);

        $querystring = "";
        $first = true;
        foreach ($_GET as $key => $val)
        {
            if (!$first) $querystring .= "&";
            $querystring .= $key."=".$val;
            $first = false;
        }

        $url = "{$server_url}/services/".$service."?".$querystring;

        break;
    default:
        throw new Exception("Unsupported request method.");
        break;

}

$options[CURLOPT_URL] = $url;

$curl_handle = curl_init();

curl_setopt_array($curl_handle,$options);
$server_output = curl_exec($curl_handle);
curl_close($curl_handle);

$response = explode("\r\n\r\n",$server_output);
$headers = explode("\r\n",$response[0]);

foreach ($headers as $header)
{
    if ( !preg_match(';^transfer-encoding:;ui', Trim($header))  )
    {
        header($header);
    }
}

echo $response[1]; 


?> 



</body>
</html>

К сожалению, я получаюпочему это происходит из-за следующих ошибок:

Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с C: \ inetpub \ vhosts \ allencoded.com \ httpdocs \ test.php: 12) в C: \ inetpub \ vhosts \ allencoded.com \ httpdocs \ test.php в строке 88 Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с C: \ inetpub \ vhosts \ allencoded.com \ httpdocs \ test.php: 12) в C: \ inetpub \ vhosts \ allencoded.com \ httpdocs \ test.php в строке 88 Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с C: \ inetpub \ vhosts \ allencoded.com\ httpdocs \ test.php: 12) в C: \ inetpub \ vhosts \ allencoded.com \ httpdocs \ test.php в строке 88 Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с C: \ inetpub \ vhosts\ allencoded.com \ httpdocs \ test.php: 12) в C: \ inetpub \ vhosts \ allencoded.com \ httpdocs \ test.php в строке 88 Предупреждение. Невозможно изменить информацию заголовка - заголовки уже отправлены (выходные данные начинаются с C: \ inetpub \ vhosts \ allencoded.com \ httpdocs \ test.php: 12)в C: \ inetpub \ vhosts \ allencoded.com \ httpdocs \ test.php в строке 88 Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с C: \ inetpub \ vhosts \ allencoded.com \ httpdocs \ test.php: 12) в C: \ inetpub \ vhosts \ allencoded.com \ httpdocs \ test.php в строке 88 Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с C: \ inetpub \ vhosts \ allencoded.com \httpdocs \ test.php: 12) в C: \ inetpub \ vhosts \ allencoded.com \ httpdocs \ test.php в строке 88 Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с C: \ inetpub \ vhosts \allencoded.com \ httpdocs \ test.php: 12) в C: \ inetpub \ vhosts \ allencoded.com \ httpdocs \ test.php в строке 88 Предупреждение: невозможно изменить информацию заголовка - заголовки уже отправлены (вывод начался с C: \Inetpub \ виртуальных доменов \ allencoded.com \ httpdocs \ test.php: 12) в C: \ inetpub \ vhosts \ allencoded.com \ httpdocs \ test.php в строке 88 HTTP / 1.1 404 Not Found Сервер: Apache Content-Type: text / html;charset = iso-8859-1 Кодировка содержимого: gzip Длина содержимого: 224 Контроль кэша: max-age = 7146 Срок действия: сб, 13 авг 2011 22:12:11 GMT Дата: сб, 13 авг 2011 20:13:05 GMT Соединение: keep-alive Зависит: Accept-Encoding X-Akamai-Edgescape: код страны = US

1 Ответ

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

Вы не можете ничего повторить, прежде чем позвонить header, поэтому в вашем случае это все вещи до ваших открывающих тегов php.

Лучше всего было бы сделать все ваши php до вашего открытия html tag

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...