我为我的大学项目创建了一个脚本,它读取目录中的文件并通过foreach循环回显它们,它将其作为列表,所以
"<ul>"; //this ul is outside the foreach loop
"<li><b>".$ftype.": ".$rows."</b>
<ul>
<li><a href='?run=delete.$dir$rows'>Delete ".$ftype."</a></li>
<li><a href='?run=rename.$dir$rows'>Rename ".$ftype."</a></li>
<li><a href='?run=download.$dir$rows'>Download ".$ftype."</a></li>
</ul>
</li>";
"</ul>"; //this ending ul tag is outside the foreach loop
$ rows是foreach循环中使用的变量
foreach($getDir as $rows)
$ ftype是一个变量集,具体取决于$ rows是否为dir
if (is_dir($dir.$rows){
$ftype = "Folder";
} else {
$ftype = "File";
}
这是我脚本的输出:
Folder: pics
Delete Folder
Rename Folder
Download Folder
File: screenshot (4).png
Delete File
Rename File
Download File
File: screenshot.png
Delete File
Rename File
Download File
File: screenshot_(2).png
Delete File
Rename File
Download File
File: screenshot_(3).png
Delete File
Rename File
Download File
Folder: trip
Delete Folder
Rename Folder
Download Folder
保持简短我需要另一个包含开关的php文件,该开关检测“run”是什么并对结果作出反应,因此当“run”设置为下载时,它使用设置为“run”的字符串。为了便于快速地解释这一点,我将举一个例子:
如果我点击“文件:截图.png”的“下载文件”,则运行设置为
?run = download.uploads / admin @ admin / screenshot.png所以
download.uploads/admin@admin.com/screenshot.png
我在另一个php文件上创建的开关检查if(substr($ linkchoice,0,8))==“download”所以如果run的第一个到第八个字符等于download,则执行header(“位置:$ linkchoice;内容类型:application / force-download“); break;
switch($linkchoice){
case (substr($linkchoice, 0, 8)) == "download":
header("Location: $linkchoice; Content-type: application/force-download");
break;//I have cases for the rename and delete but those aren't relevant to my problem
我的问题是,当我点击下载时,它会给我这个错误:
禁止访问!
您无权访问请求的对象。它受读保护或服务器无法读取。
如果您认为这是服务器错误,请与网站管理员联系。
错误403
本地主机 Apache / 2.4.17(Win32)OpenSSL / 1.0.2d PHP / 5.6.15
如果有人想看到代码问我将把它放在github上。
如果我的代码有误,请告诉我以及如何解决。
此外,我尝试使用其他一些下载代码,让我下载具有给定扩展名的文件,但是当我打开它们时,让我们说它在Windows照片查看器中打开它的图片,但是它说Windows照片查看器无法支持文件类型......