我正在尝试使用PHP来创建一个来自我的摄影作品的网站。有许多现成的画廊,但这不是我想要的。
我有基础,这是在文件夹中保存的照片,其名称与内容相关。文件夹的名称显示在表格中,当点击名称时,想法是打开另一个页面,显示所选文件夹中所有照片的幻灯片。
目前正在使用:
$Dir =$_GET[file];
$files = glob("images/$Dir/*.jpg");
for ($i=0; $i<=count($files); $i++)
{
$num = $files[$i];
echo '<img src="'.$num.'" alt="random image" />'."<br /><br />";
}
这将打开正确的文件夹,并在<div>
标签中显示第一张照片,但不会制作我想要的幻灯片。
答案 0 :(得分:0)
这会打开正确的文件夹并显示第一张照片
我很惊讶你甚至得到了第一张照片!
您当前的代码根本无法正常运行,因为:
$files = glob($pattern)
需要$pattern
并将每个$files[$i]
作为物理路径返回 <img src="source">
希望source
成为网址 '<img src=" . $files[$i] . '">'
没有任何意义:它指定了一个预期网址的物理路径$files = glob("images/$Dir/*.jpg");
无法返回任何内容,因为images/
不是系统中任何路径的根。相反,你必须:
glob()
要实现此转换,您可以使用dirname($_SERVER["SCRIPT_FILENAME"])
,它为您提供了脚本的完整物理路径:您必须将其添加到glob()
模式,然后从找到的文件中删除它路径。
最后你可以这样写:
$site_root = dirname($_SERVER["SCRIPT_FILENAME"]);
$root_length = strlen($site_root) + 1;
if ($files = glob("$site_root/images/$_GET[file]/*.jpg")) {
foreach ($files as $file) {
echo '<img src="' . substr($file, $root_length) . '" alt="random image" /><br /><br />';
}
}
请注意:
+ 1
在$root_length
中也需要删除“/”,因此保留图片网址相对于网站根目录
foreach()
迭代找到的文件比for ()
if ($files...)
是为了避免在foreach
返回glob()
false
上触发错误