Seiten verarbeiten (relative Pfadangabe im Query-String)

  • Hallo,

    ich habe hier ein PHP-Script, das die im Query-String angegebene Seite
    ausliest, verarbeitet und wieder ausgibt (es geht um die Generierung einer
    behindertengerechten Text-Version):

    Der Aufruf sieht also so aus:
    http://www.domain.com/text.php?news/index.htm

    Da mein Provider das Angeben von URLs (allow_url_fopen) nicht gestattet,
    muss der Pfad relativ sein.

    Im Script steht:
    $qs = getenv("QUERY_STRING");
    $datei = file($qs);

    Für normale HTML-Seiten funktioniert das wunderbar, Probleme habe ich beim
    Auslesen von CGI-Dateien (Perl) - verständlicherweise soll die HTML-Ausgabe
    der CGI-Datei gelesen werden.

    text.php?cgi-bin/datei.cgi
    liefert den Quelltext (!!) der CGI-Datei zurück,

    text.php?cgi-bin/genmail.cgi?sb
    liefert einen File-not-found-Error.

    Lokal am Rechner ist das Ergebnis dasselbe. Gebe ich allerdings den
    absoluten Pfad ein, klappts - diese Möglichkeit habe ich aber bei meinem
    Provider nicht (s.o.). Ich hab versucht, das zweite ? zu kodieren
    (urlencode()), aber damit war ich nicht erfolgreich. Das Hauptproblem ist ja
    auch, dass im ersten Beispiel der Quelltext ausgegeben wird - damit kann ich
    nichts anfangen.

    Fällt euch vielleicht eine Lösung für dieses Problem ein?

    Danke & mit freundlichen Grüßen,
    Lola

  • vielleicht hilft dir die umleitung mittels header("Location:hier_die_url"); weiter:
    also z.b. aufruf der seite
    text.php?url=blablabla
    wobei blablabla die codierte url (urlencode(url)) ist, und dann in text.php mit
    header("Location:"+urldecode(url));

    achtung: vor header(...) duerfen keine zeichen (auch keine leerzeichen) ausgegeben werden.

  • hi,
    das hat leider nicht funktioniert ...

    allerdings hab ich in einem anderen forum den tipp bekommen, eine HTTP-POST-abfrage zu simulieren - das war erfolgreich (s.unten). als $URL wird der querystring übergeben (sofern es ein CGI-script ist)

    thx & lg
    lola

    ---

    function HTTP_Post($URL,$data, $referrer="") {

    // parsing the given URL
    $URL_Info=parse_url($URL);

    // Building referrer
    if($referrer=="") // if not given use this script as referrer
    $referrer=$_SERVER['SCRIPT_URI'];

    // making string from $data
    foreach($data as $key=>$value)
    $values[]="$key=".urlencode($value);
    $data_string=implode("&",$values);

    // Find out which port is needed - if not given use standard (=80)
    if(!isset($URL_Info['port']))
    $URL_Info['port']=80;

    // building POST-request:
    $request.="POST ".$URL_Info['path']."?".$URL_Info['query']." HTTP/1.1\n";
    $request.="Host: ".$URL_Info['host']."\n";
    $request.="Referer: $referer\n";
    $request.="Content-type: application/x-www-form-urlencoded\n";
    $request.="Content-length: ".strlen($data_string)."\n";
    $request.="Connection: close\n";
    $request.="\n";
    $request.=$data_string."\n";


    $fp = fsockopen($URL_Info['host'],$URL_Info['port']);
    fputs($fp, $request);
    while(!feof($fp)) {
    $result .= fgets($fp, 128);
    }
    fclose($fp);

    return $result;
    }

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!