Einfaches Kontaktformular.

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

  • Einfaches Kontaktformular.

    Hallöchen zusammen,

    Ich versuche mich an einem Kontaktformular.
    Gerüst steht also HTML und CSS technisch.

    Jetzt hab ich die Aufgabe dass meine Felder eine Max Länge haben dürfen, die schon drin ist. Aber nicht angezeit wird.
    Also quasi „Vorname darf Max 50 Zeichen enthalten“
    Und es muss die Fehlermeldung „Vorname darf nicht leer sein“ anzeigen.

    Ist die Email Adresse ungültig muss auch das angezeigt werden.

    Diese Fehlermeldung wird über das Kontaktformular angezeigt.


    Schritt 3

    Sobald ein Nutzer eine Fehlermeldung zu sehen bekommt, weil z.b ein Feld leer ist, dürfen die Felder nicht leer sein.
    Also sprich wenn das Formuar abgesendet wird, muss wieder der Wert des Namens da stehen.

    Schritt 4

    Wenn alle Daten richtig eingegeben sind, werden die Felder leer angezeigt.
    Also keine Werte mehr.


    Ist mein erstes Mal php und mein erstes Kontaktformular.
    Ich bin komplett verloren.
    Zumal ich auch nicht wirklich hilfreiche dazu Tutorials finde.

    Hätte jemand die Möglichkeit mir da ein bisschen unter die Arme zu greifen.


    Danke im Vorraus.
    ❤️

    Die Seite ist http://localhost:8000/tutorial/Index.php
    Darüber könnt ihr den ganzen Code einsehen.


    <!DOCTYPE html>
    <html lang="de">
    <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE-edge">
    <meta name="viewport" content="width-device-with, initial-scale=1.0">

    <link rel="stylesheet" href="styles.css">
    <title>Kontaktformular</title>
    <meta charset="UTF-8">
    </head>
    <body>
    <?php
    if (isset($_POST['submit'])) {
    mail("aloyluns@gmail.com", "Kontaktformular", 'Name: '.$_POST["name"].'Nachname: '.$_POST["lasname"].'Email: '.$_POST["email"].'Nachricht: '.$_POST["message"]);
    ?>
    <h1 style="color: forestgreen;">Das Kontaktformular wurde abgesendet!</h1>
    <?php
    }
    ?>

    <div class="formcross">
    <img class="somethingStrange" src="./img/vector-1.png">
    <img class="roundspin" src="./img/vector-2.png">


    <div class="formBox">
    <img class="roboCop" src="./img/Logo_Robikopf_Klein.png">
    <form action="./index.php" method="post">
    <div class="headingBox">
    <h1>Wie können wir dir helfen?</h1>

    </div>


    <fieldset class="formColHalf">
    <input required type="text" id="Name" name="Name" placeholder="Vorname" value="<?= (isset($_POST['Name']) ? $_POST['Name'] : ''); ?>" maxlength="50">
    <input required type="text" id="Lastname" name="Lastname" placeholder="Nachname" value="<?= (isset($_POST['Lastname']) ? $_POST['Lastname'] : ''); ?>" maxlength="50">
    <input required type="email" id="Email" name="Email" placeholder="Email" value="<?= (isset($_POST['Email']) ? $_POST['Email'] : ''); ?> " maxlength="50">
    <input type="tel" placeholder="Telefon">
    </fieldset>
    <fieldset>
    <select name="Betreff">
    <option value="">Bitte auswählen</option>
    <option value="allgemeine_anfrage">Allgemeine Anfrage</option>
    <option value="technische_anfrage">Technische Anfrage</option>
    <option value="sonstige_anfrage">Sonstige Anfrage</option>
    </select>
    <textarea id="Nachricht" name="Nachricht" rows="5" cols="80" required value="<?= (isset($_POST['Nachricht']) ? $_POST['Nachricht'] : ''); ?>" maxlength="250"></textarea>
    <div id="the-count_comment" style="">
    <span id="current_comment">0</span>
    <span id="maximum_comment"> / 250</span>
    </div>

    <button type="submit" name="submit">Absenden</button>
    </fieldset>
    </form>
    </div>
    </div>
    </body>
    </html>
    Zuletzt geändert von DyingRabbit_; 11.07.2022, 11:41.

  • #2
    Hi,

    Zunächst mal kannst du dein Formular so grob definieren. Achte Dabei auf Groß/Kleinschreibung.

    PHP-Code:
    <?php

    $fields 
    = [
        
    'name' => [
            
    'label' => 'Vorname',
            
    'maxlength' => 50,
        ],
        
    'lastname' => [
            
    'label' => 'Nachname',
            
    'maxlength' => 50,
        ],
        
    'email' => [
            
    'label' => 'EMail',
            
    'maxlength' => 100,
        ],
        
    'message' => [
            
    'label' => 'Nachricht',
            
    'maxlength' => 500,
        ],
    ];
    Dann kannst du zu jedem Feld prüfen lassen, ob Daten eingegeben wurden

    PHP-Code:
    <?php

    function validate(array $fieldsstring $field){
        if(
    $_SERVER['REQUEST_METHOD'] !== 'POST') return ""// Formular noch nicht abgeschickt
        
    if(!isset($fields[$field])) return "Das Feld {$field} existiert nicht";
        if(empty(
    $_POST[$field])) return "Das Feld {$fields[$field]['label']} darf nicht leer sein";
        if(
    strlen($_POST[$field]) > $fields[$field]['maxlength']) return "Das Feld {$field} enthält zu viele Zeichen";
    }
    PHP-Code:
    <?php echo validate($fields'name'?>
    Die Anzeige der Werte ist ja von zwei Faktoren abhängig: Wurde das Formular übermittelt, und wurde die EMail gesendet.

    PHP-Code:
    <?php

    function showvalue(string $namebool $mailsend){
        if(
    $_SERVER['REQUEST_METHOD'] === 'POST' && !$mailsend) return $_POST[$name] ?? "";
        else return 
    "";
    }
    PHP-Code:
    if(isset($_POST['submit'])){
     
    $mailsend mail(...);
    }
    else {
     
    $mailsend false;

    PHP-Code:
    value="<?php showvalue('name'); ?>"
    Bitte verwende das so niemals auf einer Seite die andere Leute aufrufen können, dein Formular kann für Spam missbraucht werden. Lies dich in PHPMailer ein

    https://github.com/PHPMailer/PHPMailer

    Links auf deinen Localhost bringen hier nichts, den kannst du so nur von deinem eigenen Computer aufrufen.
    Zuletzt geändert von chorn; 14.07.2022, 09:13.

    Kommentar


    • #3
      Guten Morgen,

      Das ist mir dann später auch aufgefallen, dass der Link nicht funktionieren wird. Deswegen hatte ich meinen Code nachträglich noch in. den Beitrag eingefügt.

      Aber ich bedanke mich schonmal recht herzlich für deine Antwort.

      Ist eine Übungsaufgabe und ich probiere mich da jetzt so durch. Aber auf manche Sachen komme ich eben nicht, da ich mit Php noch nichts zu tun hatte.

      Kommentar

      Lädt...
      X