0

私のPHPで少し問題が発生しました。

目的は、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;
?>
4

1 に答える 1

0

http://php.net/manual/en/function.readfile.phpを使用する必要がありますreadfile()

readfile($file);
exit;

また$tmp[titolo]{$tmp['titolo']}

header("Content-Disposition: attachment; filename=\"{$tmp['titolo']}\"");
于 2013-10-24T10:43:14.327 に答える