Upload Problem

Rocky

Mitglied
Hallo Leute,
ich habe versucht einen File Upload zu schreiben,der nur 2 Dateitypen erlaubt allerdings blockiert er alle die ich bisher versucht habe hochzuladen und finde den fehler nicht hoffe ihr könnt mir helfen:
Man soll nur ".zip" und ".apk" Dateien hochladen könen

PHP:
<?php 
$target = "upload/"; 
$target = $target . basename( $_FILES['uploaded']['name']) ; 
$ok=1;

//This is our size condition 
if ($uploaded_size > 350000) 
{ 
echo "Ihre Datei ist zu groß.<br>"; 
$ok=0; 
} 

//This is our limit file type condition 
if ($uploaded_type =="file/apk" && "file/zip") 
{ 
echo "Datei wurde hochgeladen.<br>"; 
$ok=0; 
}
else
{
echo "Nur <b>.apk</b> und <b>.zip</b> Dateien erlaubt.<br>";
$ok=0;
}


//Here we check that $ok was not set to 0 by an error 
if ($ok==0) 
{ 
Echo "Sorry Ihre Datei wurde nicht hochgeladen"; 
} 

//If everything is ok we try to upload it 
else 
{ 
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)) 
{ 
echo "Die Datei ". basename( $_FILES['uploadedfile']['name']). " wurde hochgeladen"; 
} 
else 
{ 
echo "Sorry, es gab ein Problem beim hochladen ihrer Datei."; 
} 
} 
?>

Rocky
 
Zuletzt bearbeitet:
Also das hier


PHP:
if ($uploaded_type =="file/apk" && "file/zip") 
// Müsste  so
if ($uploaded_type =="file/apk" &&  $uploaded_type =="file/zip")

ich glaube jetzt mal ohne zu testen das das anders nicht funktioniert.
 
Nein das hat nicht geklappt ich glaube es liegt daran,dass
PHP:
if ($uploaded_type =="file/apk" && "file/zip")
das "$uploaded_type" nicht deklariert ist kann das sein wenn ja wie müsste ich es deklarieren
 
Entschuldigt wenn ich dumm zwischen frage aber müssten nicht die beiden Vergleichsopperanden durch Klammern getrennt sein (völlig unabhängig von der Frage ob die Vaariable richtig deklariert ist)?

PHP:
if (($uploaded_type =="file/apk") &&  ($uploaded_type =="file/zip"))

Meine es so in der PHP-Referenz gelesen zu haben, deswegen frage ich.
 
achso ich dachte das hättest du wo anders gemacht. Dann musst du das so machen:


PHP:
$uploaded_type = $_FILES['uploaded']['type'];

if ($uploaded_type =="file/apk" &&  $uploaded_type =="file/zip")

das $uploaded_size dürfte dann aber auch nicht funktionieren das müsste dan so ausehen

PHP:
$uploaded_size = $_FILES['uploaded']['size'];

if ($uploaded_size > 350000)

mach doch mal
PHP:
var_dump($_FILE);

das $_FILE ist ein Array und mit var_dump siehst du alles was in einem Array drin steht.
 
also sowohl

PHP:
$a = "1";
$b = "2";
// DAS
if($a == "1" && $b == "2"){
	echo "Alles in Ordnung<br>";
}else{
	echo "Fehler<br>";
}
// Als auch DAS sind richtig.
if(($a == "1") && ($b == "2")){
	echo "Alles in Ordnung<br>";
}else{
	echo "Fehler<br>";
}
// Das hier ist aber auf jeden fall falsch da beim zweiten der Vergleichsoperator fehlt. Das merkt man dann wenn man $b = "2" durch $b = "3" ersetzt. einfach mal ausprobieren.
if($a == "1" && "2"){
	echo "Alles in Ordnung<br>";
}else{
	echo "Fehler<br>";
}
 
  • Gefällt mir
Reaktionen: Joe
und guck mal oben bei deinem

PHP:
$ok = 0;

du setzt das ja überall auf 0, das kann ja nie funktionieren.

PHP:
//This is our limit file type condition 
if ($uploaded_type =="file/apk" && "file/zip") 
{ 
echo "Datei wurde hochgeladen.<br>"; 
$ok=0; //Hier auf 1 setzen denn da trifft es ja zu  
}
 
