Nur bestimmte Dateien uploaden lassen

Boostergermany

Erfahrenes Mitglied
Hallo,
ich bräuchte eure Hilfe!

Nämlich will ich dass bei meinem Uploadscript nur .tbc dateien hochgeladen werden können...kann mir bitte mal einer weiterhelfen? Der einfachste Weg dafür reicht mir völlig aus...hier habt ihr mal meinen Code:

PHP:
if ($_GET['mode'] == 'ul') {
	head();
	echo "$formmsg";
	echo "<form action=\"".$_SERVER['PHP_SELF']."?mode=uls\"  enctype=\"multipart/form-data\" method=\"post\">\n
	<input type=\"file\" name=\"neuedatei\"><br>
	<input type=\"text\" value=\"$name\" name=\"author\"><br>
	<textarea rows=\"10\" cols=\"40\" name=\"desc\">$maxmsg</textarea><br><br>
	<input type=\"submit\" value=\"$ulmsg\"></form>";
	foot();
}
 
Das Formular ist nicht so wirklich interessant. Wie sieht denn deine Upload Routine aus?
 
PHP:
if ($_GET['mode'] == 'uls') {
	$fehler = 'none';
	$uid = uniqid(rand());
	$name = $uid."_".htmlentities($_FILES['neuedatei']['name']); 
	$name = "./files/".$name;
	$name = str_replace(' ','_',$name);
	$desc = htmlentities($_POST['desc']);
	$author = htmlentities($_POST['author']);
	if(strlen($desc)>1800) { $fehler = "$tl_d"; }
	if($_FILES['neuedatei']['size']>$maxfs) { $fehler = "$tl_f"; }
	if(strlen($author)>20) { $fehler = "$tl_n"; }
	if($fehler == 'none') {
		move_uploaded_file($_FILES['neuedatei']['tmp_name'], $name);
		chmod($name,0777);
		$sql = "INSERT INTO `".PREFIX."fasthost` ".
		"(`id`, `dls`, `file`, `desc`, `author`, `filid`, `date`) VALUES ('', '', '$name', '$desc', '$author', '$uid', '')";
		$result = mysql_query($sql);
		$sql = "SELECT * FROM `".PREFIX."fasthost` ORDER BY `id` DESC LIMIT 0,1";
		$result = mysql_query($sql);
		head();
		while($output = mysql_fetch_assoc($result)) {
			echo "<center><img src='img/erfolg.png' border='0' /><br><br><br><a href='?mode=info&id=$output[id]'><img src='img/weiter.png' border='0' /></a></center>";
		}
		foot();
	}
	else {
		head();
		echo $fehler."<br>\n";
		echo '<a href="?mode=ul">'.$back.'</a>';
		foot();
	}
}

sry, das is die upload routine ;)
 
Wenn du den Dateinamen kriegst erhälst du die Erweiterung unter anderem über:
PHP:
$ext = substr($dateiname, -3);

Dazu brauchst dann nur noch Prüfen, ob dies der von dir gewünschten Erweiterung entspricht oder nicht.
Ob der Inhalt der Datei auch dazu passt ist damit nicht gesichert. Von daher solltest du beim abspeichern der Datei auf dem Server die übergebene Erweiterung ersetzen durch deine gewünschte.
 
hm...ich hab das jetz so gemacht:

PHP:
if ($_GET['mode'] == 'uls') {
	$fehler = 'none';
	$uid = uniqid(rand());
	$name = $uid."_".htmlentities($_FILES['neuedatei']['name']); 
	$name = "./files/".$name;
	$name = str_replace(' ','_',$name);
	$desc = htmlentities($_POST['desc']);
	$author = htmlentities($_POST['author']);
	$ext = substr($_FILES['neuedatei'], -4); 
    if($_FILES['neuedatei']$ext == ".tbc") {$fehler = "Tut mir leid, die Datei ist kein Container!";}
	if(strlen($desc)>1800) { $fehler = "$tl_d"; }
	if($_FILES['neuedatei']['size']>$maxfs) { $fehler = "$tl_f"; }
	if(strlen($author)>20) { $fehler = "$tl_n"; }
	if($fehler == 'none') {
		move_uploaded_file($_FILES['neuedatei']['tmp_name'], $name);
		chmod($name,0777);
		$sql = "INSERT INTO `".PREFIX."fasthost` ".
		"(`id`, `dls`, `file`, `desc`, `author`, `filid`, `date`) VALUES ('', '', '$name', '$desc', '$author', '$uid', '')";
		$result = mysql_query($sql);
		$sql = "SELECT * FROM `".PREFIX."fasthost` ORDER BY `id` DESC LIMIT 0,1";
		$result = mysql_query($sql);
		head();
		while($output = mysql_fetch_assoc($result)) {
			echo "<center><img src='img/erfolg.png' border='0' /><br><br><br><a href='?mode=info&id=$output[id]'><img src='img/weiter.png' border='0' /></a></center>";
		}
		foot();
	}
	else {
		head();
		echo $fehler."<br>\n";
		echo '<a href="?mode=ul">'.$back.'</a>';
		foot();
	}
}

aber da kommt nur der fehler:

Parse error: parse error in C:\xampp\htdocs\container\index.php on line 105

und das ist diese Zeile:

PHP:
    if($_FILES['neuedatei']$ext == ".tbc") {$fehler = "Tut mir leid, die Datei ist kein Container!";}

was ist der fehler?
 
$_FILES['neuedatei'].$ext da muss ein Punkt dazwischen.

Und was sind denn .tbc Dateien? Höre ich zum erstmal heute.
 
das sag ich dir wenn die seite fertig ist ^^

aber ich hab n prob, jetz wird zwar nimmer angezeigt, dass es n fehler gibt, aber er lädt immernoch alles hoch ....was muss ich ändern....?
 
Zuletzt bearbeitet:
Zurück