Problem mit eval()

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit eval()

    Hallo!

    ich möchte in einem Script eine andere PHP-Datei mit eval() geparsed in einen String einlesen, wobei der zu parsenden Datei die Session-ID übergeben werden muss. Ich habe das mal folgendermaßen versucht, wobei ich allerdings allerdings die Fehlermeldung "failed to open stream" bekomme:
    PHP-Code:
    $mail_inhalt = eval(file_get_contents("bestellungsmail.php?PHPSESSID=$s_id")); 
    Ich kann mir schon denken, dass es eben daran liegt, dass file_get_contents() mit der angehängten Session-ID nichts anfangen kann und dies als Teil des Dateinamens interpretiert.
    Daher frage ich mich nun, wie ich dieses Problem lösen kann. Hat jemand eine Idee?

    MfG
    Pascal
    Interessantes aus den Themenbereichen Computer, Internet und Programmierung unter
    http://www.it-blog.net

  • #2
    $mail_inhalt = file_get_contents("http://example.com/bestellungsmail.php?PHPSESSID=$s_id");

    wenn allow_url_fopen=on.

    Kommentar


    • #3
      Daran habe ich auch schon gedacht, aber ich möchte das Verzeichnis nach außen nicht öffnen, also per htaccess schützen. Demnach dürfte diese Lösung dann wahrscheinlich auch nicht gehen oder?
      Gibt es denn keine lokale Möglichkeit?
      Interessantes aus den Themenbereichen Computer, Internet und Programmierung unter
      http://www.it-blog.net

      Kommentar


      • #4
        Mußt es ja nicht nach außen öffnen, erlaube einfach nur 127.0.0.1 ...

        Ansonsten kannst du es mal hiermit versuchen:
        $_GET['PHPSESSID'] = $s_id;
        ob_start();
        include 'bestellungsmail.php';
        $mail_inhalt = ob_get_clean();

        Wenn alles nichts hilft, wäre auch das noch 'ne Möglichkeit:
        $mail_inhalt = eval('$_GET["PHPSESSID"] = '.$s_id.';'.file_get_contents('bestellungsmail.php'));

        Kommentar


        • #5
          OK, danke! Ich habe es jetzt ähnlich deinem Vorschlag gelöst. Jetzt funktioniert's!
          Ich hab aber damit jetzt noch ein anderes Problem: Wenn ich mit $mail_inhalt = eval(...) der Variable den durch eval() erstellten String zuweisen will, wird dieser String auch automatisch gleich ausgegeben. Wie kann ich dies verhindern?

          MfG
          Pascal
          Zuletzt geändert von pascaluhlmann; 20.06.2006, 00:28.
          Interessantes aus den Themenbereichen Computer, Internet und Programmierung unter
          http://www.it-blog.net

          Kommentar


          • #6
            Wenn du bestellungsmail.php im Browser aufrufst, wird dir sicher etwas angezeigt, denn der Server hat den PHP-Code ausgeführt und der hat eine Ausgabe erzeugt.
            eval() führt den Code genauso aus, also wird auch hier was ausgegeben, schließlich ist eval() kein Output Buffer.

            Entweder schreibst du bestellungsmail.php um, so daß sie nichts ausgibt sondern return't - dann kannst du auch so umschreiben, dass du include'n kannst.
            Oder du suchst doch einen anderen Weg, an die Ausgabe zu kommen, siehe oben.

            Kommentar

            Lädt...
            X