我正在尝试创建下载按钮,以便用户只需单击按钮即可下载pdf文件。我有这个:
<?php
session_start(); // Alltid överst på sidan
if(!isset($_SESSION['sess_id']) OR $_SESSION['sess_id'] < 1){
die("Skapa ett konto som investerare för att enkelt få tillgång till affärsplaner!");
}else if(is_numeric($_SESSION['sess_id'])) {
/* kolla om användaren försöker ange filer i en annan mapp */
if(substr_count($_GET['file'], "/") > 0){
die("Invalid path"); }
/* skapa fullständig sökväg till filen */
$file = '/server/php/files/' . $_GET['file'];
/* kolla om filen finns */
if(!file_exists($file))
{
die("Invalid filename");
}
它给了我一条"无效文件名"消息。
然而当我echo $file;
并将路径复制到我的浏览器(+前面的本地主机)时,它为我提供了我正在寻找的下载对话框。对我做错了什么有什么想法吗?
echo $file
输出
/server/php/files/roibay-business-plan.pdf
而" server
"是我的根文件夹中的一个文件夹。
我已经用 mamp 设置了本地主机,并创建了一个别名,它是 lab.local,所以我所说的文件路径是: lab.local/server/php/files/somefile.pdf当我将其输入到 网络浏览器 对话框弹出,但file_exists不验证 路径
这意味着server
目录不是您的根目录。试试这个:
file_exists($_SERVER{'DOCUMENT_ROOT'} . "/server/php/files/roibay-business-plan.pdf"))
当我回显$file;并将路径复制到我的浏览器时,它会为我提供我正在寻找的下载对话框。
这是因为file_exists
需要相对于服务器的路径名,而不是 URI。
- file_exists
例:
file_exists('/var/www/site.com/index.htm'); // this would work.
file_exists('www.site.com/index.htm'); // this would not