2011-02-23 86 views
1

我在PHP上編寫了一個簡單的圖像隨機工具,它使用rand()函數從列表中選取一個隨機圖像。代碼完美地工作,當我將它包含在我的html中作爲圖片時,會生成一個隨機圖像。重用PHP圖像隨機工具

當我嘗試在相同的html中包含它兩次時,問題就出現了。隨機圖像將生成並顯示兩次我包括它,但它會是相同的圖像。換句話說,我在我的頁面上得到了一個重複的隨機圖像。

解決這個問題的簡單方法是簡單地複製randomizer.php,給它一個新名稱,並在HTML中包含這兩個圖像。我不想這樣做的原因是因爲我的最終HTML將有大約25張圖片,我只是覺得應該有更好的方法來做到這一點。請記住,我不能將任何PHP函數添加到我的HTML中,因爲我的文件託管在不同的服務器中,而且我的HTML服務器不支持PHP。

如果有人知道更好的解決辦法,而不是創建25個我的randomizer.php文件副本(或創建25個不同的文件,包括它),請讓我知道。我將非常感謝您的輸入!

非常非常感謝!

這裏的代碼片段:

if (count($fileList) > 0) { 
    do { //do-while loop will get a new random image until that image has not been used yet in this session 
     $imageNumber = rand(0 , (count($fileList) - 1)); //get random image from fileList 
     $iterations++; 
    } while(!(empty($_SESSION['img' . $imageNumber])) && iterations < 200); 

    $_SESSION['img' . $imageNumber] = True; //this image number has been displayed 

    $_SESSION['shown']++; //increments the number of shown pictures in this signature 

    $img = $folder.$fileList[$imageNumber]; 
} 
+0

粘貼你得到的,所以我們有一個地方從 – fazo

回答

2

這可能是瀏覽器認爲它是相同的圖像,並且正在緩存,請嘗試設置圖像的名稱(用content-disposition/filename IIRC發出一個標題)和/或添加一個唯一標記到圖像名稱與隨機字符串,(例如image.jpg?e0.6613725793930488

+0

謝謝!將?1?2?3等添加到我的網址的末尾,防止我的瀏覽器被緩存!非常感謝! :) – Sebolains

0

我的猜測是,蘭特()要麼不補種,或種植有相同的值。 您是否考慮過調用srand() - 或者「更好的隨機數生成器」組合mt_srand()和mt_rand()?

+0

開始我曾嘗試調用srand(),但它並沒有真正有所作爲。我的想法是,一旦瀏覽器將圖像與文件名相關聯,所有函數將不會再被調用,因此不會調用隨機函數。 – Sebolains

+0

該腳本是否返回圖像(content-type:image/jpeg)或文件名以加載靜態圖像?我同意fazo,我們需要更多信息,否則我們只是猜測。 – KDrewiske

+0

它正在返回一個圖像。我在原始問題中添加了一段代碼:) – Sebolains