[Upload-Script] Fehler Ausgeben

Cyber-GFX

Mitglied
Hallo Leute, ich möchte gerne das nur jpg, jpeg, gif und png Datein Hochgeladen werden.
Und max. sollte 2 MB sein!

Wie mach ich das?

Wenn es Überschreitet wird oder Falscher Dateityp Hochgeladen wurde, wie gibt man die Fehler an?

PHP:
<?php

if (isset($_FILES['datei']) and ! $_FILES['datei']['error'])
{
    $dir = 'files'; //script muss schreibrechte haben (chmod 0777)
    $filename = $_FILES['datei']['name'];
	$filename = md5(uniqid(rand())) . $filename; 
	$extensions = array(".gif"); 
    move_uploaded_file($_FILES['datei']['tmp_name'], $dir."/".$filename);

    echo "<h3>Datei Erfolgreich Hochgeladen!</h3><br /><br /> 
	<b>Direkter Link:</b><br />
http://vitecevolution.de/upload/files/$filename";

}

?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
 <input type="file" name="datei" />
 <input type="submit" value="Datei hochladen" />
</form>

MFG
 
hab da mal was Versucht, nun kommt dieser Fehler:

PHP:
Parse error: parse error, unexpected $ in /srv/www/web18/html/upload/upload.php on line 34

PHP:
<?php

    $dir = 'files'; //script muss schreibrechte haben (chmod 0777)
	$pfad = "http://vitecevolution.de/upload";

if (isset($_FILES['datei']) and ! $_FILES['datei']['error'])
{
    $filename = $_FILES['datei']['name'];
	$filename = md5(uniqid(rand())) . $filename;
	$type = $_FILES['datei']['type']; 
    $size = $_FILES['datei']['size'];  
    move_uploaded_file($_FILES['datei']['tmp_name'], $dir."/".$filename);
	
	
if($type != "image/gif") { 
    $err[] = "nur gif und 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)) {  
    echo "<h3>Datei Erfolgreich Hochgeladen!</h3><br /><br />
	<a href='$pfad/$dir/$filename' target='_blank'>$pfad/$dir/$filename</a>";
	 
}  
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" onsubmit="return zeigeBalken();" />
 <input type="file" name="datei" /><br />
 <input type="submit" value="Datei hochladen" />
</form><br />
<div id="ladebalken" style="display:none" />
  <img src="wait.gif" alt="Lade" />

Und man kann Trotzdem jpg datein hochladen...
 
PHP:
<?php
error_reporting(E_ALL);

    $dir = 'files'; //script muss schreibrechte haben (chmod 0777)
    $pfad = "http://vitecevolution.de/upload";

if (isset($_FILES['datei']) and ! $_FILES['datei']['error'])
{
    $filename = $_FILES['datei']['name'];
    $filename = sha1(microtime()) . $filename;
    $image = getimagesize($_FILES['datei']['tmp_name']);

    $size = $_FILES['datei']['size'];      
    
if($image['mime'] != "image/gif") { 
    $err[] = "Nur gif 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) AND !move_uploaded_file($_FILES['datei']['tmp_name'], "./".$dir."/".$filename)) {
	$err[] = "Fehler während des Hochladens.";
}

if(empty($err)) {
	
    echo "<h3>Datei Erfolgreich Hochgeladen!</h3><br /><br />
    <a href='$pfad/$dir/$filename' target='_blank'>$pfad/$dir/$filename</a>";
     
} else {
	foreach($err as $val) {
		echo $val."<br/>";
	}
}
}  
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" onsubmit="return zeigeBalken();" />
 <input type="file" name="datei" /><br />
 <input type="submit" value="Datei hochladen" />
</form><br />
<div id="ladebalken" style="display:none" />
  <img src="wait.gif" alt="Lade" />

Funktioniert einwandfrei auf diese Weise.
Im produktiven Einsatz natürlich [phpf]error_reporting[/phpf] auf 0 stellen.

Was ich geändert habe:
Statt auf den Typ des Uploads zu verlassen, lieber [phpf]getimagesize[/phpf] benutzen, da das Formular einfach den Dateityp abfragt... und man kann eine .exe auch einfach .gif nennen.
Zweitens hattest du die if Bedingung nicht geschlossen, weshalb der Fehler auftrat.
 
Vielen Dank! Funktoniert Super

Nun möchte wenn die "codes" Ausgegeben werden, zb ein BBCode, das es in einem input oder textarea rein soll. Wie mach ich das
ambesten?

edit: das Upload von gif´s und png´s klappt net:

PHP:
if($image['mime'] $image != "image/jpeg" && $image != "image/gif" && $image != "image/png") {

mfg
 
Zuletzt bearbeitet:
Vielen Dank! Funktoniert Super
edit: das Upload von gif´s und png´s klappt net:

PHP:
if($image['mime'] $image != "image/jpeg" && $image != "image/gif" && $image != "image/png") {

mfg

Also den Fehler müsstest du eigentlich schon fast riechen so offensichtlich wie er ist.

$image['mime'] !="image/jpeg" && $image['mime'] && $image !="image/gif" && u.s.w
 
Okay Danke, Funktoniert soweit, nun noch zu dieser Frage:

Code:
Nun möchte wenn die "codes" Ausgegeben werden, zb ein BBCode, das es in einem input oder textarea rein soll. Wie mach ich das
ambesten?
 
PHP:
echo "<input type='text' value='[ img]".$pfad."/".$dir."/".$filename."[ /img]' />";

So zum Beispiel.
 
Zurück