Joakim Gjerde Skrevet 15. november 2006 Del Skrevet 15. november 2006 Hei! Jeg har funnet ett random bilde script jeg prøver å forstå. Men nå står jeg fast. Scriptet henter bare opp filer i den ene mappen som er deffinert og ikke undermapper, men jeg ser ikke hvor dette er gjort. Kan noen hjelpe meg med å finne dette? Vil gjøre det om så det også går etter undermapper, og forhåpentligvis skal jeg også klare å gjøre så jeg kan "begrense" noen undermapper. Poseter koden jeg Klikk for å se/fjerne innholdet nedenfor <?php $path_to_images = "bilder/"; $default_img = "sikkerhet.gif"; function getRandomImage($path, $img) { if ( $list = getImagesList($path) ) { mt_srand( (double)microtime() * 1000000 ); $num = array_rand($list); $img = $list[$num]; } return $path . $img; } function getImagesList($path) { $ctr = 0; if ( $img_dir = @opendir($path) ) { while ( false !== ($img_file = readdir($img_dir)) ) { if ( preg_match("/(\.gif|\.jpg)$/", $img_file) ) { $images[$ctr] = $img_file; $ctr++; } } closedir($img_dir); return $images; } return false; } ?> Lenke til kommentar
ZoRaC Skrevet 15. november 2006 Del Skrevet 15. november 2006 Du må bruke et script som leter igjennom mappene rekursivt da... har dessverre ikke noe kode å vise til... Lenke til kommentar
NH Skrevet 16. november 2006 Del Skrevet 16. november 2006 (endret) Tok meg friheten til å skrive om scriptet ditt litt, er nå rekursivt <?php $path_to_images = "bilder/"; $default_img = "sikkerhet.gif"; //ulovlige subfolders $deny_subfolder_names = array("private_bilder", "porr"); //legg til flere mapper om nødvendig, adskill med komma $images = array(); //initier et array, ønsker å bruke en global function getRandomImage($path, $img) { global $images; if (getImagesList($path) ) { mt_srand( (double)microtime() * 1000000 ); $num = array_rand($images); $img = $images[$num]; } return $path . $img; } function getImagesList($path) { global $images, $deny_subfolder_names; if ( $img_dir = @opendir($path) ) { while ( false !== ($img_file = readdir($img_dir)) ) { if ( preg_match("/(\.gif|\.jpg)$/", $img_file) ) { $images[] = $img_file; //en counter er unødvendig, dette klarer php selv } //legger til rekursivitet her: if(is_dir($img_file)){ //se etter ulovlige mapper if(!in_array($img_file, $deny_subfolder_names)){ //kjør samme metode engang til for undermappen getImagesList($path.$img_file."/"); } } } closedir($img_dir); return true;//vi returnerer kun true. } return false; } ?> Endret 16. november 2006 av NH Lenke til kommentar
Joakim Gjerde Skrevet 16. november 2006 Forfatter Del Skrevet 16. november 2006 Skjønner ikke hvordan jeg nå skal få frem bilde. Jeg gjorde det slik på scriptet jeg postet. <img src="<?php echo getRandomImage($path_to_images, $default_img) ?>" alt=""> Prøvde også dette på koden du la ut men da fikk jeg feilmelding. CGI Error The specified CGI application misbehaved by not returning a complete set of HTTP headers. Hva er feil? Lenke til kommentar
madbird Skrevet 18. november 2006 Del Skrevet 18. november 2006 <?php $bilder = 5;//5 bilder vises om gangen $mappe = "images/";//hvor ligger bildene $tilfeldig = rand(1,$bilder);//finner bilde echo "<img src=$mappe"."$tilfeldig ".".jpg".">"//viser bilde. //husk at bare jpg format funker. dette kan selvsagt endres til andre formater som gif o.sv ?> Lenke til kommentar
Joakim Gjerde Skrevet 18. november 2006 Forfatter Del Skrevet 18. november 2006 (endret) Jeg må nok desverre ha et script som først finner filnavnene. Jeg kan ikke ha et som er begrenset til 1,2,3 osv når det gjelder filnavn. Ingen som vet hvorfor jeg får den feilmeldingen jeg gjør på det scriptet over? Det ser ut som det er akkuratt et slikt script jeg trenger. Mvh Joakim Gjerde Endret 18. november 2006 av joakim@hortensgutta Lenke til kommentar
Joakim Gjerde Skrevet 20. november 2006 Forfatter Del Skrevet 20. november 2006 Ingen som kan hjelpe meg? Skal brukes på en russeside så har det litt travelt. 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å