所以我有这个脚本,它可以旋转位于目录中的图像,效果很好。但是,它需要刷新页面才能旋转图像。有没有一种方法可以修改它,让它在点击图像时旋转图像?提前感谢
HTML:
<img src="rotate.php" alt="random image" />
PHP:
<?php
$folder = 'images/';
$exts = 'jpg jpeg png gif';
$files = array(); $i = -1;
if ('' == $folder) $folder = './';
$handle = opendir($folder);
$exts = explode(' ', $exts);
while (false !== ($file = readdir($handle))) {
foreach($exts as $ext) {
if (preg_match('/.'.$ext.'$/i', $file, $test)) {
$files[] = $file;
++$i;
}
}
}
closedir($handle);
mt_srand((double)microtime()*1000000);
$rand = mt_rand(0, $i);
header('Location: '.$folder.$files[$rand]);
?>
更新:这是非常基本的,但要测试一下,看看它是否有效;
<script>
function changeImage(o){
o.src = 'http://www.domain.com/testtest.php?' + (new Date()).getTime(); // time to help stop caching
}
</script>
<img src="http://www.domain.com/testtest.php" onclick="changeImage(this)" />
并在php中添加一个内容标头来发送图像,例如,如果它是gif
或png。。。
<?php
// see link at bottom for getting file extention
switch ($selected_random_file_extention) {
case "gif":
header('Content-type: image/gif');
$file_ext = "gif"; break;
case "jpg":
header('Content-type: image/jpg')
$file_ext = "jpg"; break;
case 3:
header('Content-type: image/png');
$file_ext = "png"; break;
}
//header('Content-type: image/gif'); // send as image
//$random_image_name = rand(1,5);
// you would add $folder.$files[$rand]; and include you script above
$random_image_name = $folder.$files[$rand];
// adjust paths as needed
$img_file = "http://www.domain.com/".$random_image_name.".gif";
// .$file_ext;
readfile($img_file); // not sure how memory will go
?>
idear是设置header
的内容类型,并使用readfile
将文件读写到输出缓冲区,有了这一点,您可以使用ajax作为另一种方式来请求图像,然后使用status
来轻松显示加载指示符。
如果您在哪里重写URL,您可以更改src的.php扩展名,甚至没有扩展名。
http://php.net/manual/en/function.pathinfo.php
使用pathinfo 'extension'
可以获得扩展,然后设置批准Content-type
<script>
function changeSrc(element) {
var file_names = ["image1.png", "image2.png", "image3.png"]; //etc
var i = Math.floor(Math.random() * file_names.length);
element.src = file_names[i];
}
</script>
<img src="image1.png" onclick="changeSrc(this)">
只需将$files连接到一个带引号的逗号分隔字符串中,并将其作为上面file_names数组的值插入即可。
您可以添加一个IFRAME,然后使用javascript,随机刷新该帧
您是否考虑过使用ajax来实现这一点?通过这种方式,您可以触发PHP,然后刷新图像,但不能刷新页面的其余部分。
如果你不想访问他的客户端,那么我会在你的IMG标签周围添加一个链接,并将你的PHP脚本分成两个文件。
<a href="rotate.php"><img src="random.php" alt="random image" /></a>
文件1(rotate.php(:旋转图像
文件2(random.php(:重定向到随机图像
header('Location: '.$folder.$files[$rand]);