Php 更新MYSQL,下载文件并重定向

Php 更新MYSQL,下载文件并重定向,php,mysql,Php,Mysql,我一整天都在调查这件事,结果被卡住了。我有一个更新表的基本PHP脚本。将详细信息传递给它,然后从上载目录下载文件 $user = isset($_GET['use'])? $_GET['use'] : null; $route = isset($_GET['rou'])? $_GET['rou'] : null; $expires = isset($_GET['exp'])? $_GET['exp'] : null; $itemnu = isset($_GET['item'])? $_GET['

我一整天都在调查这件事,结果被卡住了。我有一个更新表的基本PHP脚本。将详细信息传递给它,然后从上载目录下载文件

$user = isset($_GET['use'])? $_GET['use'] : null;
$route = isset($_GET['rou'])? $_GET['rou'] : null;
$expires = isset($_GET['exp'])? $_GET['exp'] : null;
$itemnu = isset($_GET['item'])? $_GET['item'] : null;
$host="host";   
$username="username";
$password="password"; 
$db_name="username";  
$con=mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("can not select DB"); 
$query = "INSERT INTO database.table(item,name,expiry) VALUES ('$itemnu', '$user',   '$expires')";  
mysql_query($query) or die('Query "' . $query . '" failed: ' . mysql_error());  
echo "<meta http-equiv=\"Refresh\" content=\"0; url=/upload/" . $route . "\">";
$user=isset($\u GET['use'])$_GET['use']:null;
$route=isset($\u GET['rou'])$_GET['rou']:null;
$expires=isset($\u GET['exp'])$_GET['exp']:null;
$itemnu=isset($\u GET['item'])$_GET['item']:null;
$host=“host”;
$username=“username”;
$password=“password”;
$db_name=“用户名”;
$con=mysql_connect($host“,$username“,$password”)或die(“无法连接”);
mysql_选择_db($db_name)或die(“无法选择db”);
$query=“插入到数据库中。表(项、名称、到期日)值(“$itemnu”、“$user”、“$expires”)”;
mysql_query($query)或die('query“.$query.”失败:'.mysql_error());
回声“;
我现在需要做的是重定向回主页。然而,我知道你不能在下载PHP后重定向,如果我在它不起作用之前重定向。我试过了

fopen和file\u获取\u内容

但由于这些文件将是各种各样的微软,文本和pdf文件,我无法让它工作。我也尝试过(作为编辑的一部分删除) 我看了一个javascript,无法使用php变量下载文件。任何帮助都会得到,提前感谢。php脚本不需要任何要求,它可以是任何有效的。 这是上传文件

<?php
$target = "../upload/";
$target = $target . str_replace(" ","_",( $_FILES['file']['name']));
$current = time();
$name=addslashes($_POST['title']);
$owner=$_POST['owner'];
$pic=str_replace(" ","_",($_FILES['file']['name']));
$time = strtotime($_POST['timestamp']);
$grade= implode(',&#32;', $_POST['g_group']);
$Loc= implode(',&#32;', $_POST['l_group']);
        mysql_connect("host", "database", "password") or die(mysql_error()) ;
        mysql_select_db("database") or die(mysql_error()) ;
        $query =("INSERT INTO UPLOAD (title,owner,faoGrade, foaLocation,date, expiry,route)
        VALUES
        ('$name', '$owner','$grade','$Loc','$current','$time', '$pic')");
        mysql_query($query);

        if(move_uploaded_file($_FILES['file']['tmp_name'], $target))
                            {
        echo  "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded, and your information has been added to the directory";
                    } else {
        echo "Sorry, there was a problem uploading your file using " . query ;
                                    }
?>

它不能真正在“服务器端”完成

但由于浏览器通常在下载过程中保持相同的“网页”处于打开状态,因此在下载开始后,该网页可以重定向到任何你想要的地方。(即使用Javascript)


因此,它是包含您需要修改的下载脚本链接的页面,而不是实际的下载脚本本身。

尝试将内容类型更改为application/pdf

我刚刚在PHP中完成了类似的创建工作,我必须创建一个文件上传程序,当用户将pdf文件上传到网页时,它将对该文件运行shell exec命令对其进行解密并允许更多权限,然后它将自动重新下载到用户计算机上,我还知道您缺少som还有,你的PHP方式你总是要阅读文件'upload.pdf',如果文件有不同的名称怎么办

readfile($fileName . '.pdf');

最后,在退出前的一行中,您有一个额外的分号,请尝试类似的操作,看看会发生什么

$query = "INSERT INTO database.table(item,name,expiry) VALUES ('$itemnu','$user','$expires')";  

if(mysql_query($query))
{
    header('Location:homepage.html');
}else{
   print_r($_GET); //check GET requests
   die; 
}

很抱歉,这是我更改文件之前的文件副本。它确实有$route而不是upload.pdf。分号被删除。下载的文件仍然无法用转换器打开???我明白了,从我可以看出,这是因为它没有等待文件完成处理,它正在直接下载,并且缺少一些内容或者是文件背后的一些东西导致它的文件大小比它应该的小,试着在它上面加一个睡眠…这样它在上传后加载10秒,然后继续使用脚本Daniel,Spot on,刚刚做了一个测试,文件大小是2kb,服务器上的大小是36kb。至少我知道为什么只需要找到一个修复程序。在当你发送标题时,试着写这一行:sleep(10);这将使它在继续执行脚本之前加载10秒,如果它返回的文件大小仍然很小,那是因为文件上载脚本减少了它,如果它返回得很好,那是因为它试图过快地处理所有事情。已经尝试过sleep(20);仍然是2KB,正在浏览代码。正在研究其他想法。
$query = "INSERT INTO database.table(item,name,expiry) VALUES ('$itemnu','$user','$expires')";  

if(mysql_query($query))
{
    header('Location:homepage.html');
}else{
   print_r($_GET); //check GET requests
   die; 
}