2013-10-24 65 views
0

我在我的PHP中遇到了一個小問題。php mysql返回代碼文件

目的是創建一個mySQL數據庫,並創建PHP頁面來上傳,列出和下載文件。

mySQL,上傳和列表頁面都很好,但是當我嘗試下載時,我得到的是代替文件,源代碼或者什麼也沒有。

你能幫我看看我的錯誤嗎?

這是read.php的腳本(文件列表)

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
<title>Carica file nel database</title> 
</head> 

<p><b>Clicca su uno dei seguenti file</b><p><p></p> 
<?php 
include ("config.php"); 
include ("menu.php"); 

// connessione e selezione del database 
mysql_connect('localhost', $userdb, $passdb) 
or die('Connessione non riuscita: ' . mysql_error()); 

if(!mysql_select_db($database)) 
die('Selezione database fallita!'); 

// query per ottenere l'elenco dei files nel DB 
$query = "SELECT * FROM data"; 

$risultato = mysql_query($query) 
or die('Query non valida: ' . mysql_error()); 

// se ci sono files nel DB 
if(mysql_numrows($risultato)) 
{ 
    // estrazione dei risultati e stampa dei link ai files 
    while ($tmp = mysql_fetch_array($risultato)) 
    { 
     echo "<p><a href=\"mostra.php?id=$tmp[id]\">$tmp[titolo]</a></p>\n"; 
    } 
} 
else 
{ 
    echo '<p>Nessun file presente nel database</p>'; 
} 
?> 

<body></body> 
</html> 

而mostra.php(在意大利語中的意思是「秀」),這將使我下載的文件,方法是:

<?php 
include ("config.php"); 
include ("menu.php"); 

// connessione e selezione del database 

mysql_connect('localhost', $userdb, $passdb) 
or die('Connessione non riuscita: ' . mysql_error()); 

if(!mysql_select_db($database)) 
die('Selezione database fallita!'); 

// query per recuperare il file 

$query = 'SELECT file FROM data WHERE id = '.$_GET['id']; 
$risultato = mysql_query($query) or die('Query non valida: ' . mysql_error()); 
$tmp = mysql_fetch_array($risultato); 

// invio una intestazione contenente il tipo MIME 
header("Content-Type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=\"$tmp[titolo]\""); 

// invio il contenuto del file 
echo $file; 
?> 
+0

我想推薦你改變了'mysql_ *''爲* mysqli_'(http://br2.php.net/manual/en/book.mysqli.php)。 'mysql_ *'已棄用。 – Minoru

+0

甚至使用PDO – Mina

+0

添加上面的使用PDO而不是mysql_ *函數的註釋,也請注意,用戶可以通過SQL注入修改完整的數據庫,因爲您不驗證$ _GET ['id']中的你的mostra.php!請注意,不要在生產中使用上述代碼。 – Luceos

回答