Gå til innhold

Random bilde script!


Anbefalte innlegg

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
Videoannonse
Annonse

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 av NH
Lenke til kommentar

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? :whistle:

Lenke til kommentar
<?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

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 av joakim@hortensgutta
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...