[PHP] leeres Array() beim Upload

boCKY

Well-known member
5 September 2006
748
45
Moin Moin,

ich möchte über ein Formular ein Bild mit hochladen, jedoch vermute ich, dass der Wert für das Bild nicht übergeben und somit kein Bild hochgeladen wird.

Formular
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="../css/ieg.css">
</head>
<body>
<form name="login" method="post" action="index.php?id=willkommen&anmelden=yes">
  <p class="float-text">
    <b>Name: </b><input type="text" name="name" style="border: 1px solid #262626; margin-left: 40px;" /><b> . ist-ein-geraer.de</b>
</p>
<p class="float-text">
    <b>Passwort: </b> <input type="password" name="passwort" style="border: 1px solid #262626; margin-left: 16px;" /> 
</p>
<p class="float-text">
    <b>E-Mails: </b><input type="text" name="email" style="border: 1px solid #262626; margin-left: 30px;" />
</p>
<p class="float-text">
    <b>Geschlecht: </b>
    <select name="geschlecht" style="border: 1px solid #262626; margin-left: 6px;" />
    <option value="m">männlich</option>
    <option value="w">weiblich</option>
    </select>
</p>

<p class="float-text">
    <b>Bild: </b><input type="file" name="bild" style="border: 1px solid #262626; margin-left: 54px;" /><b> 100 x 100</b>
</p>
<p class="float-text">
    <input type="submit" name="anmelden" value="Anmelden" style="border: 1px solid #262626; background-color:#262626; color: #ffffff;" /> <input type="reset" name="Submit" value="Zurücksetzen" style="border: 1px solid #262626; background-color:#262626; color: #ffffff;" />
</p>
</form>
</body>
</html>
<?php
   if(isset($_GET['anmelden']) AND ("yes" == $_GET['anmelden'])) {
   include 'db_config.php';
   @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
   mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());
   $entry = "INSERT INTO user (name, passwort, email, geschlecht, bild) VALUES ('$name', '$passwort', '$email', '$geschlecht', '$bild')";
   mysql_query($entry); mysql_error();
   include 'inc_upload.php';
   echo "<p class=\"float-text\"><b>Vielen Dank für Ihre Anmeldung!</b></p>";
   }
?>

Upload (inc_upload.php)
<?php
// In PHP kleiner als 4.1.0 sollten Sie $HTTP_POST_FILES anstatt $_FILES verwenden.
// In PHP kleiner als 4.0.3 verwenden Sie copy() und is_uploaded_file() anstatt von
// move_uploaded_file()

$uploaddir = '../img/';

print "<pre>";
if (move_uploaded_file($_FILES['bild']['tmp_name'], $uploaddir . $_FILES['userfile']['bild'])) {
print "File is valid, and was successfully uploaded. Here's some more debugging info:\n";
print_r($_FILES);
} else {
print "Possible file upload attack! Here's some debugging info:\n";
print_r($_FILES);
}

?>

Die Daten werden in die MySQL-DB eingtragen, jedoch wird das Bild nicht hochgeladen.

Fehlermeldung
Possible file upload attack! Here's some debugging info:
Array()

Bin für jede Hilfe dankbar, vielleicht liegt das Problem zwischen den Augen, nur ich seh nicht.

Danke und ruhige Nacht noch!
boCKY
 
ich glaub das hier ist in der inc_upload.php nicht ganz korrekt

if (move_uploaded_file($_FILES['bild']['tmp_name'], $uploaddir. $_FILES['userfile']['bild']))

da solltest du eigentlich einen ziel-dateinamen angeben,also eher sowas wie...


if (move_uploaded_file($_FILES['bild']['tmp_name'], $uploaddir."ava-".$name.".".$imgtype))

wobei $imgtype dann noch zu bestimmen wäre
 
Moin,

danke, aber funzt auch nicht. Die inc_upload.php ist das standart Beispiel der ganzen PHP-Seiten. Ich lass mir einfach mal die Variablen ausgeben, mal guggen was die so sagen.

Code:
echo "Der Bildwert: " . $_FILES['bild'];
echo "Der Bildwert: " . $HTTP_POST_FILES['bild'];

Ausgabe
Code:
Der Bildwert: 
Der Bildwert:

Beide Arrays sind leer und da liegt wohl auch das Problem ..

Tschö mit ö!
boCKY
 
Zuletzt bearbeitet:
Super dickes Danke, es sind doch meist die einfachsten Sachen.

Dann schönen Tag noch!
boCKY