Ankündigung

Einklappen
Keine Ankündigung bisher.

Upload Script gibt Undefined array key "file" zurück

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Upload Script gibt Undefined array key "file" zurück

    Hey,

    ich habe mit meinem Upload Script ein kleines Problem, es gibt mir nurnoch

    Warning: Undefined array key "file" in E:\Benutzer\Documents\Xampp\htdocs\Projekt\Homepag e\includes\user.inc.php on line 20
    Warning: Trying to access array offset on value of type null in E:\Benutzer\Documents\Xampp\htdocs\Projekt\Homepag e\includes\user.inc.php on line 20

    Ich habe das aus einem Vorherigen Projekt kopiert und eingebunden. Das einzigste was sich geändert hat ist die Php version von 7 auf 8. aber ich habe nichts dazu gefunden was ich in verbindung mit dem Problem bringen würde.

    Hier einmal der Code:
    PHP-Code:
    <?php
    //User Image Upload
    if (isset($_POST['submit_profileimage'])){

        require 
    'dbh.inc.php';
        
    $url '../user/profile.php?a=';

        
    $target_dir '../assets/img/avatar/';
        
    $userId $_POST['userId'];

        
    // define size
        
    define('KB'1024);
        
    define('MB'1048576);
        
    define('GB'1073741824);
        
    define('TB'1099511627776);

        
    $allowedExts = array('jpg''jpeg''png');

        
    // explode the file name to to check the ext
        
    $lastDot strrpos($_FILES["file"]["name"], ".");
        
    $cleanfilename str_replace("."""substr($_FILES["file"]["name"], 0$lastDot)) . substr($_FILES["file"]["name"], $lastDot);

        
    $temp explode("."$cleanfilename);

        
    // not sure what end does
        
    $extension end($temp);

        
    // check file type
        
    if ((($_FILES["file"]["type"] == "image/jpg"))
        || (
    $_FILES["file"]["type"] == "image/jpeg")
        || (
    $_FILES["file"]["type"] == "image/png")
        && (
    $_FILES["file"]["size"] < 200*MB)  // limit the size of the file to 1GB (1048576000) // 2mb (2097152)
        
    && in_array($extension$allowedExts)){

            
    // check if there was an error
            
    if($_FILES["file"]["error"] > 0){
                
    header("Location: $url'danger_uploaderror');
            } else {
                
    // change name to userid
                
    $file_name $userId;
                
    // add the extension back on.
                
    $file $file_name "." $temp[1];
                
    // move the file to its new location
                
    move_uploaded_file$_FILES["file"]["tmp_name"], $target_dir .$file);
                
    // send success alert
                
    header("Location: $url'success_image&file=' $_FILES["file"]["name"]);
            }
        } else {
            
    //header("Location: $url" . 'danger_nofile');
        
    }
    }
    Auf der Seite sieht es wie folgt aus:
    HTML-Code:
    <form action="../includes/user.inc.php" method="post">
        <span class="position-absolute b-0 r-0 text-secondary lead-3 d-block bg-warning p-2 rounded-circle lh-1">
            <?php
                echo '<input onchange="$(submit_profileimage).click();" name="file" type="file" class="custom-file-input position-absolute l-0 t-0 b-0 h-auto">';
            ?>
            <input type="text" name="userId" hidden="true" value="<?= htmlspecialchars($_COOKIE['userId'], ENT_COMPAT, 'utf-8') ?>">
            <input type="submit" name="submit_profileimage" id="submit_profileimage" hidden="true">
        <i class="far fa-image"></i></span>
    </form>
    Der Broser zeigt mir auch an dass die Daten gesendet wurden, also sollte es eigentlich ankommen.

  • #2
    Wenn ich es richtig gelesen habe wird hier das Wort 'file' das erste Mal als 'key' verwendet:
    $lastDot = strrpos($_FILES["file"]["name"], ".");

    Es soll hier also die letzte Position ermittelt werden wo ein '.' steht inhalb der Variablen (Array) $_FILES["file"]["name"]

    Die Fehlermeldung besagt, dass das 'keyword' 'file' aber unbekannt ist. Als Key in der globalen Variablen $_FILES
    wird der 'name' des 'input' verwendet. Somit sollte dein 'key' für die 'global' lauten:

    $_FILES["submit_profileimage"]["name"]

    Mach mal einen vardump auf:

    $_FILES["file"]["name"]
    => Ergebnis: Fehlermeldung weil 'key' "file" nicht existiert

    $_FILES["submit_profileimage"]["name"]
    => Ergebnis: Der Name der hochgeladenen Datei, da der 'key' hier über den 'name' des 'input's vorhanden ist...
    ________
    Megabyte66
    ________

    Kommentar


    • #3
      Vielen Dank für deine Antwort, da liegt der fehler nicht. Wie oben zu erkennen ist, ist der name des inputs welcher den File enthält "file".
      PHP-Code:
      <?php echo '<input onchange="$(submit_profileimage).click();" name="file" type="file" class="custom-file-input position-absolute l-0 t-0 b-0 h-auto">'?>

      Ich habe dennoch einmal versucht was du geschrieben hattest, aber es ergibt den selben Fehler.

      Warning: Undefined array key "submit_profileimage" in E:\Benutzer\Documents\Xampp\htdocs\Projekt\Homepag e\includes\user.inc.php on line 50
      Warning: Trying to access array offset on value of type null in E:\Benutzer\Documents\Xampp\htdocs\Projekt\Homepag e\includes\user.inc.php on line 50
      NULL


      Ich habe noch einen Screenshot vom Firefox Dev Tool mit der Anfrage gemacht.
      Screenshot 2021-04-15 215604.png
      Zuletzt geändert von Nightland Driver; 15.04.2021, 21:05.

      Kommentar


      • #4
        Wenn ich richtig informiert bin, muss man beim Hochladen im form-Tag den enctype so angeben:
        HTML-Code:
        <form action="../includes/user.inc.php" method="post" enctype="multipart/form-data">

        Kommentar


        • #5
          Vielen Dank für deine Antwort, da lag tatsächlich der fehler. Nun funktioniert es wie es sollte. Auch wenn ich mir absolut sicher bin dass ich das bisher unter php7 nie mit angegeben habe.

          Kommentar

          homepage-forum.de - Hilfe für Webmaster! Statistiken

          Einklappen

          Themen: 56.857   Beiträge: 430.634   Mitglieder: 28.604   Aktive Mitglieder: 39
          Willkommen an unser neuestes Mitglied, Christian_Hansen.

          Online-Benutzer

          Einklappen

          206 Benutzer sind jetzt online. Registrierte Benutzer: 4, Gäste: 202.

          Mit 3.502 Benutzern waren am 23.01.2020 um 17:20 die meisten Benutzer gleichzeitig online.

          Die neuesten Themen

          Einklappen

          Die neuesten Beiträge

          Einklappen

          Lädt...
          X