[PHP] Datei Upload geht nicht keine Fehlermeldungen

mydoys.de

Well-known member
ID: 84968
L
20 April 2006
2.757
125
Ich habe mir von jemanden ein kleines Upload Script machen lassen weil ich das gebraucht habe..

Aber irgendwie funzt das nicht kann sich das jemand mal bitte ansehen?

PHP:
//BILD UPLOAD
$arr_erlaube_dateityp = array(gif,jpg,jpeg,png);
$erlaubte_extensionen = join(', ',$arr_erlaube_dateityp);
// Uploaddurchlauf Start
for ($i=0; $i<count($_FILES['UPFILE']['name']); $i++) {
	if ($_FILES['UPFILE']['name'][$i] == '')
	{
	continue;
	}
// Zeichenfilter
$File = strtr(stripslashes($_FILES['UPFILE']['name'][$i]), '\'" |\\/?!*:#', '___________');

// Dateiendung ermitteln
$punkt = strrpos($File, '.');
$laenge = strlen($File);
$endung = strtolower(substr($File, -($laenge - $punkt - 1)));
$dname = substr($File, 0, -($laenge - $punkt - 1));

// Fehlerausgabe wenn Dateiendung nicht erlaubt
if (!in_array($endung, $arr_erlaube_dateityp)) {
fehlerausgabe("Die Dateiendung <b>$endung</b> ist nicht erlaubt");
continue;
}


// Zufallszeichen fuer Dateiname
function randomstring($dateiname) 
	{
	$dateiname = strtolower(substr(md5(microtime()),0,8));
	return $dateiname; 
	}
// Dateiendung ermitteln
	$punkt = strrpos($File, '.');
	$laenge = strlen($File);
	$endung = strtolower(substr($File, -($laenge - $punkt - 1)));
	$dname = substr($File, 0, -($laenge - $punkt - 1));

	$dateipfad_name = $picpfad.$file;
// Zufallsdateiname erzeugen
	$rand_value = randomstring($file);
	$newfilenamekompl = "$rand_value.$endung";
	$savename = $picpfad.$newfilenamekompl;

// hochgeladene Daeien speichern
	if(@move_uploaded_file($_FILES['UPFILE']['tmp_name'][$i], $savename)) {
	chmod($savename, 0777);
	} 
echo"$newfilenamekompl";
}

Damit rufe ich die Bild datein vom Rechner auf:

PHP:
<input class="upfileform" type="file" name="UPFILE" size="20">

in der Echo Ausgabe steht NIX...
Und hochgeladen wird auch nix

In
PHP:
$picpfad
steht mein Ordnername
 
Zuletzt bearbeitet:
Diese Funktion fehlt schonmal da geht es schon los ;) "fehlerausgabe"

füge das mal am anfang deines Scriptes ein
PHP:
function fehlerausgabe($str)
{
    if(!empty($str))
        echo $str;
    else
        echo "Fehlermeldung leer!";

    return;
}
 
Diese Funktion fehlt schonmal da geht es schon los ;) "fehlerausgabe"

füge das mal am anfang deines Scriptes ein
PHP:
function fehlerausgabe($str)
{
    if(!empty($str))
        echo $str;
    else
        echo "Fehlermeldung leer!";

    return;
}



habe ich gemacht script sieht jetzt so aus:
PHP:
//BILD UPLOAD
function fehlerausgabe($str)
{
    if(!empty($str))
        echo $str;
    else
        echo "Fehlermeldung leer!";

    return;
}  


