2016-03-27 6 views
0

Ich versuche, das Hintergrundbild einer Webseite aus einem Ordner per PHP nach dem Zufallsprinzip festlegen.php Hintergrundbild zufällig aus Ordner

Ich habe den folgenden Code:

<!DOCTYPE HTML> 
<html> 
    <head> 
     <link rel="stylesheet" type="text/css" href="style.css"> 
     <title>404</title> 
    </head> 

    <body id="Background404"> 
     <p>404-Page not found. <a href="http://url.com>Home.</a></p> 
    <?php 
     $dir = '/var/www/html/Images'; 
     $fileNames = array(); 
     if(is_dir($dir)){ 
      $handle = opendir($dir); 
      while(false !== ($file = readdir($handle))){ 
       if(is_file($dir.'/'.$file) && is_readable($dir.'/'.$file)){ 
       $fileNames[] = $file; 
       } 
      } 
      closedir($handle); 
      $fileNames = array_reverse($fileNames); 
      print_r($fileNames); 
     } 
     $totalLength = sizeof($fileNames); 
     $randInt = rand(0, $totalLength); 
     $randFile = $fileNames[$randInt]; 
     echo '<style> #Background404{background: url($randFile);}</style>'; 

    ?> 

    </body> 
</html> 

Hinweis: Der Druck der Dateien nur um sicherzustellen, dass ich diesen Punkt in Code zu erreichen und sehen, was die Dateien aufgerufen werden. Ich habe eine ähnliche Frage hier gefunden: Random Background Image PHP, aber als ich diese Antwort verwendet habe, habe ich nur einen reinen weißen Hintergrund.

Hier ist eine Kopie der gedruckten Array:

Array ( 
     [0] => GraniteBridge.png 
     [1] => mobileBackground.png 
     [2] => OtherKingdom.png 
     [3] => NetherBase.png 
     [4] => BackgroundTablet.png 
     [5] => Snowy.png 
     [6] => Village.png 
     [7] => background2.png 
     [8] => CactusFarm.png 
     [9] => FrontView.png 
     [10] => CreditsPortal.png 
     [11] => FrontNight.png 
     [12] => background4.png 
     [13] => XPFarmRailway.png 
     [14] => GoldIronFarms.png 
     [15] => Pyramid.png 
     [16] => NetherFortress.png 
     [17] => TheEnd.png 
     [18] => Library.png 
     [19] => Background.png 
     [20] => twitter.png 
     [21] => mobileBackground1.png 
     [22] => mobileBackground2.png 
     [23] => BirdsEyeView.png 
     [24] => EndPortal.png 
     [25] => AboveVillage.png 
     [26] => TowerToTheHeavens.png 
     [27] => TowerArmorStands.png 
     [28] => FullSizeBackground.png 
     [29] => Mansion.png 
     [30] => Night.png 
     [31] => Dojo.png 
) 

Antwort

1

Wir können sehen, dass die Elemente in Array aufsteigend nach sie Arrayschlüssel bestellt werden. Wir können diese Informationen verwenden, um einen geeigneten Ansatz für das Ergreifen eines zufälligen Array-Elements zu erstellen.

Zunächst einmal müssen Sie die Anzahl der Array greifen so:

$count = count($fileNames); 

Dann gerade rand() -Funktion von 0 bis zur Anzahl der Array-Zufallszahl generieren:

$random = rand(0, $count); 

Jetzt haben Sie zufällige Array-Taste, so dass Sie es verwenden können:

<img style="background-image:url('path/to/image/<?=$fileNames[$random]?>');"/> 
+0

Ich habe gerade den Beitrag bearbeitet, weil ich einen Fehler gemacht und Rand nicht zugewiesen habe om Wert für die Variable zur späteren Verwendung. – Marcin

+0

Ich habe das versucht und jetzt sehe ich ein Bildelement, aber es findet das Bild nicht und wenn ich die Bildadresse kopiere, bekomme ich "http://96.19.31.19/var/www/html/Images/$fileNames [% 3C? = $ Random?% 3E] "also ist es offensichtlich, dass man den PHP nicht in reinen Text umwandelt, um ihn in html zu verwenden – kalenpw

Verwandte Themen