+ Antworten
Ergebnis 1 bis 3 von 3

Thema: Error 403 - fremde xml mit php auslesen

  1. #1
    Neu an Board
    Registriert seit
    09.06.2010
    Beiträge
    2
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard Error 403 - fremde xml mit php auslesen

    Hallo!

    Ich habe folgendes Problem: Für die von mir erstellte Homepage versuche ich Daten aus einer xml-Datei auszulesen und darzustellen.
    Wenn ich dafür ein eigenes Modul erstelle funktioniert das ganze auch problemlos.

    Hier mal der Code der mod_gildeninfo.php:

    Code:
    <?php
    
    defined( '_JEXEC' ) or die( 'Restricted Access' );
    
    function get_document($url)
    {
        $content = '';
        $is_header = TRUE;
        $base_url = parse_url($url);
    
        if ($fp = @fsockopen($base_url['host'], 80, $errno, $errstr, 5))
        {
    
            if (!empty($base_url['query']))
            {
                $query = '?'.$base_url['query'];
            }
    
            else
            {
                $query = '';
            }
    
            $data = 'GET '.$base_url['path'].$query." HTTP/1.0\r\n".
                            'Host: '.$base_url['host']."\r\n".
                            "Connection: Close\r\n\r\n";
    
            stream_set_timeout($fp, 5);
            fputs($fp, $data);
    
            while(!feof($fp))
            {
                $line = fgets($fp, 4096);
    
                if (!$is_header)
                {
                    $content .= $line;
                }
    
                else
                {
    
                    if (strlen(trim($line)) == 0)
                    {
                        $is_header = FALSE;
                    }
                }
            }
    
            fclose($fp);
            return $content;
        }
    
        else
        {
           return FALSE;
        }
    }
    
    if ($data = get_document("http://www.buffed.de/public/war/xml/guild/3351.xml") ){
    
        $xml = simplexml_load_string($data);
        $xml = new simpleXMLElement($xml->asXML());
    }
    echo "Name: " . $xml['name'] . "<br />";
    echo "Gildenlevel: " . $xml['rank'] . "<br />";
    echo "Eroberte Banner: " . $xml->summary[0]->bannerscaptured . "<br />";
    echo "Verlorene Banner: " . $xml->summary[0]->bannerslost . "<br />";
    echo "Gesamte Gildenerfahrung: " . $xml->summary[0]->expcurrent . "<br />";
    echo "Ruf: " . $xml->summary[0]->renown . "<br />";
    echo "Anzahl Chars: " . $xml['numchars'] . "<br />";
    echo "Gr&uuml;ndungsdatum: " . $xml->summary[0]->creationdate . "<br />";
    echo "Zuletzt aktualisiert am: " . $xml['lastupdate'] . "<br />";
    
    
    ?>
    Der Umweg mit function get_document($url) ist leider nötig, da ich per simplexml_load_file($url) nicht zum Ziel komme. Habe 1und1 als Webhoster und die Servereinstellungen erlauben den Befehl nicht.

    Wie gesagt: Das Modul funktioniert so und die abgefragten Daten werden problemlos dargestellt. Auch wenn ich das als php-script ohne "defined( '_JEXEC' ) or die( 'Restricted Access' );" abspeicher und direkt auf dem Server anspreche, funktioniert alles wie gewünscht.

    Doch wenn ich versuche, den Inhalt des Moduls in den content einzubinden bekomme ich immer Error 403 - Forbidden. Auch wenn ich das php-script über den wrapper oder per kl_php oder ähnliche Plugins einbinden möchte führt das zu dieser Fehlermeldung.
    Das ließ mich soweit verzweifeln, daß ich mich an die Erstellung einer einfachen Komponente wagte, um diese dann einzubinden. Aber wenn ich dann auf die entsprechende Seite zugreife - Error 403 - Forbidden. Sitze seit längerem an der Geschichte (bin eigentlich mit php und xml nicht so vertraut und musste mir das alles mühsam erlesen, bis ich überhaupt das Modul ans laufen gebracht habe) und dementsprechend mit meinem Latein schon am Ende und völlig verzweifelt.

  2. #2
    Joomla Guru Avatar von elkuku
    Registriert seit
    14.06.2006
    Ort
    Guayaquil - Südamerika
    Beiträge
    1.689
    Bedankte sich
    74
    Erhielt 517 Danksagungen
    in 397 Beiträgen

    Standard

    Probier einmal simplexml_load_file() mit dem absoluten Pfad zur xml Datei - Dazu muss die Datei natürlich auf dem gleichen Server sein.
    Dann solltest Du dir diese get_document() Funktion eigentlich sparen können
    Gruß,
    Nikolai
    Hilf mit: Deutsche Joomla! Dokumentation Help testing: EasyCreator Noch Fragen ? Forum.Joomla-Nafu.de

  3. #3
    Neu an Board
    Registriert seit
    09.06.2010
    Beiträge
    2
    Bedankte sich
    0
    Erhielt 0 Danksagungen
    in 0 Beiträgen

    Standard

    Hallo und vielen Dank erstmal für die schnelle Antwort.

    Zitat Zitat von elkuku Beitrag anzeigen
    Dazu muss die Datei natürlich auf dem gleichen Server sein.
    Leider liegt genau da das Problem: Die Datei befindet sich eben nicht auf dem gleichen Server.

    Das Modul funktioniert ja auch einwandfrei. Ich kann das Ergebnis in einer Modulbox ausgeben lassen. Nur das Einbinden in den content via {loadposition modulcontent} (modulcontent ist eine von mir im Template definierte Modulposition nur für diesen Zweck und wird sonst nicht verwendet) oder des php-scripts ohne joomla-abfrage über wrapper oder per Plugin kl_php will einfach nicht gelingen.

    Liegt der Fehler denn an der get_document()-Funktion? Hat Joomla da solche Probleme mit? Und wenn ja, wie wäre ein Ansatz hier doch noch zum Ziel zu gelangen?

    Fragen über Fragen

+ Antworten

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein