Mam skrpyt view_php, który pokazyje pliki dodane do katalogu uploads znajdujacego się na serwerze.
<?php # view_files.php
// Strona pozwala u¿ytkownikom przegl±daæ pliki umieszczone na serwerze.
// Ustawienie tytu³u strony i do³±czenie nag³ówka HTML.
$page_title = 'Przegl±danie plików';
include_once ('includes/naglowek.html');
require_once ('../mysql_connect.php'); // Po³±czenie z baz± danych.
$first = TRUE; // Inicjalizacja zmiennej.
// Wys³anie zapytania do bazy danych.
$query = \"SELECT upload_id, file_name, ROUND(file_size/1024) AS fs, description, DATE_FORMAT(upload_date, '%M %e, %Y') AS d FROM uploads ORDER BY upload_date DESC\";
// Wy¶wietlenie wszystkich adresów URL.
// Je¶li jest to pierwszy rekord, wtedy zostanie utworzona tabela header.
if ($first) {
echo '<table border=\"0\" width=\"100%\" cellspacing=\"3\" cellpadding=\"3\" align=\"center\"> <tr>
<td align=\"left\" width=\"20%\"><font size=\"+1\">Nazwa pliku</font></td>
<td align=\"left\" width=\"40%\"><font size=\"+1\">Opis</font></td>
<td align=\"center\" width=\"20%\"><font size=\"+1\">Rozmiar pliku</font></td>
<td align=\"left\" width=\"20%\"><font size=\"+1\">Data umieszczenia</font></td>
</tr>';
} // Koniec pêtli warunkowej ze zmienn± $first.
// Wy¶wietla wszystkie rekordy.
<td align=\"left\"><a href=\"download_file.php?uid={$row['upload_id']}\">{$row['file_name']}</a></td>
<td align=\"left\">\" . stripslashes($row['description']) . \"</td>
<td align=\"center\">{$row['fs']}kb</td>
<td align=\"left\">{$row['d']}</td>
</tr>n\";
$first = FALSE; // Zwrócono jeden rekord.
} // Koniec pêtli while.
// Je¶li nie wy¶wietlono ¿adnego rekordu...
if ($first) {
echo '<div align=\"center\">Aktualnie nie ma ¿adnego pliku.</div>'; } else {
echo '</table>'; // Zamkniêcie tabeli. }
mysql_close(); // Zamkniêcie po³±czenia z baz± danych. include_once ('includes/stopka.html'); // Do³±czenie stopki HTML.
?>
Jest też plik download_file, który powinien pobierać pliki z serwera a zwraca jedynie że odnalezienie pliku było niemozliwe
<?php # download_file.php
// Strona pozwala na pobranie pliku z serwera
if (is_numeric ($_GET['uid'])) { // Identyfikator pliku umieszczonego na serwerze.
require_once ('../mysql_connect.php'); // Po³±czenie z baz± danych.
// Pobranie informacji na temat pliku.
$query = \"SELECT file_name, file_type, file_size FROM uploads WHERE upload_id = {$_GE
T['uid']}\";
mysql_close(); // Zamkniêcie po³±czenia z baz± danych.
// Okre¶lenie nazwy pliku umieszczonego na serwerze.
$the_file = '../uploads/' . $_GET['uid'] . '.' . $extension[1];
// Sprawdzenie czy plik istnieje.
// Wys³anie pliku.
header (\"Content-Type: application/$ft\"); header (\"Content-disposition: attachment; filename=$fn\"); header (\"Content-Length: $fs\");
$message = '<p>Plik zosta³ wys³any.</p>';
} else { // Plik nie istnieje.
$message = '<p><font color=\"red\">Odnalezienie pliku na serwerze nie by³o mo¿liwe. Przepraszamy za zaistnia³± niedogodno¶æ.</font></p>';
}
} else { // Nieprawid³owy identyfikator pliku umieszczonego na serwerze.
$message = '<p><font color=\"red\">Proszê wybraæ poprawny plik znajduj±cy siê na serwerze.</font></p>';
}
// Ustawienie tytu³u strony i do³±czenie nag³ówka HTML.
$page_title = 'Pobieranie pliku';
include_once ('includes/naglowek.html');
include_once ('includes/stopka.html');
?>
plik do umieszczania plików wyglada tak:
<?php # add_file.php
// Strona pozwala u¿ytkownikom umie¶ciæ pliki na serwerze.
// Ustawienie tytu³u strony i do³±czenie nag³ówka HTML.
$page_title = 'Umieszczanie pliku na serwerze';
include ('includes/naglowek.html');
if (isset($_POST['submit'])) { // Obs³uga formularza.
require_once ('../mysql_connect.php'); // Po³±czenie z baz± danych.
// Funkcja usuwaj±ca znak '/' i obcinaj±ca dane wprowadzone w formularzu.
function escape_data ($data) {
}
} // Koniec sekcji funkcji escape_data().
// Sprawdzenie obecno¶ci opisu (nie jest wymagane).
if (!empty($_POST['description'])) { $d = escape_data($_POST['description']);
} else {
$d = '';
}
// Dodanie rekordu do bazy danych.
$query = \"INSERT INTO uploads (file_name, file_size, file_type, description, upload_date) VALUES ('{$_FILES['upload']['name']}', {$_FILES['upload']['size']}, '{$_FILES['upload']['type']}', '$d', NOW())\";
if ($result) {
// Utworzenie nazwy pliku.
$extension = explode ('.', $_FILES['upload']['name']); $filename = $uid . '.' . $extension[1];
// Przenoszenie pliku.
echo '<p>Plik zosta³ umieszczony na serwerze!</p>'; } else {
echo '<p><font color=\"red\">Przeniesienie pliku nie by³o mo¿liwe.</font></p>';
// Usuniêcie rekordu z bazy danych.
$query = \"DELETE FROM uploads WHERE upload_id = $uid\";
}
} else { // Je¶li zapytanie na bazie danych nie zostanie wykonane prawid³owo.
echo '<p><font color=\"red\">Na skutek b³êdu systemowego wys³ane zapytanie nie mog³o zostaæ przetworzone. Przepraszamy za zaistnia³± niedogodno¶æ.</font></p>'; }
mysql_close(); // Zamkniêcie po³±czenia z baz± danych.
} // Koniec instrukcji warunkowej obs³uguj±cej dane wprowadzane w formularzu.
?>
<form enctype=\"multipart/form-data\" action=\"
<?php echo $_SERVER['PHP_SELF']; ?>\" method=\"post\">
<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"524288\">
<fieldset><legend>W celu umieszczenia pliku na serwerze nale¿y wype³niæ formularz:</legend>
<p><b>Plik:</b> <input type=\"file\" name=\"upload\" /></p>
<p><b>Opis:</b> <textarea name=\"description\" cols=\"40\" rows=\"5\"></textarea></p>
</fieldset>
<div align=\"center\"><input type=\"submit\" name=\"submit\" value=\"Wy¶lij\" /></div>
</form><!-- Koniec formularza-->
<?php
include ('includes/stopka.html'); // Do³±czenie stopki HTML.
?>
Jak rozwiazać problem zpobieraniem plików przez ten skrypt download_file

Prosze o pomoc