Beiträge von willi356

    Danke cottton, habe ich verstanden, kommt bestimmt zum Einsatz!


    ==============================================================================================================================================
    Dateiupload erweitert:


    Im code von Axel Pratzner



    <form name="uploadformular" enctype="multipart/form-data" action="dateiupload.php" method="post" >
    Datei: <input type="file" name="uploaddatei" size="60" maxlength="255" >
    <input type="Submit" name="submit" value="Datei hochladen">
    </form>


    Ich habe dann ein Formular entwickelt, in dem direkt mehrere Felder ausgegeben werden:


    Ich gebe die Input felder (nicht nur die aus dem code oben, auch noch andere) direkt in einer while-schleife aus.
    Somit habe ich aber das Problem, das beim Ablauf der while-Schleife das inputfeld immer den selben namen hat. Gut hab schon einmal ein bischen geguckt, kann den Namen sehr wahrschienlich erweitern auf name="uploaddatei[id]" oder so, damit direkt bei $_POST[uploaddatei[id]] ein 2 dimensionales Array entsteht.
    Geht das nicht einfacher?


    Mein weiteres Problem, ist das speichern der jeweiligen Dateinamen aus dem Array, in die Datenbank?!
    Ich denke, das beim speichern dann auch eine while Schleife durchlaufen werden muss.

    Hallo cotton,


    wie von Axel Pratzner empfohlen: nutzte PHP.net für die Dinge die Du nicht weißt.
    Also bin ich dann mal da rein und hab mir die Beschreibungen von imagecreatefromstring angeschaut:


    imagecreatefromstring — Create a new image from the image stream in the string


    Beschreibung ¶


    resource imagecreatefromstring ( string $image )
    imagecreatefromstring() returns an image identifier representing the image obtained from the given image. These types will be automatically detected if your build of PHP supports them: JPEG, PNG, GIF, WBMP, and GD2.



    Also so wie ich das verstehe, wird hier ein neues Bild erzeugt aus einem string?!?!?!?
    Oder meldet diese Funktion nur, ob es ein Bild des Formats jpg, jpeg, png, gif usw. ist?


    Aber wie hilft mir das richtig weiter?
    Den Dateinamen habe ich doch schon in der Datenbank. Und das es ein Bild ist, sehe ich daran, das er es mir direkt anzeigt! Oder wird durch diese Funktion grundsätzlich alles abgefangen was keine Bild ist?


    Wird dies nicht auch dadurch erreicht?
    $zugelassenedateitypen = array("image/png", "image/jpeg", "image/gif");
    if ( ! in_array( $_FILES['datei1']['type'] , $zugelassenedateitypen ))

    So weit so gut.


    Es geht mir hier um eure Abschätzung der Sicherheit.
    Mit dem obigen habe ich jetzt die Grundlage geschaffen Bilder uploads zu machen. Kommen auch im richtigen Ordner an.
    Also bei der Webpage die ich baue, werden es drei Ebenen geben.
    1) Der Interessierte im Web. Der bekommt die 'Front-End-Page' zu sehen.
    2) Der User: Hier ist der erste Passwortgeschützte Teil: Hier können Einstellungen vorgenommen werden, und Bilder hochgeladen werden.
    3) Der Master: Dieser Bereich ist für mich: Dort kann ich grundsätzlich Seiten freigeben, und Einstellungen Administrativ machen.


    So dieser Beitrag dreht sich um Ebene 2 und Ebene 1.
    Also in Ebene 2 möchte ich die Bilder wie oben beschrieben uploaden. Da ich ja in der Variablen $_FILES['uploaddatei']['name'] den Dateinamen habe, möchte ich diesen in der Datenbank speichern.
    Da dieser Vorgang ungefähr 15 mal wiederholt wird (der vorstand ist groß) lohnt es sich für diesen Bereich ein eigene Tabelle anzulegen. Auf der Ebene 1 möchten dann den Dateiname im <img src=""> wieder auslesen und das Bild anzeigen lassen.


    Mein Gedanke dabei: Es kann doch jetzt nur das Bild geladen werden, welches in der Datenbank hinterlegt ist. Und ist das Bild mi diesem Dateinamen im Ordner nicht vorhanden, dann wird keines geladen und ein leerer Frame erscheint. Somit kann aber auch kein anderes geladen werden.


    Was haltet ihr von diesem Gedankengang?
    Wo sind hier die Sicherheitslücken?!

    Zuerst mal danke cotton.


    Also dann mal da zu:
    Ich kann direkt in den Ordner rein schauen. Und da kommt kein Bild an. Und ich leere ihn jedesmal bevor ich es erneut versuche?!, Brauch ich aber nicht, kommt ja nix an.
    Ich hatte es schon einmal auf einer anderen Seite, wo ich mir zum Verständnis diesen Bilderupload schon einmal genau so gebaut hatte. Und dort funktionierte es.


    Also nach einer schlecht geschlafenen Nacht, und einer ewig langen Dusche, kam mir folgende Frage:


    Da ich auf dieser Seite schon einmal ein <form>-tag geöffnet habe, und dieses erste <form>-tag erst nach dem <form>-tag des Bilderuploads wieder schließe:


    Kann man überhaupt <form>-tags schachteln. Oder muss ich den ersten beenden bevor ich ein weiteres Formular öffne?
    Nur so ein Gedanke, für den ich auf dieversen Pages auch keine Antwort gefunden habe.
    Also ich kann immer wieder nur sagen:


    Nach endlicher Verzweiflung und jede Menge ausprobieren, gibt es kein besseres Gefühl, als dass, wenn es dann funktioniert.
    MAN DARF NUR NICHT AUFGEBEN!!!


    Also meine Idee den <form>-tag anders zu setzen, und immer erst den <form>-tag zu schließen, bevor ein neuer geöffnet wird, war genau richtig.


    Das man dafür aber erst immer eine Nacht schlecht schlafen muss, und erst unter der langen Dusche die Erleuchtung kommt stört mich.


    Und damit ist meine Frage auch beantwortet:


    NEIN <form>-tags kann man nicht schachteln. Formular im Formular geht nicht. Das innere Formular reagiert dann nicht mehr, oder zumindest nur mit den Konditionen des äußeren.

    Hallo zusammen,


    um Bilddateien hochzuladen haben ich mal ein wenig an das Script von Axel Pratzner gehalten.
    Dort steht dann auch folgende Zeile drin:


    move_uploaded_file ($_FILES['uploaddatei']['tmp_name'],'hochgeladenes/'. $_FILES['uploaddatei']['name'] );




    Also wenn ich das richtig sehe, dann wird die Bilddatei dann in einem Unterverzeichnis 'hochgeladenes/' gespeichert. (relative Position des Unterverzeichnisses muss beachtet werden.)


    Jetzt muss ich aber auf verschiedenen Webseiten auch Bilddateien hochladen. Damit Sie dann aber getrennt von einander sind, wollt ich Sie in verschiedene Unterverzeichnisse laden.
    Dazu der Befehl:


    move_uploaded_file ($_FILES['uploaddatei']['tmp_name'],'images/vorstand/'. $_FILES['uploaddatei']['name'] );



    Aber, man kann es schon erraten; 8) ; die Dateien werden immer noch im alten Verzeichnis gespeichert, obwohl der Speicherort im Befehl was anderes angibt.
    Ein Neustart von XAMPP- Diensten habe ich schon durchgeführt. Gleichzeitig auch den Browser (Chrome) neu gestartet.


    Und, kann jemand das Geheimnis entlüften, warum die Dateien nicht im richtigen Ordner gespeichert werden?





    Hallo Zusammmen,


    meistens benutze ich de Mozilla Firefox.
    Doch die Schrift hier in diesem Forum ist dann, naja sgen wir mal MIKROSCHRIFT.


    Woran liegt das?


    Mal zum Vergleich:


    Google Chrom


    Mozilla Firefox:


    Ich hoffe es wird deutlich was ich meine.
    Wenn ich das Forum unter Mozilla Firefox aufrufe, brauch ich ne Lupe!


    Gruß


    willi356

    Hallo zusammen,


    ich habe die Webseite von mysql_query auf mysqli_query umgestellt, aber seit dem werden die Daten nicht mehr in die Datenbank gespeichert.


    Vorgehen:


    1. Datenbankverbindung



    $mysqli = new mysqli('localhost', 'root', 'xxxxxxxxxx', 'db01');


    dieser Befehl steht in einer Datei die z.B. con.php heißt, und am Anfang jeder Webseite in der ich eine Datenbankverbindung brauche aufgerufen.



    2. Aufbau des Speicher STRINGS
    Hierzu hol ich mir den formatierten SQL Aufruf INSERT aus PHP my ADMIN, und setze diesen in eine Variable $sql_kunde (für die Kundendaten):


    $sql_kunde=INSERT
    INTO
    `kunden`(
    `id`,
    `st_kd_nr`,
    `st_kd_name`,
    `st_kd_strasse`,
    `st_kd_hausnummer`,
    `st_kd_plz`,
    `st_kd_ort`,
    `st_kd_telefon`,
    `st_kd_mobil`,
    `st_kd_fax`,
    `st_kd_email`,
    `st_kd_date`
    )
    VALUES(
    [ VALUE -1 ],
    [ VALUE -2 ],
    [ VALUE -3 ],
    [ VALUE -4 ],
    [ VALUE -5 ],
    [ VALUE -6 ],
    [ VALUE -7 ],
    [ VALUE -8 ],
    [ VALUE -9 ],
    [ VALUE -10 ],
    [ VALUE -11 ],
    [ VALUE -12 ]
    )


    Wenn ich die VALUES gefüllt habe sieht das ganze dann so aus:
    $sql_kunde="INSERT INTO kunden
    (
    `st_kd_nr`,
    `st_kd_name`,
    `st_kd_strasse`,
    `st_kd_hausnummer`,
    `st_kd_plz`,
    `st_kd_ort`,
    `st_kd_telefon`',
    `st_kd_mobil`,
    `st_kd_fax`,
    `st_kd_email`,
    `st_kd_date`
    )
    VALUES
    (
    '".clearstring($_SESSION['st_kd_nr'])."',
    '".clearstring($_POST['st_kd_name'])."',
    '".clearstring($_POST['st_kd_strasse'])."',
    '".clearstring($_POST['st_kd_hausnummer'])."',
    '".clearstring($_POST['st_kd_plz'])."',
    '".clearstring($_POST['st_kd_ort'])."',
    '".clearstring($_POST['st_kd_telefon'])."',
    '".clearstring($_POST['st_kd_mobil'])."',
    '".clearstring($_POST['st_kd_fax'])."',
    '".clearstring($_POST['useremail'])."',
    '".date("Y-m-d H:i:s")."'
    )";
    die funktion clearstrin() trimmt und strip_tagged nur:
    function clearstring ($inhalt)
    {
    $inhalt = strip_tags ($inhalt);
    $inhalt= trim ($inhalt);
    return ($inhalt);
    }


    3. Speichern des Strings $sql_kunde:


    mysqli_query($mysqli, $sql_kunde);


    Aber nicht desto trotz: Es wird nix in die Datenbank gespeichert.
    Hat da einer ne IDEE??? :huh:
    Übrigens: Das Passwort des Users 'root' ist nicht 'xxxxxxx'!!!
    Noch was zur Ergänzung:


    Daten aus der Datenbank auslesen klappt.
    Weil sonst könnte ich mich nicht anmelden ud einen Passwort abgleich aus der Datenbank durchführen!


    Grüße



    willi356