Повторное использование рандомизатора изображений PHP - PullRequest
1 голос
/ 23 февраля 2011

Я написал простой рандомизатор изображений на PHP, который выбирает случайное изображение из списка с помощью функции rand (). Код работает отлично, и случайное изображение генерируется, когда я включаю его в свой HTML как рисунок.

Проблема возникает, когда я пытаюсь включить его дважды в один и тот же 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];
}

Ответы [ 2 ]

2 голосов
/ 24 февраля 2011

Возможно, браузер считает, что это одно и то же изображение и кэширует, попробуйте установить имя изображения (создать заголовок с расположением содержимого / именем файла IIRC) и / или добавить уникальный тег в конецимя изображения со случайной строкой (например, image.jpg?e0.6613725793930488)

0 голосов
/ 23 февраля 2011

Я предполагаю, что rand () либо не был повторно заполнен, либо засеян с тем же значением. Рассматривали ли вы вызов srand () - или «лучший генератор случайных чисел» комбинации mt_srand () и mt_rand ()?

...