Probeer dit maar eens:
PHP-code:
<?php
//standaardinstellingen
$max_grootte = 10*1024*1024; //maximum grootte in bytes.
$ext_toegestaan = array('.jpg', '.jpeg', '.png', '.gif', '.txt'); //toegestane bestandsextensies.
$uploadmap = 'upload'; //map waarin bestanden gezet moeten worden, zorg ervoor dat deze map bestaat!
$wachtwoord = 'wachtwoordhier'; //wachtwoord om in te loggen.
// Opmerking:
// Het is verstandig om een bestand index.html in de uploadmap te zetten.
// Als iemand de directe url naar een bestand weet kan het zonder in te loggen worden gedownload.
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Bestand Upload</title>
</head>
<body>
<h1>Bestand Upload</h1>
<?php
session_start();
//login verwerken
if ($_POST['pass']) {
if ($_POST['pass'] == $wachtwoord) {
$_SESSION['password'] = $_POST['pass'];
echo "je bent ingelogd";
}
else {
echo "wachtwoord incorrect";
}
}
//logout verwerken
if ($_GET['logout'] == "TRUE") {
unset($_SESSION['password']);
session_destroy();
echo "je bent uitgelogd";
}
//als ingelogd
if (($_SESSION['password'] == $wachtwoord) || ($_POST['pass'] == $wachtwoord)) {
echo "<p><a href=\"".$_SERVER['PHP_SELF']."?logout=TRUE\">Uitloggen</a></p>";
//bestandupload verwerken
if ($_FILES['bestand']) {
//er is een bestand
if ($_FILES['bestand']['size'] <= $max_grootte) {
//bestand is kleiner dan 10 MB
if (in_array(strtolower(substr($_FILES['bestand']['name'], strpos($_FILES['bestand']['name'], '.'))), $ext_toegestaan)) {
//bestand is toegestaan
if (!file_exists($uploadmap."/".$_FILES['bestand']['name'])) {
//bestand bestaat nog niet
if (move_uploaded_file($_FILES['bestand']['tmp_name'], $uploadmap."/".$_FILES['bestand']['name'])) {
//bestand succesvol geupload
echo "Bestand succesvol geupload!<br /><br />";
}
else {
//upload mislukt
echo "Bestandsupload mislukt.<br /><br />";
}
}
else {
//bestand bestaat
echo "Er bestaat al een bestand met dezelfde naam.<br /><br />";
}
}
else {
//bestand is niet toegestaan
echo "Het bestandstype van het geuploade bestand is niet toegestaan.<br /><br />";
}
}
else {
//bestand is te groot
echo "Het geuploade bestand is te groot, de maximale bestandsgrootte is $max_grootte bytes.<br /><br />";
}
}
//bestandverwijdering verwerken
if ($_GET['del'] && is_file($uploadmap."/".$_GET['del'])) {
if (unlink($uploadmap."/".$_GET['del'])) {
echo "Bestand ".htmlspecialchars($_GET['del'])." verwijderd.<br />";
}
else {
echo "Bestand ".htmlspecialchars($_GET['del'])." kan niet worden verwijderd.<br /><br />";
}
}
//bestandslijst
$dir_handle = opendir($uploadmap);
while (($bestand = readdir($dir_handle)) !== false) {
if (($bestand != "..") && ($bestand != ".") && ($bestand != "index.html")) {
echo "<a href=\"".$bestand."\">".$bestand."</a>";
echo " [<a href=\"".$_SERVER['PHP_SELF']."?del=".$bestand."\">x</a>]<br />";
}
}
closedir($dir_handle);
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_grootte; ?>" />
<input type="file" name="bestand" /><br />
<input type="submit" value="Upload" />
</form>
<?php
}
else {
//loginform
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<input type="text" name="pass" /><br />
<input type="submit" value="Login" />
</form>
<?php
}
?>
</body>
</html>
Zorg ervoor dat er een map met de naam 'upload' bestaat in dezelfde map waarin je het script zet. Inhoud van het script uiteraard opslaan in een PHP-bestand.
Direct aan het begin van het script kun je zaken zoals wachtwoord, maximale bestandsgrootte en toegestane bestandsextensies aanpassen.