Upload funktion er lidt indviklet
Hmm. ja jeg er sgu nybegynder så jeg er startet med at "låne" koder rudnt omkring og rette dem til. En ven har programmeret en login funktion i sin tid som jeg har måtte få og så tænkte jeg at jeg ville lave en upload funktion beskyttet af den. Fandt den artikel på webcafen og klippede den ud og kørte den sammen med det jeg havde<?php
if($_SESSION['userLoggedIn']){
?>
<?PHP
/**
* Simpelt script der tager imod et filupload og lister
* filer i upload-biblioteket.
*
* Scriptet er et eksempel til en artikel paa WebCafe.dk:
*
* http://www.webcafe.dk/artikler/php/upload/
*/
/**
* Hvor skal filerne uploades til?
* Husk, at webserveren skal kunne skrive til dette bibliotek
*/
$konfiguration["upload_bibliotek"] = "./upload";
/* Hvor mange kilobytes maa filerne fylde per styk? */
$konfiguration["max_stoerrelse"] = "10000";
/**
* Checker PHP-version
*/
list($major, $minor, $rev) = explode(".", phpversion());
if($major < 4) {
die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
}
/**
* Udligner forskellene mellem 4.1.x og 4.0.x
* Bemaerk, at disse ikke er "superglobals"
*/
if($minor < 1) {
$_FILES = $HTTP_POST_FILES;
$_POST = $HTTP_POST_VARS;
$_SERVER = $HTTP_SERVER_VARS;
}
if($_FILES["upfil"]["size"] > 0) {
/**
* Hvis der er en fil, saa uploader vi den.
*
* Foerst slaar vi lige fast, hvor filen skal flyttes fra og til.
*/
$fra = $_FILES["upfil"]["tmp_name"];
$til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];
/**
* Checker lige om filen er for stor til at vi vil acceptere den.
* Vi bruger ceil() i stedet for round(), saa vi ikke faar den skoere
* situation, at fejlmeldingen siger, at filen er for stor, men angiver
* samme stoerrelse for filen og den oevre graense.
*/
$fil_stoerrelse = filesize($fra)/1024;
if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) {
die("Desværre - filen er for stor. Jeg accepterer kun " .
$konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
ceil($fil_stoerrelse) . "kb");
}
if(function_exists("move_uploaded_file")) {
move_uploaded_file($fra, $til);
} else {
copy($fra, $til);
}
header("Location: " . $_SERVER["PHP_SELF"]);
exit;
} else {
/**
* Intet tegn paa upload, saa vi viser bare listen over filer
* og HTML-formularen til nye uploads.
*/
$indhold = listFiler($konfiguration["upload_bibliotek"]);
$indhold .= bygFormular($_SERVER["PHP_SELF"]);
$output = bygSide("Upload af Mentol", $indhold);
}
/**
* Skriver ud til browseren
*/
echo $output;
exit;
/**************************************************\
** Hjaelpefunktioner **
\**************************************************/
function bygSide($titel, $indhold) {
/**
* Pakker indholdet ind i lidt formalia
*/
return '<html>
<head><title>' . $titel . '</title></head>
<body bgcolor="#ffffff">
<div align="right"><a href="./">Tilbage til artiklen</a></div>
' . $indhold . '</body>
</html>
';
}
function bygFormular($action) {
$formular = '<form action="' . $action . '" method="post" enctype="multipart/form-data">
<table border="1" cellpadding="5" cellspacing="0">
<tr>
<td align="right" bgcolor="#999999"><b>Fil til upload:</b></td>
<td bgcolor="#cccccc"><input type="file" name="upfil" /></td>
</tr>
<tr>
<td colspan="2" align="middle" bgcolor="#dddddd"><input type="submit" value="upload" /></td>
</tr>
</table>
</form>
';
return "<h2>Upload fil:</h2>" . $formular;
}
function listFiler($bibliotek) {
if($bib = @opendir($bibliotek)) {
/**
* Denne syntaks er forklaret i PHP-manualen:
* http://www.php.net/manual/en/function.readdir.php
*/
while (false !== ($fil = readdir($bib))) {
if($fil != "." && $fil != ".." && !ereg("^\..+", $fil)) {
$fil_liste[] = "<a href=\"$bibliotek/$fil\">$fil</a>";
}
}
closedir($bib);
sort($fil_liste);
if(is_array($fil_liste)) {
$liste = "<li>" . join("</li><li>", $fil_liste) . "</li>";
} else {
$liste = "<li>Ingen filer på lager</li>";
}
return "<h2>Filer på lager:</h2><ul>" . $liste . "</ul>";
} else {
die("Kunne ikke åbne biblioteket: " . $bibliotek);
}
}
?>
<?php
}
?>
Hvorfor kan den ikke det? I må forklare mig det..
