2013-02-08 121 views
0

所以我試圖去做它會選擇1.jpg 2.jpg或3.jpg。我的猜測是我做錯了,但我沒有得到PHP錯誤,也沒有我的IDE告訴我,我的CSS是錯誤的,所以我沒有什麼可繼續。在php和css中的隨機背景

代碼:

HTML/CSS:

<html> 
    <head> 
     <link rel="stylesheet" href="css/styles.css" type="text/css" media="all"> 
     <script type="text/javascript" src="js/jquery-1.4.2.min.js" ></script> 
     <?php 
      include 'php/backgorundlogic.php'; 
     ?> 
     <style> 
      body { 
       background:url($bgset); 
       background-size:cover; 
      } 
     </style> 
    </head> 
    <body> 
     <div class="container"> 
      <input class="searchbar" type="text" /> 
     </div> 
    </body> 
</html> 

PHP:

<?php 
    $rbg = mt_rand(1, 3); 
    $ext = '.jpg'; 

    $bgset = 'img/' + $rbg + $ext; 
?> 

DEMO:here

+0

確定'$ bgset'是一個有效的圖像文件名;) – PeeHaa 2013-02-08 21:04:36

+1

只是檢查,你打算包括'backgorundlogic.php',或'backgroundlogic.php'? – 2013-02-08 21:05:04

回答

2

這條線:

background:url($bgset); 

應該是這樣的:

background:url(<?php echo $bgset ?>); 

眼下PHP引擎傳遞$bgset通過以純文本格式,因爲它不是在PHP腳本上下文。您可能會考慮更多的面向未來的HTML和HTML轉義值:

background:url(<?php echo htmlspecialchars($bgset) ?>); 
+0

+1:使用htmlspecialchars – 2013-02-08 21:05:50

+0

如何設置兩個答案作爲答案? – user2014751 2013-02-08 21:08:19

+0

@ user2014751你不能。在這種情況下,除非解決所有問題,否則不要選擇正確的答案。 – cdhowie 2013-02-08 21:09:18

4

使用。代替+

<?php 
    $rbg = mt_rand(1, 3); 
    $ext = '.jpg'; 

    $bgset = 'img/' . $rbg . $ext; 
?> 

和改變這一行

<style> 
     body { 
      background:url(<?php echo $bgset; ?>); 
      background-size:cover; 
     } 
    </style> 
+0

+1:正確拼接 – 2013-02-08 21:06:16

+0

+1這確實是另一個問題。但是,考慮解釋兩個運營商之間爲了OP的好處所做的區別。 – cdhowie 2013-02-08 21:06:17

0
background: url('<?php $a = array(‘anyfile.jpg’,'anyotherfile.gif’, ‘somefile.png’); echo $a[array_rand($a)];?>'); 

,或者如果你的圖片名符合一些與上月底的整數,例如。 clouds3.png

background: url('/images/lm/clouds<?php echo rand(0,10)?>.png') ;