PHP koda za prikaz naključne slike

Vse o programiranju na in za PC

Moderatorji: Kroko, tilz0R

PHP koda za prikaz naključne slike

OdgovorNapisal/-a s54mtb » 02 Sep 2015, 14:31

Vir:
http://snipplr.com/view.php?codeview&id=4737

Koda: Izberi vse
<?php

// set the $folder to the folder containing the images
// You then use <img src="/path/to/this/script.php" alt="image randomiser" />
// to display them

  $folder = 'test';

  $extList = array();
   $extList['gif'] = 'image/gif';
   $extList['jpg'] = 'image/jpeg';
   $extList['jpeg'] = 'image/jpeg';
   $extList['png'] = 'image/png';
   

  $img = null;

  if (substr($folder,-1) != '/') {
     $folder = $folder.'/';
  }

  if (isset($_GET['img'])) {
     $imageInfo = pathinfo($_GET['img']);
     if (
         isset( $extList[ strtolower( $imageInfo['extension'] ) ] ) &&
          file_exists( $folder.$imageInfo['basename'] )
      ) {
      $img = $folder.$imageInfo['basename'];
   }
  } else {
     $fileList = array();
     $handle = opendir($folder);
     while ( false !== ( $file = readdir($handle) ) ) {
        $file_info = pathinfo($file);
        if (
            isset( $extList[ strtolower( $file_info['extension'] ) ] )
        ) {
           $fileList[] = $file;
        }
     }
     closedir($handle);

     if (count($fileList) > 0) {
        $imageNumber = time() % count($fileList);
        $img = $folder.$fileList[$imageNumber];
     }
  }
 
  if ($img!=null) {
     $imageInfo = pathinfo($img);
     $contentType = 'Content-type: '.$extList[ $imageInfo['extension'] ];
     header ($contentType);
     readfile($img);
  } else {
     if ( function_exists('imagecreate') ) {
        header ("Content-type: image/png");
        $im = @imagecreate (100, 100)
            or die ("Cannot initialize new GD image stream");
        $background_color = imagecolorallocate ($im, 255, 255, 255);
        $text_color = imagecolorallocate ($im, 0,0,0);
        imagestring ($im, 2, 5, 5,  "IMAGE ERROR", $text_color);
        imagepng ($im);
        imagedestroy($im);
     }
  }
 
 
 
?>


Uporaba:

Gornjo kodo daj v nek direktorij, ustvari še en pod-direktorij (v gornjem primeru je "test"), ime tega pod-direktorija določi v spremenljivki
Koda: Izberi vse
 $folder = 'test';


v ta pod-direktorij daj datoteke s slikami, ki jih želiš naključno prikazovati.

Potem na svoji spletni strani uporabi gornji php kot vir slike:

Koda: Izberi vse
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="sl" xml:lang="sl">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="content-language" content="sl" />
<title>Test Random slike</title>
</head>

<body>

<div>
Prikaz naključne slike: <br>
   <img src ="http://pavlin.si/tmp/rndimg/rndimg.php">
   
</div>

</body>
</html>


Tule lahko poskusiš:
http://pavlin.si/tmp/rndimg/

To je vse. Upam, da je dovolj enostavno.


LP,
M.
Namesto "Zahvali se" sprejemam tudi šalco kofeta: https://www.buymeacoffee.com/s54mtb
Uporabniški avatar
s54mtb
 
Prispevkov: 11188
Pridružen: 15 Jan 2015, 01:10
Zahvalil se je: 1556 krat
Prejel zahvalo: 4056 krat
Uporabnika povabil: Vrtni palček
Število neizkoriščenih povabil: 255

Re: PHP koda za prikaz naključne slike

OdgovorNapisal/-a tilz0R » 02 Maj 2016, 13:35

Treba se je zavedati, da bo na .php končnici slike brskalnik težje delal (če sploh) cache, razen če tega eksplicitno ne poveš z headerji, pa še to ne deluje vedno.
Boljše bi bilo napisati funkcijo, ki bi vrnila ime slike, in le-to uporabiš na img src.
Knowledge sharing is people' caring., T. MAJERLE
Uporabniški avatar
tilz0R
 
Prispevkov: 1815
Pridružen: 18 Jan 2015, 00:12
Kraj: Črnomelj
Zahvalil se je: 229 krat
Prejel zahvalo: 509 krat
Uporabnika povabil: s56rga
Število neizkoriščenih povabil: 255

Re: PHP koda za prikaz naključne slike

OdgovorNapisal/-a glavic » 13 Sep 2016, 21:24

tilz0R je napisal/-a:Treba se je zavedati, da bo na .php končnici slike brskalnik težje delal (če sploh) cache, razen če tega eksplicitno ne poveš z headerji, pa še to ne deluje vedno.
Boljše bi bilo napisati funkcijo, ki bi vrnila ime slike, in le-to uporabiš na img src.
Kot si že sam omenil, brskalnikov cache deluje glede na response headerje. To nima nobene veze kakšne končnice so v povezavi, oz. kako bo sploh zgledala povezava.
Če se nastavijo pravilni headerji, za HTTP/1.0 in HTTP/1.1, bi zadevala morala delovati. Druga zgodba je če uporabnik namenoma ne pusti keširanja.
Lep link ki malo razloži http cache: https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl=en#cache-control
Uporabniški avatar
glavic
 
Prispevkov: 88
Pridružen: 13 Sep 2016, 16:54
Kraj: Grosuplje
Zahvalil se je: 57 krat
Prejel zahvalo: 8 krat
Uporabnika povabil: VolkD
Število neizkoriščenih povabil: 0


Vrni se na Programski jeziki

Kdo je na strani

Po forumu brska: 0 registriranih uporabnikov in 1 gost