Habe den Code nun folgendermassen geändert aber er tut immer noch nichut, was er soll

PHP:
<?php
if($_POST['upload']){
$explode = explode('.', $HTTP_POST_FILES['ufile']['name']);
if($_POST['newname'] == ''){
$name = $HTTP_POST_FILES['ufile']['name'];
}else{
	if($explode[1] != 'apk' && $explode[1] != 'zip'){
		echo '<span style="color: red;">Es sind nur *.apk und *.zip Dateien erlaubt!</span><br />';
		//exit; beendet das Skript
		exit;
	}else{
		$name = $_POST['newname'].'.'.$explode[1];
	}
}
$path= "upload/".$name;
if($ufile !=none)
{
if(copy($HTTP_POST_FILES['ufile']['tmp_name'], $path))
{

echo '<span style="color: green;">Die Datei wurde erfolgreich hochgeladen!</span><br />';
echo 'Der Link zur Datei: <a href="upload/'.$name.'">http://android.bplaced.net/apps/upload/'.$name.'</a>';
}
else
{
echo "<span style=\"font-family: Arial, Helvetica, sans-serif; color: red;\">Fehler beim hochladen...</span>";
}
}

}
?>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
<table>
	<tr>
    	<td style="font-weight: bold;">Datei</td>
        <td>:</td>
        <td><input name="ufile" type="file" class="button" id="ufile" size="50" /></td>
    </tr>
    <tr>
    	<td style="font-weight: bold;">Neuer Name<br /><small>(Kann leer bleiben; ohne Endung)</small></td>
        <td>:</td>
        <td><input name="newname" type="text" style="widh: 200px;"/></td>
    </tr>
    <tr>
    	<td colspan="3"><input type="submit" name="upload" value="Hochladen" /></td>
	<td colspan="4"><input type=button onClick="window.location.href='upload/'" value="Dateien"></td>
    </tr>
</table>
</form>
 
Zuletzt bearbeitet:
Habe den Code nun folgendermassen geändert aber er tut immer noch nichut, was er soll

PHP:
<?php
if($_POST['upload']){
$explode = explode('.', $HTTP_POST_FILES['ufile']['name']);
if($_POST['newname'] == ''){
$name = $HTTP_POST_FILES['ufile']['name'];
}else{
	if($explode[1] != 'apk' && $explode[1] != 'zip'){
		echo '<span style="color: red;">Es sind nur *.apk und *.zip Dateien erlaubt!</span><br />';
		//exit; beendet das Skript
		exit;
	}else{
		$name = $_POST['newname'].'.'.$explode[1];
	}
}
$path= "upload/".$name;
if($ufile !=none)
{
if(copy($HTTP_POST_FILES['ufile']['tmp_name'], $path))
{

echo '<span style="color: green;">Die Datei wurde erfolgreich hochgeladen!</span><br />';
echo 'Der Link zur Datei: <a href="upload/'.$name.'">http://android.bplaced.net/apps/upload/'.$name.'</a>';
}
else
{
echo "<span style=\"font-family: Arial, Helvetica, sans-serif; color: red;\">Fehler beim hochladen...</span>";
}
}

}
?>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
<table>
	<tr>
    	<td style="font-weight: bold;">Datei</td>
        <td>:</td>
        <td><input name="ufile" type="file" class="button" id="ufile" size="50" /></td>
    </tr>
    <tr>
    	<td style="font-weight: bold;">Neuer Name<br /><small>(Kann leer bleiben; ohne Endung)</small></td>
        <td>:</td>
        <td><input name="newname" type="text" style="widh: 200px;"/></td>
    </tr>
    <tr>
    	<td colspan="3"><input type="submit" name="upload" value="Hochladen" /></td>
	<td colspan="4"><input type=button onClick="window.location.href='upload/'" value="Dateien"></td>
    </tr>
</table>
</form>

Geht denn der Upload ohne Bedingung überhaupt?
Ich stehe fast vor dem gleichen Problem.
Die Funktion is_uploaded_file funktioniert, aber move_uploaded_file geht nicht!
 
Zurück