PHP Bild hochladen und abspeichern

Hallo Community,

ich will eine Seite (HTML,PHP, MySQLi, CSS - möglichst kein JS) machen, wo man sein Bild hochlädt und es dann gespeichert wird, während der Pfad in der DB landet.

Mein Code bis jetzt:

HTML:

<br /><h3><?php echo $language['reportTitle']; ?></h3>
        <form class="adder" action="saveReport.php" method="POST" enctype="multipart/form-data">
            <input type="hidden" name="ID" value="<?php echo $_SESSION['ID']; ?>" />
            <br /><?php echo $language['reportImage']; ?><label class="upload"><p><?php echo $language['reportUpload']; ?></p><input name="image" type="file" maxlength="1000000" accept="image/*" /></label>
            <br /><br /><?php echo $language['reportDescription']; ?><input name="description" type="text" />
            <br /><br /><b><?php echo $language['reportInfoTitleGeneral']; ?></b><input type="submit" />
        </form>

CSS: (eig. unwichtig)

.upload {
    overflow: hidden;
    position: absolute;
    text-align: center;
    font-size: small;
    color: #708090;
    background-color: #dddddd;
    width: 213px;
    height: 33px;
    left: 500px;
    margin-top: -10px;
    border-width: thin;
    border-color: #C0C0C0;
    border-style: solid;
    border-radius: 3px;
}
.upload:hover {
    border-color: #008B8B;
}
.upload [type="file"] {
    display: block;
    position: absolute;
    font-size: 999px;
    filter: alpha(opacity=0);
    opacity: 0;
    right: 0;
    top: 0;
}
.upload p {
    margin-top: 10px;
}

PHP: (nur ein Ansatz)

<?php
    include('../include/language.inc.php');
    include('../include/testSession.inc.php');
    include('../include/connect.inc.php');
    
    $info[1] = $_POST['ID'];
    $info[2] = $_POST['description'];
    $info[3] = $_FILES['image'];
    $size = sizeof($info);
    for($i = 0; $i < $size; $i++) {
        if(empty($info[$i])) {
            $_SESSION['error'] = $language['addErrorMissingData'];
            header('Location:report.php');
            die($language['addErrorMissingData']);
        }
    }
    $path = "INSERT INTO bugs VALUES (NULL,'".$info[1]."','".$info[2]."','".$info[3]."')";
    $mysqli->query($path);
    imagepng($im, '../include/images/'. $mysqli->insert_id . image_type_to_extension(IMAGETYPE_PNG));
?>

Ich habe schon ein bisschen gegoogelt, aber ich versteh's nicht. Gefunden hab ich:

  • ob_start()
  • POST uploads: http://php.net/manual/en/features.file-upload.post-method.php#features.file-upload.post-method

Am ende sollen (NULL für die ID), die UserID und die Beschreibung in der DB landen. Der Bild-Pfad soll bug['ID'].'.png' sein.

Fragen:

  • Wie nehme ich das Bild entgegen? ($_POST oder $_FILES)
  • Wie wandle ich das Bild in ein PNG-Format um?
  • Wie speicher ich das Bild?
  • Wieso spackt der "Hochladen"-Button so? (Text verschwindet nach anklicken) (Optional)

Danke, schon mal im Voraus!

-Minding

Bilder, HTML, CSS, MySQL, PHP, speichern, Image