$arr_erlaube_dateityp = array(gif,jpg,jpeg,png);
$erlaubte_extensionen = join(', ',$arr_erlaube_dateityp);
// Uploaddurchlauf Start
for ($i=0; $i<count($_FILES['UPFILE']['name']); $i++) {
	if ($_FILES['UPFILE']['name'][$i] == '')
	{
	continue;
	}
// Zeichenfilter
$File = strtr(stripslashes($_FILES['UPFILE']['name'][$i]), '\'" |\\/?!*:#', '___________');

// Dateiendung ermitteln
$punkt = strrpos($File, '.');
$laenge = strlen($File);
$endung = strtolower(substr($File, -($laenge - $punkt - 1)));
$dname = substr($File, 0, -($laenge - $punkt - 1));

// Fehlerausgabe wenn Dateiendung nicht erlaubt
if (!in_array($endung, $arr_erlaube_dateityp)) {
fehlerausgabe("Die Dateiendung <b>$endung</b> ist nicht erlaubt");
continue;
}


// Zufallszeichen fuer Dateiname
function randomstring($dateiname) 
	{
	$dateiname = strtolower(substr(md5(microtime()),0,8));
	return $dateiname; 
	}
// Dateiendung ermitteln
	$punkt = strrpos($File, '.');
	$laenge = strlen($File);
	$endung = strtolower(substr($File, -($laenge - $punkt - 1)));
	$dname = substr($File, 0, -($laenge - $punkt - 1));

	$dateipfad_name = $picpfad.$file;
// Zufallsdateiname erzeugen
	$rand_value = randomstring($file);
	$newfilenamekompl = "$rand_value.$endung";
	$savename = $picpfad.$newfilenamekompl;

// hochgeladene Daeien speichern
	if(@move_uploaded_file($_FILES['UPFILE']['tmp_name'][$i], $savename)) {
	chmod($savename, 0777);
	} 
echo"$newfilenamekompl";
}

Nix. passiert
 
Mach mal 'n print_r( $_FILES ); am Anfang der Datei.

da steht dan : Array ( )
Ich muss vieleicht auch dazusagen das in der datei noch mehr sachen stehen ich aber nur die sachen gepostet haben die damit zusammen hängen..

Aber hier mal das KOmplette Forumular ...

diese ist der Komplette bereich um den es geht..

