Kobraz Skrevet 2. november 2015 Del Skrevet 2. november 2015 Hei. Prøver å tilpasse et php dokument til å vise alle bilder i en mappe. Mine koder: galleri.php: <?php $dir = 'img/'; $file_display = array('jpg', 'jpeg', 'png', 'gif'); if (file_exists($dir) == false) { echo 'Directory "', $dir, '" not found!'; } else { $dir_contents = scandir($dir); foreach ($dir_contents as $file) { $file_type = strtolower(end(explode('.', $file))); if ($file !== '.' && $file !== '..' && in_array($file_type, $file_display) == true) { $name = basename($file); echo "<img src='img.php?name={$name}' />"; } } } ?> img.php: <?php $name = $_GET['name']; $mimes = array ( 'jpg' => 'image/jpg', 'jpeg' => 'image/jpg', 'gif' => 'image/gif', 'png' => 'image/png' ); $ext = strtolower(end(explode('.', $name))); $file = '/home/users/Pictures/'.$name; header('content-type: '. $mimes[$ext]); header('content-disposition: inline; filename="'.$name.'";'); readfile($file); ?> Jeg har 2 jpg-filer i mappa img, men når jeg kjører koden vises bare to "brutte bildelinker". Kan noen hjelpe? Lenke til kommentar
Lanes Skrevet 2. november 2015 Del Skrevet 2. november 2015 Tja... ser ikke noe feil med det første, men har du sjekket at: 1) Sjekk at img src path er korrekt i nettleseren 2) Kjør img.php direkte og se hvilken feilmelding du får da Lenke til kommentar
OISNOT Skrevet 2. november 2015 Del Skrevet 2. november 2015 Hvorfor ser galleri.php i 'img/' og img.php i '/home/users/Pictures/'? Ser ikke ut som du har noen sikkerhet. Prøv img.php?name=../../../etc/passwd Lenke til kommentar
Crowly Skrevet 2. november 2015 Del Skrevet 2. november 2015 Hvorfor ser galleri.php i 'img/' og img.php i '/home/users/Pictures/'?galleri.php genererer html, og refererer til img.php som ligger i img mappa. img.php henter frem selv bildet. (etter hva jeg kan se) Lenke til kommentar
OISNOT Skrevet 3. november 2015 Del Skrevet 3. november 2015 Hvorfor ser galleri.php i 'img/' og img.php i '/home/users/Pictures/'?galleri.php genererer html, og refererer til img.php som ligger i img mappa. img.php henter frem selv bildet. (etter hva jeg kan se) Men hvorfor ser de etter de samme bildefilene i 2 forskjellige mapper? Lenke til kommentar
Crowly Skrevet 3. november 2015 Del Skrevet 3. november 2015 Gjør ikke det, bildene hentes kun fra ett sted. Hendelses forløpet er slik: Nettleseren ber om galleri.php, når <img> tag'ene lastes så sendes en forespørsel til img.php for hver tag, img.php svarer da med å laste forespurt bilde. På denne måten kan man hente frem filer som ligger utenfor public html/web mappen. Lenke til kommentar
OISNOT Skrevet 3. november 2015 Del Skrevet 3. november 2015 (endret) Gjør ikke det, bildene hentes kun fra ett sted. Hendelses forløpet er slik: Nettleseren ber om galleri.php, når <img> tag'ene lastes så sendes en forespørsel til img.php for hver tag, img.php svarer da med å laste forespurt bilde. På denne måten kan man hente frem filer som ligger utenfor public html/web mappen. Nei. Les koden en gang til. La OP svare for seg selv. galleri.php ser i undermappen "img" av den mappen den er i. Lager link til "img.php?name=filnavn.jpg" uten mappenavn. img.php må derfor være i samme mappe for at linken skal fungere. img.php ser i en spesifikk mappe "/home/users/Pictures/filnavn.jpg" der filnavnet er uten img/ biten som brukes i galleri.php. Endret 3. november 2015 av OISNOT Lenke til kommentar
Kobraz Skrevet 6. november 2015 Forfatter Del Skrevet 6. november 2015 Tusen takk for mange gode svar. Feilen min var at filene refererte til to ulike plasseringer, begge skulle referere til img/. Nå fungerer det fint. Legger ved den fungerende koden i tilfelle noen har bruk for den. Kunne tenkt meg å sette en størrelsesbegrensning på bildene da noen bilder blir veldig store, er det noen som vet hvor i koden jeg kan gjøre det? galleri.php <?php $dir = 'img/'; $file_display = array('jpg', 'jpeg', 'png', 'gif'); if (file_exists($dir) == false) { echo 'Directory "', $dir, '" not found!'; } else { $dir_contents = scandir($dir); foreach ($dir_contents as $file) { $file_type = strtolower(end(explode('.', $file))); if ($file !== '.' && $file !== '..' && in_array($file_type, $file_display) == true) { $name = basename($file); echo "<img src='img.php?name={$name}' />"; } } } ?> img.php <?php $name = $_GET['name']; $mimes = array ( 'jpg' => 'image/jpg', 'jpeg' => 'image/jpg', 'gif' => 'image/gif', 'png' => 'image/png' ); $ext = strtolower(end(explode('.', $name))); $file = 'img/'.$name; header('content-type: '. $mimes[$ext]); header('content-disposition: inline; filename="'.$name.'";'); readfile($file); ?> Lenke til kommentar
Crowly Skrevet 6. november 2015 Del Skrevet 6. november 2015 Regner med du tenker på høyde og bredde, det gjør du i css .smallImg { width: 30%; height: 30%; } echo "<img class='smallImg' src='img.php?name={$name}' />"; Vil fremdeles laste ned det store bildet, noe som kan gjøre siden treg å laste. Vil nok være bedre å ha en thumbnail fil og en orginal fil, hvor img.php da henter thumbnailen som standard, og tar ett ekstra parameter for å vise orginal bildet. Lenke til kommentar
Kobraz Skrevet 19. november 2015 Forfatter Del Skrevet 19. november 2015 Tusen takk for gode svar. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå