Antworten auf deine Fragen:
Neues Thema erstellen

2 Fragen zu einem Kontaktformular (PHP)

Trabilady

Aktives Mitglied

Hallo liebe PSD-Mitglieder,

ich habe ein funktionierendes Kontaktformular und 2 Fragen dazu
Ich würde mich freuen, wenn mir jemand helfen könnte.

1. Frage:
Wenn ein User vergisst, ein Feld auszufüllen, dann wird er auf eine weiße Seite
mit einer Fehlermeldung weitergeleitet (per echo). Das möchte ich aber nicht.
Ich möchte, dass der User auf der Kontaktseite bleiben kann und das leere Feld farblich hervorgehoben wird.

Wie kann ich das umsetzen?

2. Frage:
Im Moment kann der User bei "E-Mail Adresse" eingeben, was er will (z.B. asjdskjv).
Ich möchte aber, dass überprüft wird, ob ein @ und ein Punkt vorhanden ist.
Vielleicht auch noch, ob es die Mail-Adresse des Absenders auch wirklich gibt...

Vielen Dank schon jetzt von mir :blumen:

PHP:
<?php

    $fehler =''; //Fehler, wenn nichts im Feld steht
    $vorname = $_POST['vor'];
    $nachname = $_POST['nach'];
    $mail = $_POST['mail'];
    $text = $_POST['text'];
    $betreff = $_POST['betreff'];
    $name = $vorname. " " . $nachname;

// Kontrolle, ob alle Felder ausgefüllt sind

    if(empty($vorname)) {  //wenn Vorname fehlt, dann gib $fehler aus
        $fehler .= '<li>der Vorname fehlt.</li>';
    }

    if(empty($nachname)) {
        $fehler .= '<li>der Nachname fehlt.</li>';
    }

    if(empty($mail)) {
        $fehler .= '<li>die Mailadresse fehlt.</li>';
    }

    if(empty($text)) {
        $fehler .= '<li>keine Nachricht eingetragen ist.</li>';
    }

    if(empty($betreff)) {
        $fehler .= '<li>der Betreff fehlt</li>';
    }


    if ($fehler) {
        echo '<p>Ihre Nachricht wurde nicht gesendet, weil</p>';
        echo "<ul>" . $fehler . "</ul>";
    }
      else {
        $return = chr(13).chr(10);
        $nachricht = strip_tags($text); // entfernt HTML-Tags
        $nachricht = htmlentities($text);// Sonderzeichen umwandeln
        $nachricht = nl2br($text);      //setzt Zeilenumbrüche so, wie vom User eingegeben


        /*echo "<p>Ihre Nachricht wurde versendet.</p>";*/

        header("Location: http://www.***.de/***.html");


//Angaben für Mailausgabe
        $return = chr(13) .chr(10);
        $an = "***@web.de";  /*  info@***.de  */
        $von = "From: Kontaktformular <info@***.de>";
        $abs = "Von: ".$name." <".$mail.">".$return;
        $datum = "Datum: ".date("j.n.Y") . $return;
        $zeit = "Zeit: "  .date ("H:i") . $return;
        $trennen = "--------------------------------------------------------------------".$return;
        $nachricht = $datum.$zeit.$abs.$trennen.$text;

//Versendet Mail mit oben angegebenen Daten

        mail ($an,$betreff,$nachricht,$von);
      }

      }

?>
 
Zuletzt bearbeitet:

Bertram_Heinrichs

Aktives Mitglied

AW: 2 Fragen zu einem Kontaktformular (PHP)

Zu 1:
echo $_SERVER['PHP_SELF'];

Wenn es nicht funktioniert, nachschauen, ob
register_globals auf Off stehen!!

Ich weiß, die SELF-Methode ist nicht mehr en vogue. Bin aber schon paar Jährchen aus der PHP-Szene raus.
Bitte mehr als Tipp zum Probieren und weitersuchen auffassen.

Zu 2:
googel mal nach Regex. Ist nicht ganz trivial, aber es gibt sicher genügend Funktionen, die du einfach in dein Projekt einbinden kannst.
 

leveler