PHP:
 }
        elseif($_GET['jump']=="markiererspeichern")
        {
            $anzahl = mysql_num_rows(mysql_query("SELECT * FROM markierer_lexikon WHERE (markierer= '$_POST[suchwort]')"));
            if ($anzahl != 0)
            {
                echo("<font color=\"red\">Leider ist für diesen Suchbegriff schon etwas vorhanden :-(</font><br>");
                echo "<br><br><a href='javascript:history.back()'><b>zurück...</b></a>";
                include_once("footer.inc.php");
                die();
            }
            $datum = date("j.m.Y");
            $_POST['suchwort'] = trim($_POST['suchwort']);
            $_POST['type'] = trim($_POST['type']);
           //mysql_query("INSERT INTO `markierer_lexikon` (`markierer`, `text`, `type`, `eingetragenvon`, `datum`, `bild`) VALUES ('$_POST[suchwort]', '$_POST[text]', '$_POST[type]', '$_POST[name]', '$datum', '$newfilenamekompl') ");
            echo mysql_error();


//BILD UPLOAD
function fehlerausgabe($str)
{
    if(!empty($str))
        echo $str;
    else
        echo "Fehlermeldung leer!";

    return;
}  


$arr_erlaube_dateityp = array(gif,jpg,jpeg,png);
$erlaubte_extensionen = join(', ',$arr_erlaube_dateityp);
// Uploaddurchlauf Start
for ($i=0; $i<count($_FILES['UPFILE']['name']); $i++) {
	if ($_FILES['UPFILE']['name'][$i] == '')
	{
	continue;
	}
// Zeichenfilter
$File = strtr(stripslashes($_FILES['UPFILE']['name'][$i]), '\'" |\\/?!*:#', '___________');

// Dateiendung ermitteln
$punkt = strrpos($File, '.');
$laenge = strlen($File);
$endung = strtolower(substr($File, -($laenge - $punkt - 1)));
$dname = substr($File, 0, -($laenge - $punkt - 1));

// Fehlerausgabe wenn Dateiendung nicht erlaubt
if (!in_array($endung, $arr_erlaube_dateityp)) {
fehlerausgabe("Die Dateiendung <b>$endung</b> ist nicht erlaubt");
continue;
}


// Zufallszeichen fuer Dateiname
function randomstring($dateiname) 
	{
	$dateiname = strtolower(substr(md5(microtime()),0,8));
	return $dateiname; 
	}
// Dateiendung ermitteln
	$punkt = strrpos($File, '.');
	$laenge = strlen($File);
	$endung = strtolower(substr($File, -($laenge - $punkt - 1)));
	$dname = substr($File, 0, -($laenge - $punkt - 1));

	$dateipfad_name = $picpfad.$file;
// Zufallsdateiname erzeugen
	$rand_value = randomstring($file);
	$newfilenamekompl = "$rand_value.$endung";
	$savename = $picpfad.$newfilenamekompl;

// hochgeladene Daeien speichern
	if(@move_uploaded_file($_FILES['UPFILE']['tmp_name'][$i], $savename)) {
	chmod($savename, 0777);
	} 
echo"$newfilenamekompl";
}


            echo"Danke für deinen Eintrag<br><br><a href='javascript:history.back()'><b>zurück...</b></a>";
            include_once("footer.inc.php");
        }
        elseif($_GET['jump']=="markierereintragen")
        {
?>

<b><font color=\"red\">Bereich Markierer Eintragen !</b><br>
            <FORM action="?jump=markiererspeichern" method="post">
                <TABLE>
                    <TR valign=top class="input">
                        <TD>Markierer Namen</TD>
                        <TD><input type="text" name="suchwort" size="28"></TD>
                    </TR>
	<TR valign=top class="input">
                        <TD>Markierer Type</TD>
                        <TD><select name="type" size="1">
                                <option value="pumpaction">Pumpaction Markierer</option>
                                <option value="semi">Semiautomatische Markierer</option>
		<option value="epneu">Epneumatische Markierer</option>
                            </select></TD>
                    </TR>
                                        <TR valign=top>
                        <TD>Beschreibung</TD>
                        <TD><textarea name="text" rows="10" cols="50" wrap="virtual"></textarea></TD>
                    </TR>

       <TR valign=top>
                        <TD><b>Markierer Bild</b></TD>
                        <TD><input class="upfileform" type="file" name="UPFILE" size="20"></TD>
                    </TR>

                    <TR valign=top>
                        <TD>Benutzernamen</TD>
                        <TD><?php echo $_SESSION["username"]; ?></TD>
                    </TR>
                    <TR valign=top>
                        <TD>Beschreibungs Sprache</TD>
                        <TD><select name="name" size="1">
                                <option value="de">Deutsch</option>
                                <option value="eng">English</option>
                            </select>
                        </TD>
                    </TR>
                </TABLE>
                <INPUT type=submit value="Eintragen">
            </FORM>

Wobei ich zeile 15 mit absicht auf // gesetzt habe..
den der Upload muss erstmal funzen..

ich hoffe das hilft weiter
 
da steht dan : Array ( )
Et voila, da ist doch der Fehler. Wenn $_FILES leer ist, wird die Schleife nicht ein einziges Mal durchlaufen und somit kommt auch keine Ausgabe zustande. Wieso die Schleife nun aber leer ist, weiss ich nicht und ist mir auf die Schnelle auch aus dem Code nicht ersichtlich.

[edit]

Jo, enctype wäre schon was Feines. ;)
 
Et voila, da ist doch der Fehler. Wenn $_FILES leer ist, wird die Schleife nicht ein einziges Mal durchlaufen und somit kommt auch keine Ausgabe zustande. Wieso die Schleife nun aber leer ist, weiss ich nicht und ist mir auf die Schnelle auch aus dem Code nicht ersichtlich.

[edit]

Jo, enctype wäre schon was Feines. ;)

hm danke für die netten Antworten bis jetzt. Genau vor diesem Problem stehe ich leider auch..

ISt das enctype so Wichtig?
Soll ich diese hier verwenden?
HTML:
enctype="multipart/form-data"
 
ich habe das : Enctype eingefügt und
PHP:
<input class="upfileform" type="file" name="UPFILE[]" size="20">

geändert und schon geht es