这里我有一个download.php
问题。我正在尝试下载文件,但它没有重定向到我在ftp服务器上共享文件夹的正确路径。它总是重定向到我所有file.php
所在的地址。
这是我的家download.php
<?php
include 'dbconfig';
include 'ftpconfig.php';
include 'aes.php';
session_start();
if($_SESSION['user'] and ($_SESSION['nik'])){
}
else{
header("location:index.php");
}
$file = $_GET['id'];
$fileFtp = 'ftp://'.$ftp_user_name.':'.$ftp_user_pass.'@'.$ftp_server.'/'.$file;
$crypt = new aes_encryption();
$fileName = str_replace('.enc','',$fileFtp.$file);
$fileNamee = str_replace('.enc','',$file);
$dekrip = $crypt->decrypt_file($fileFtp.$file, $fileName);
if (!$dekrip) {
echo "Gagal";
}
else {
echo '<script> window.location.href = '.$fileName,'; </script>';
echo "The file ".$fileNamee." downloaded sucessfully";
}
?>
这是我的home.php
上下载的代码
<td> <a href="download.php=<?php echo $row['file'] ?>" target="_blank">Download</a></td>
当我点击下载时,它会重定向到所有file.php
存在的
http://localhost/aes/download.php81208-mklh.pdf.enc
不在ftp服务器上我在F:'ftp
中设置的共享文件夹中。并且所有文件都在该文件夹中。
我该怎么解决?
=
符号之前的链接中缺少?id
<a href="download.php?id=<?php echo $row['file'] ?>"...
另外,参见http://localhost/aes/download.php
将其更改为:
<a href="/aes/download.php?id=<?php echo $row['file'] ?>"...
或
<a href="http://localhost/aes/download.php?id=<?php echo $row['file'] ?>"...
这取决于文件在服务器上的位置(download.php)。
错误报告应设置为捕获和显示通知。
确保路径正确,并且数据库查询正确无误,因为$row['file']
建议这样做。
注意:(编辑)
FTP和DB代码都需要在同一个文件中。将代码放在不同的文件中可能会丢失某个连接。
参考文献:
- http://php.net/manual/en/function.error-reporting.php
- http://php.net/manual/en/mysqli.error.php
- http://php.net/manual/en/book.ftp.php(FTP)
并使用var_dump();
和print_r();
以及您的HTML源代码作为调试工具。
还要确保while
循环中的数据库查询不会过早结束。看到您的另一个问题,您正在使用mysql_
。
即:(注意末尾的分号)
while ($row = mysql_fetch_array($result)); // <<< that terminates it.
{
$file = $row["file"];
}
我以前见过这种情况,这是一种洞察力。
如果在转储到客户端的任何HTML之前放置一个标头,则将使用PHP重定向(服务器端,因此可以发送标头):
header('Location: http://www.yoursite.com/file_location.php');
如果你想进行JavaScript重定向,你会使用类似的东西(客户端,这样页面就可以开始加载了):
<script type="text/javascript">
<!--
window.location = "http://www.yoursite.com/file_location.php"
//-->
</script>