00110100 00110010

AW: 2 Fragen zu einem Kontaktformular (PHP)

Ich möchte aber, dass überprüft wird, ob ein @ und ein Punkt vorhanden is
da hilft Dir zB folgendes:
Code:
function isEmail(emailAddress) {

		var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);

		return pattern.test(emailAddress);
	}
 

Trabilady

Aktives Mitglied

AW: 2 Fragen zu einem Kontaktformular (PHP)

@ Bertram_Heinrichs:
Ersteinmal vielen Dank für Deine schnelle Antwort,
aber wenn ich das richtig verstehe, dann bewirkt
Code:
echo $_SERVER['PHP_SELF'];
nur, dass der User auf der Seite bleibt (wäre ja schon mal ein Anfang),
aber wie befehle ich mittels PHP, dass alle fehlerhaft ausgefüllten bzw.
alle nicht ausgefüllten Felder eine andere Farbe bekommen?
CSS? PHP? Wie könnte so ein Code aussehen?
Ich weiß zwar wie es vielleicht funktionieren könnte, aber ich weiß leider nicht,
wie ich es in PHP umsetzen kann :uhm:

@ leveler:
Auch Dir einen lieben Dank für Deine Antwort, aber wo kommt der Code hin?
Wenn ich ihn über die "Kontrolle" setze, dann bekomme ich die Fehlermeldung
Parse error: syntax error, unexpected ')', expecting '&' or variable (T_VARIABLE)
 

dlogic

Allrounder

AW: 2 Fragen zu einem Kontaktformular (PHP)

1. zu php_self - bitte hier lesen
http://blog.oncode.info/2008/05/07/php_self-ist-boese-potentielles-cross-site-scripting-xss/

2. PHP Formular Struktur in einem .php Dokument (Vorschlag)

<?php
- Abfrage was nach dem absenden passieren soll: z.B. durch isset($send) {
- Überprüfen der per POST gesendeten Variablen auf Validität
- Speichern der POST Daten in Session Variablen
- wenn feld X fehlerhaft dann z.B. style für input feld a = border:1px solid #rot
- wenn alles okay mail() und
- "Gesendet" Hinweis für Nutzer
else
echo Absendeformular
- mit Abfrage pro Feld: wenn feld X = fehlerhaft dann echo entsprechenden style und Eintrag des zuvor gemachten Value aus der Session Variable
 

Bertram_Heinrichs

Aktives Mitglied

AW: 2 Fragen zu einem Kontaktformular (PHP)

Setze direkt vor dem Aufruf von PHP_SELF eine Variable auf einen bestimmten Wert.
Prüfe in der Seite immer ab, ob diese Variable gesetzt ist. Wenn diese gesetzt ist, dann überprüfst du zusätzlich, ob die einzelnen Eingabefelder ausgefüllt waren. Da wo es nicht der Fall ist, kannst du z.B. die Background Farbe des Textes für die Feldbezeichnung auf rot setzen.

Wenn die Anganben ok sind, dann übernimmst du die Werte in die Datenbank und löschst die Variable wieder. Nicht 0 setzen, sondern "unset".
 
G

G_B

Guest

AW: 2 Fragen zu einem Kontaktformular (PHP)

Hallo trabilady,

google mal nach einem "Affenformular". Dieses wird sozusagen immer wieder durchlaufen bis das Formular vollständig ausgefüllt ist.

Zum Beispiel mit einfachen if Abfragen

if(isset($_POST['submit'])) {
echo "Was auch immer";
}else{
echo "oder auch nicht";
}

In diesem Affenformular kannst du die entsprechenden Bedingungen eingeben. Also wenn nicht ausgefüllt dann gebe Fehlermeldung aus usw.

Viele Grüße
G_B
 

Trabilady

Aktives Mitglied

AW: 2 Fragen zu einem Kontaktformular (PHP)

Nochmals vielen Dank für eure Antworten.
Werd mir das mit dem Affenformular nochmals anschauen
und dann versuchen die Struktur von "dlogic" umzusetzen.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.449
Mitglieder
67.556
Neuestes Mitglied
Ggirl
Oben