Datei in anderen Ordner laden

schiese

Erfahrenes Mitglied
Hallo, ich habe mir ein fertiges Skript genommen und es meinen Bedürfnissen angepasst. Jetzt will ich aber noch, dass die Bilder im Ordner /bilder gespeichert werrden. Wo muss ich das einsetzen? Habe schon verschiedene Möglichkeiten probiert aber nichts hat funktioniert!


PHP:
<?php 
session_start();
$tempname = $_FILES['file']['tmp_name']; 
$name = $_FILES['file']['name']; 

if ( file_exists($_SESSION['user']."jpg") Or file_exists($_SESSION['user'].".jpeg") ) {
	echo "Eine Datei mit diesem Namen befindet sich schon auf dem Server!";
} else {
$type = $_FILES['file']['type']; 
$size = $_FILES['file']['size']; 

if( $type != "image/pjpeg" && $type != "image/jpeg" && $type != "image/jpg" ) { 
    $err[] = "nur jpeg Dateien dürfen hochgeladen werden."; 
} 
if($size > "15000") { 
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!"; 
} 

if(empty($err)) { 
    copy("$tempname", "$name"); 
    echo "Die Datei $name wurde erfolgreich hochgeladen!"; 

if(rename($name, $_SESSION['user'].".jpg")) {
  echo "";
} else {
  echo "";
}

} 
else { 
    foreach($err as $error) 
    echo "$error<br>"; 
} 

}
?>

Wie ist das eigentlich mit der Sicherheit? Ich habe gelesen, dass man sich so Trojaner und Würmer einfangen kann. Stimmt das?

Danke schiese
 
Danke für deine Antwort. Habe es jetzt hinbekommen, dass die Datei im Ordner bilder gespeichert wird und anschließend umbenannt wird. Aber wenn ich jetzt eine andere Datei hochladen will, soll er eigentlich sagen, dass schon eine Datei namens
Code:
"bilder/".$_SESSION['user'].".jpg"
vorhanden ist und abbrechen. Aber er führt das Skript weiter aus und gibt mir eine Fehlermeldung. Was muss ich ändern?

PHP:
<?php
session_start();

if ( file_exists("bilder/".$_SESSION['user']."jpg") ) {
    echo "Eine Datei mit diesem Namen befindet sich schon auf dem Server!";
} else {
}
$tempname = $_FILES['file']['tmp_name']; 
$name = $_FILES['file']['name'];
$uploaddir = 'htdocs/single/bilder/';

$type = $_FILES['file']['type']; 
$size = $_FILES['file']['size']; 

if( $type != "image/pjpeg" && $type != "image/jpeg" && $type != "image/jpg" ) { 
    $err[] = "nur jpeg Dateien dürfen hochgeladen werden."; 
} else {
if($size > "15000") { 
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!"; 
} else {

if(empty($err)) { 
    move_uploaded_file($tempname, $uploaddir . $name );
	 
    echo "Die Datei $name wurde erfolgreich hochgeladen!"; 

if ( !file_exists("bilder/".$_SESSION['user'].".jpg") ) {
if(rename("bilder/".$name, "bilder/".$_SESSION['user'].".jpg")) {
  echo "";
} else {
  echo "$error<br>";
}

} else {
	echo "";
}

} 
else { 
    foreach($err as $error) 
    echo "$error<br>"; 
} 
}
}



?>

Danke schiese
 

Anhänge

  • 24752attachment.jpg
    24752attachment.jpg
    27,4 KB · Aufrufe: 9
Hatte Tomaten aufn Augen. Nun gehts!
PHP:
<?php
session_start();

if ( file_exists("bilder/".$_SESSION['user'].".jpg") ) {
    echo "Eine Datei mit diesem Namen befindet sich schon auf dem Server!";
} else {
$tempname = $_FILES['file']['tmp_name']; 
$name = $_FILES['file']['name'];
$uploaddir = 'htdocs/single/bilder/';

$type = $_FILES['file']['type']; 
$size = $_FILES['file']['size']; 

if( $type != "image/pjpeg" && $type != "image/jpeg" && $type != "image/jpg" ) { 
    $err[] = "nur jpeg Dateien dürfen hochgeladen werden."; 
} else {
if($size > "15000") { 
    $err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!"; 
} else {

if(empty($err)) { 
    move_uploaded_file($tempname, $uploaddir . $name );
	 
    echo "Die Datei $name wurde erfolgreich hochgeladen!"; 

if ( !file_exists("bilder/".$_SESSION['user'].".jpg") ) {
if(rename("bilder/".$name, "bilder/".$_SESSION['user'].".jpg")) {
  echo "";
} else {
  echo "$error<br>";
}

} else {
	echo "";
}

} 
else { 
    foreach($err as $error) 
    echo "$error<br>"; 
} 
}
}

}

?>

Aber noch einmal eine Frage zur Sicherheit. Kann man sich speziell mit meinem Code Viren, o.ä. einfangen?

schiese
 
Und wie kann ich das verhindern? Könntest du mal bitte ein Beispiel oder einen Link nennen?
Habe mir nämlich mal nen Trojaner eingefangen, der irgendwie in ner MP3-Datei war!
schiese
 
Dass ist nur möglich, wenn der Webserver eine Anti-Viren-Software besitzt und diese die eingehenden Dateien prüft. PHP kann so etwas mit Sicherheit nicht ersetzen.
 
Habe doch noch ein Problem. Bei mir aufm PC funktioniert das Skript, aber aufm Server funktioniert es leider nicht. Hat jemand eine Idee, woran es liegt? Hat es was mit safe_mode = off zu tun?

PHP:
<?php 
session_start();


if ( file_exists("bilder/".$_SESSION['user'].".jpg") ) {
    echo "Sie haben schon ein Bild hochgeladen. Mehr Bilder sind nicht m&ouml;glich!<br />";
    echo "Sie k&ouml;nnen diese aber <a href='bildloeschen.php'>l&ouml;schen</a> und eine andere hochladen!";
} else {


$tempname = $_FILES['file']['tmp_name']; 
$name = $_FILES['file']['name'];
$uploaddir = 'htdocs/single/bilder/';

$type = $_FILES['file']['type']; 
$size = $_FILES['file']['size']; 

if( $type != "image/pjpeg" && $type != "image/jpeg" && $type != "image/jpg" ) { 
    $err[] = "nur jpeg Dateien dürfen hochgeladen werden."; 
} 
if($size > "15000") { 
    $err[] = "Die Datei, welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 15 KB!"; 
} 

if(empty($err)) { 
    move_uploaded_file($tempname, $uploaddir . $name );
	 
    echo "Die Datei $name wurde erfolgreich hochgeladen!"; 

if(rename("bilder/".$name, "bilder/".$_SESSION['user'].".jpg")) {
  echo "";
} else {
  echo "";
}

} 
else { 
    foreach($err as $error) 
    echo "$error<br>"; 
} 

}
?>

schiese
 
Zurück