fpassthru in OOP function: Datei aus geschütztem Verzeichnis lesen

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • fpassthru in OOP function: Datei aus geschütztem Verzeichnis lesen

    Hallo,
    ich möchte aus einem geschützten Verzeichnis Dateien auslesen.
    Das geht wunderbar, wenn man einfach über eine Dateiverbindung: getTheFile.php?file=Dateiname die jeweilige Datei auruft.

    getTheFile wäre dann:

    PHP Code:
    $ext pathinfo$_GET['file'] );
       switch(
    strtolower($ext['extension'])) {
       case 
    "gif":
       
    $mime_type "image/gif";
       break;
       case 
    "jpeg":
       
    $mime_type "image/jpeg";
       break;
       case 
    "jpg":
       
    $mime_type "image/jpeg";
       break;
       case 
    "png":
       
    $mime_type "image/png";
       break;
       }
        
       
    header("Content-type: ".$mime_type."");
       
    $si fopen("../image_upload/".$_GET['file'], "rb");
       
    fpassthru($si); 
    Nun habe ich ein sehr komplexes Loginsystem, das wenn man diese Datei schützt einfach sehr lange arbeitet.

    Ich suche daher eine Lösung, die das Auslesen über eine in einer Classe definierte Funktion bewerkstelligt: also so:

    PHP Code:
    class content {
    function 
    passThru ($image) {    
       
     
       
    $si fopen("./image_upload/".$image"rb");
       
       
    fgets($si);
       
       return 
    fpassthru($si);
     
     }


    Wenn ich das mache, erscheinen Sonderzeichen ohne ende die mit

    ����JFIF��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ��C    $.' ",#(7),0144

    beginnen.

    Gibt es da eine Lösung?

  • #2
    Du hast den header() nicht gesetzt.

    Warum verwendest du nicht einfach readfile()?

    Comment


    • #3
      ja ich habe es gerade probiert,

      leider soll das script hintergrundbilder laden und steht somit nicht am Anfang der Datei, mit einem header ergibt sich da ein Problem.

      PHP Code:

      function passThru ($image) {    

         
      header("Content-type: image/jpeg");
         return 
      readfile("./image_upload/".$image);
       
       }

      // html 

      if($type == "image_upload")
      $image $this -> passThru($value);

      echo 
      "style=\"background-image:url(".$image.");"

      Comment


      • #4
        Originally posted by sanktusm View Post
        leider soll das script hintergrundbilder laden und steht somit nicht am Anfang der Datei, mit einem header ergibt sich da ein Problem.
        Du kannst pro Response nur einen Datentyp zurückgeben. Entweder HTML oder Bilddaten. Du musst dich entscheiden.

        Originally posted by sanktusm View Post
        $image = $this -> passThru($value);

        echo "style=\"background-image:url(".$image.");";
        In url() muss eine URL stehen und keine Binärdaten.

        HTML Code:
        <div style="background-image: url(lade_bild.php?id=123);" />

        Comment

        Working...