我目前正在编写一个脚本,其中用户在表单中输入一个数字,脚本在文件夹中搜索与该数字匹配的图像并将其显示给用户(下载按钮来了)。现在我的代码如下所示:
$photo_id = trim($_REQUEST['photo_id']);
$dir = "./wp-content/uploads/easter_pics";
$images = (scandir($dir));
foreach ($images as $value); {
$file_ext = strpos($value, ".");
$file_name = substr($value, 0, $file_ext);
if ($file_name === $photo_id) {
echo ("<img src = '../wp-content/uploads/easter_pics/" .
$file_name . ".jpg' />");
}
}
仅当用户输入目录中最后一个图像的编号时,此代码才有效。我想我明白了什么是错的基本原则。$images不断被分配数组中最后一个项目的值以进行$dir。至少我认为。
问题是我可能是错的,而且我不知道如何解决它。我希望 if 语句显示图像,如果用户输入与目录中的任何照片匹配然后中断。
你的foreach
是错误的:
foreach ($images as $value); {
应该是
foreach ($images as $value) {
(注意缺少的分号)
话虽如此,对于您的特定情况,扫描目录foreach
可能不是最佳解决方案。尝试更好地验证输入(例如,如果ID始终是数字,请使用intval
),然后查看文件是否存在。