Hej Showsource..
Denne kode som du anbefalet, virker faktisk meget godt:
<?php
session_start(); // Bruges kun til vise en besked ved fejl/vellykket upload
// Navn på session som viser beskeder
$sess_navn = "besked";
// ca. 80 Kb må billedet fylde
$max_kb = 80;
// Sti til roden af dit domæne. En "defineret" sti kan også bruges:
// $base_path = "/disksti/til/roden/af/domain/";
$base_path = $_SERVER["DOCUMENT_ROOT"];
// Det dir som der skal uploades til
$image_dir = "hjemmeside/billeder/profil";
// Filtyper man kan uploade. Husk på dette uploadscript KUN er til billeder!
// Ved upload tjekkes om getimagesize() er sand, og bruges så sammen med strtr() til at navngive uploaded fil med filtypen
//
http://dk.php.net/manual/da/function.getimagesize.php$filtyper = array(1 => "gif", 2 => "jpg", 3 => "png", 4 => "swf");
// Tjek for skriverettigheder til uploaddir? 1 = ja, 0 = nej
$tjek_skriv = 1;
// HERUNDER BEHØVER/SKAL DU IKKE ÆNDRE !!!!!
function check_perms($var) {
//
http://dk.php.net/manual/da/function.fileperms.php$perms = fileperms($var);
if (($perms & 0xC000) == 0xC000) {
// Socket
$info = 's';
} elseif (($perms & 0xA000) == 0xA000) {
// Symbolic Link
$info = 'l';
} elseif (($perms & 0x8000) == 0x8000) {
// Regular
$info = '-';
} elseif (($perms & 0x6000) == 0x6000) {
// Block special
$info = 'b';
} elseif (($perms & 0x4000) == 0x4000) {
// Directory
$info = 'd';
} elseif (($perms & 0x2000) == 0x2000) {
// Character special
$info = 'c';
} elseif (($perms & 0x1000) == 0x1000) {
// FIFO pipe
$info = 'p';
} else {
// Unknown
$info = 'u';
}
// Owner
$info .= (($perms & 0x0100) ? 'r' : '-');
$info .= (($perms & 0x0080) ? 'w' : '-');
$info .= (($perms & 0x0040) ?
(($perms & 0x0800) ? 's' : 'x' ) :
(($perms & 0x0800) ? 'S' : '-'));
// Group
$info .= (($perms & 0x0020) ? 'r' : '-');
$info .= (($perms & 0x0010) ? 'w' : '-');
$info .= (($perms & 0x0008) ?
(($perms & 0x0400) ? 's' : 'x' ) :
(($perms & 0x0400) ? 'S' : '-'));
// World
$info .= (($perms & 0x0004) ? 'r' : '-');
$info .= (($perms & 0x0002) ? 'w' : '-');
$info .= (($perms & 0x0001) ?
(($perms & 0x0200) ? 't' : 'x' ) :
(($perms & 0x0200) ? 'T' : '-'));
return $info;
}
function badchar($var) { // Fjerner "bad" tegn i filnavn
$bad = "\\\"'*^´`+}{][£!§½%¤#=¨áàãââçéèêëìíîïñòóôõöùúûüýÿ?,\$";
for($i = 0; $i < strlen($bad); $i++) {
$var = str_replace($bad[$i], "", $var);
}
$replace = array("æ" => "ae", "ø" => "oe", "å" => "aa", "Æ" => "Ae", "Ø" => "Oe", "Å" => "AA", " " => "_");
foreach($replace as $key => $value) {
$var = str_replace($key, $value, $var);
}
return $var;
}
$errors = array(); // array for at vise evt. fejl i dir m.m.
if(!is_dir($base_path ."/". $image_dir)) {
if(is_dir($image_dir)) {
$moveto = $image_dir ."/";
if(true == $tjek_skriv) {
$rettigheder = strtolower(check_perms($moveto));
if($rettigheder != "drwxrwxrwx") {
$errors[] = "Tjek at der er skriverettigheder til uploaddir, \$image_dir = ". $image_dir;
}
}
}else{
$errors[] = "Dir som der skal uploades til findes ikke!!! \$image_dir = \"". $image_dir ."\"";
}
}else{
$moveto = $base_path ."/". $image_dir ."/";
if(true == $tjek_skriv) {
$rettigheder = strtolower(check_perms($moveto));
if($rettigheder != "drwxrwxrwx") {
$errors[] = "Tjek at der er skriverettigheder til uploaddir, \$image_dir = ". $image_dir;
}
}
}
$ver = phpversion();
if($ver < 4.1) {
$errors[] = "Scriptet kan kun bruges fra PHP ver. 4.1.0 og op";
}
$error_code = true;
if($ver < 4.2) {
$error_code = false;
}
if (isset($_FILES["upfile"]) && empty($errors)) {
if(true == $error_code) { // Fra PHP ver. 4.2.0 får man også ["error"] med ved upload
$arg = array(1 => "Filen er større end tilladt upload i php.ini", 2 => "Filen er større end ". floor(($max_kb*1024)/1000) ." Kb", 3 => "Sorry, men kun en del af filen blev uploadet", 4 => "Vælg en fil til upload!", 6 => "upload_tmp_dir er ikke defineret korrekt!");
if($_FILES["upfile"]["error"] > 0) {
$_SESSION[$sess_navn] = "Fejl ved upload: ". strtr($_FILES["upfile"]["error"], $arg);
header("Location:". $_SERVER["PHP_SELF"]);
exit();
}
}else{
if(trim($_FILES["upfile"]["name"]) == "") {
$_SESSION[$sess_navn] = "Du skal vælge en fil til upload!!!";
header("Location:". $_SERVER["PHP_SELF"]);
exit();
}
}
if($_FILES["upfile"]["size"] > ($max_kb*1024)) {
$_SESSION[$sess_navn] = "Filen er for stor til upload!!!";
header("Location:". $_SERVER["PHP_SELF"]);
exit();
}
if(false == ($str = getimagesize($_FILES["upfile"]["tmp_name"]))) {
$_SESSION[$sess_navn] = "Valgte fil til upload er ikke en billedfil!!!";
header("Location:". $_SERVER["PHP_SELF"]);
exit();
}
if(!array_key_exists($str[2], $filtyper)) {
$_SESSION[$sess_navn] = "Filtypen er ikke tilladt for upload!";
header("Location:". $_SERVER["PHP_SELF"]);
exit();
}
$file_name = $_FILES["upfile"]["name"];
$typen = end(explode(".", $file_name));
$filnavn = substr($file_name, 0, -strlen($typen));
if(empty($filnavn)) {
$filnavn = $file_name;
}
if(substr($filnavn, -1, 1) !=".") {
$filnavn = $filnavn .".";
}
$filnavn = $filnavn . strtr($str[2], $filtyper);
$filnavn = badchar($filnavn);
if(is_file($moveto . $filnavn)) {
$i = 0;
while (is_file($moveto . $filnavn)) {
$i++;
$filnavn = sprintf("%03u", $i) ."_". $filnavn;
}
}
if(move_uploaded_file($_FILES["upfile"]["tmp_name"], $moveto . $filnavn)) {
chmod($moveto . $filnavn, 0644);
$_SESSION[$sess_navn] = "Billedet er blevet uploadet!";
}else{
$_SESSION[$sess_navn] = "Billedet kunne desværre ikke flyttes!";
}
header("Location:". $_SERVER["PHP_SELF"]);
exit();
}
?><html><head><title>Billed upload</title>
</head>
<body>
<?php
if(!empty($errors)) {
$tekst = implode("\n\r", $errors);
echo nl2br(htmlentities($tekst));
}else{
?>
<form action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="multipart/form-data">
Accepterede filtyper for upload er <?php echo implode(", ", $filtyper); ?><br />
Max. filstørrelse for upload er <?php echo floor(($max_kb*1024)/1000); ?> Kb<br /><br />
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo($max_kb*1024); ?>">
<input name="upfile" type="file" size="32"> <input type="submit" value="Upload">
</form>
<?php
// Viser en evt. besked sat med session
if(isset($_SESSION[$sess_navn])) {
echo htmlentities($_SESSION[$sess_navn]);
unset($_SESSION[$sess_navn]);
}
}
?>
</body></html>
men hvis nu jeg f.eks. gerne vil have omdøbet filen, så den kommer til at hedde 2.jpg, ved at sende en variable med billedeupload.php?id=2.... hvordan kan det lade sig gi sig? og kan man gøre sådan, at den overskriver filen, hvis den eksistere i forvejen?