私はサーバー上のフォルダから4つのランダムな写真を引っ張ってdivに表示するサイト用の小さなモジュールを構築しようとしています。何が起こっているのかは、同じ4枚の写真が呼び出されていることです。どうやって4種類の写真を呼べますか?フォルダからの4つのランダム写真を表示するPHPスクリプトは、同じ写真を表示しています4回
相続人random.phpファイル:
<?php
$folder = '.';
$extList = array();
$extList['jpg'] = 'image/jpeg';
$extList['jpeg'] = 'image/jpeg';
$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 ("Can't initialize 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);
}
}
?>
はここrandom.phpが呼び出されている方法は次のとおりです。あなたの乱数ジェネレータをシードする
<?php
/* DATA */
$data = array(
array('COUNT', '88', 'Here are a few of them', '1, 2, 3, 4'),
);
?>
<div>
<table class="reop" border='0' width='100%' cellpadding='0' cellspacing='10'>
<?php
$count = 0;
foreach($data as $row) {
$class = ($count % 2 == 1 ? " class='alt'" : '');
echo "<tr$class>";
for($j = 0; $j < count($row); $j++) {
if ($j!=3) {
echo "<td class='cell_$j'>$row[$j]</td>";
} else {
// $avatar = '';
$array = preg_split('/,/', $row[$j], -1, PREG_SPLIT_NO_EMPTY);
foreach ($array as $val) {
$avatar .= '<img src="/staffpics/random.php"> ';
}
echo "<td class='cell_$j'>$avatar</td>";
}
}
echo '</tr>';
// $count++;
}
?>
</table>
私は答えはありませんが、私は4つの画像が同じになる理由を知っています:あなたのブラウザはすべての画像をキャッシュします。サーバから画像をロードすると、同じ画像(すなわち、同じファイル名)を再びロードする必要はないことが分かる。だから多分彼らに4つの異なる名前を付けるかもしれない? –
@ Mrリスター - 私の答えのように聞こえる。 –
@MrLister - うーん、/ staffpics /のすべての画像の名前は[1.jpg、2.jpg。 3.jpg、...]これはあなたが意味することですか? – tronjavolta