Заголовок PHP () не работает для перенаправления - PullRequest
1 голос
/ 09 марта 2012

Я пытаюсь проанализировать страницу загрузки файла, а затем, в зависимости от того, что аргумент был передан в URL, перенаправить их на соответствующий файл загрузки автоматически. Все работает нормально, когда я его повторяю, но когда я пытаюсь использовать header (), он ничего не делает.

<?php

require_once('simple_html_dom.php');

$html = file_get_html('http://dl.bukkit.org/downloads/craftbukkit/');

$dom = new DOMDocument;
libxml_use_internal_errors(true);
//echo $dom->loadHTML($html) ? "success<br/>" : "failed<br/>";
libxml_clear_errors();
$dom->preserveWhiteSpace = true;

$version = $_GET['version'];

if($version == "beta")
{
    foreach ($dom->getElementsByTagName('div') as $element)
    {
        if($element->getAttribute('class') == "downloadButton chan-rb  mini")
        {
            foreach ($element->getElementsByTagName('a') as $link)
            {
                if( $link->getAttribute('class') == "tooltipd")
                {
                    $lnk = $link->getAttribute('href')."<br/>";
                    $url = "Location:http://dl.bukkit.org".$lnk;
                    header($url);
                }
            }
        }
    }
}

?>

Я полагаю, что сталкиваюсь с проблемой уже отправляемых заголовков, хотя до этого я не использовал HTML. Есть ли хорошие альтернативы, которые работают для перенаправления в реальный файл (в данном случае это расширения .jar).

1 Ответ

0 голосов
/ 09 марта 2012

Мне удалось заставить его работать, удалив все строки, которые, по его словам, отправляли информацию заголовка раньше. Вот код, но если у кого-нибудь есть какие-либо предложения по ускорению (это довольно медленно), пожалуйста, дайте мне знать!

<?php

require_once('simple_html_dom.php');

$html = file_get_html('http://dl.bukkit.org/downloads/craftbukkit/');

$dom = new DOMDocument;
libxml_use_internal_errors(true);
$dom->loadHTML($html);
libxml_clear_errors();
$dom->preserveWhiteSpace = true;

$version = $_GET['version'];

if($version == "beta")
{
    foreach ($dom->getElementsByTagName('div') as $element)
    {
        if($element->getAttribute('class') == "downloadButton chan-beta  mini")
        {
            foreach ($element->getElementsByTagName('a') as $link)
            {
                if( $link->getAttribute('class') == "tooltipd")
                {
                    $url = "Location:http://dl.bukkit.org".$link->getAttribute('href');
                    header($url);
                }
            }
        }
    }
}
...