Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Kontaktformular gibt keine Bestätigung aus, setzt Felder nicht zurück

  1. #1
    Azubi(ne) Avatar von Sysmatic
    Registriert seit
    01.10.2018
    Ort
    Thüringen
    Alter
    31
    Beiträge
    67
    Danke
    10
    Bekam 0 mal "Danke" in 0 Postings

    Standard Kontaktformular gibt keine Bestätigung aus, setzt Felder nicht zurück

    Mein Mailing-Script versendet erfolgreich Mails und diese kommen auch im Postfach an,
    jedoch wird das Formular nicht resettet.
    Auch eine Bestätigung darüber dass der Versand erfolgte/nicht erfolgte bleibt aus.
    Meldungen wie fehlende Eingaben werden angezeigt, verschwinden nach dem versenden allerdings auch nicht.

    Hier ausprobieren: http://blechlavine.bplaced.net

    Hier nochmal contact.php:
    Code:
    <?php
        session_start();
    
        header('Cache-Control: no-cache, must-revalidate');
        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
        header('Content-type: application/json');
    
        require_once ('db_connect.php');
    
        //Language-Session
        if(!isset($_GET["language"]))
        {
            if(!isset($_SESSION["language"]))
            {
                include('../lang/de.php');
                $_SESSION["language"] = 'de';
            }
            else
            {
                include('../lang/' . $_SESSION["language"]  . '.php');
            }
        }
        else
        {
            $_SESSION["language"] = $_GET["language"];
            include('../lang/' . $_SESSION["language"]  . '.php');
        }
        //End of Language-Session
        $contact_errorname = $lang['contact_errorname'];
        $contact_erroremail = $lang['contact_erroremail'];
        $contact_erroremail2 = $lang['contact_erroremail2'];
        $contact_errormessage = $lang['contact_errormessage'];
        $contact_fail = $lang['contact_fail'];
        $contact_success = $lang['contact_success'];
    
        $statement = $db->query('SELECT mail_contact FROM settings');
        $admin_email = $statement->fetch()['mail_contact'];
    
        $message_min_length = 5;
    
        //PHPmailer v6 Setup
        use PHPMailer\PHPMailer\PHPMailer;
        use PHPMailer\PHPMailer\Exception;
        require 'Exception.php';
        require 'PHPMailer.php';
        require 'SMTP.php'; 
    
        class Contact_Form 
        {
            function __construct($details, $admin_email, $message_min_length, $contact_errorname, $contact_erroremail, $contact_erroremail2, $contact_errormessage, $contact_fail, $contact_success) 
            {
                $this->name = stripslashes($details['name']);
                $this->email = trim($details['email']);
                $this->subject = 'Blechlavine.com - Kontaktnachricht eingegangen';
                $this->message = stripslashes($details['message']);
                $this->admin_email = $admin_email;
                $this->message_min_length = $message_min_length;
                $this->response_status = 1;
                $this->response_html = '';
                $this->contact_errorname = $contact_errorname;
                $this->contact_erroremail = $contact_erroremail;
                $this->contact_erroremail2 = $contact_erroremail2;
                $this->contact_errormessage = $contact_errormessage;
                $this->contact_fail = $contact_fail;
                $this->contact_success = $contact_success;
    
            }
    
            private function validateEmail() 
            {
                $regex ='/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i';
    
                if ($this->email == '')
                    return false;
    
                $string = preg_replace($regex, '', $this->email);
                return empty($string);
            }
    
            private function validateFields() 
            {
                // Check name
                if(!$this->name) 
                {
                    $this->response_html .= '<p>' . $this->contact_errorname . '</p>';
                    $this->response_status = 0;
                }
    
                // Check email
                if(!$this->email) 
                {
                    $this->response_html .= '<p>' . $this->contact_erroremail . '</p>';
                    $this->response_status = 0;
                }
    
                // Check valid email
                if( $this->email &&!$this->validateEmail() ) 
                {
                    $this->response_html .= '<p>' . $this->contact_erroremail2 . '</p>';
                    $this->response_status = 0;
                }
    
                // Check message length
                if(!$this->message || strlen($this->message) < $this->message_min_length) 
                {
                    $this->response_html .= '<p>' . $this->contact_errormessage . '</p>';
                    $this->response_status = 0;
                }
            }
    
    
            private function sendEmail() 
            {
                //PHPmailer v6 Instanz
                $oMailer = new PHPMailer;
                $oMailer->CharSet = 'UTF-8';
    
                // SMTP aktivieren
                $oMailer->isSMTP();
    
                // SMTP-Server
                $oMailer->Host ='smtp.strato.de';
    
                // SMTP Authentifizierung aktivieren
                $oMailer->SMTPAuth = true;
    
                // SMTP Benutzer
                $oMailer->Username = $this->admin_email;
    
                // SMTP Benutzer Passwort
                $oMailer->Password = 'xxxxx';
    
                // Verbindungssicherheit setzen ( SSL und TLS möglich )
                $oMailer->SMTPSecure = 'ssl';
    
                // Verbindungsport festlegen
                $oMailer->Port = 465;
    
                // Absender Adresse setzen
                $oMailer->From = $this->email;
    
                // Absender Alias setzen
                $oMailer->FromName = $this->name;
    
                // Empfänger Adresse und Alias hinzufügen
                $oMailer->addAddress($this->admin_email, 'Webmaster Blechlavine'); 
    
                // HTML aktivieren
                $oMailer->isHTML(true);
    
                // Betreff
                $oMailer->Subject = 'Blechlavine.com - Nachricht eingegangen';
    
                // Der Nachrichteninhalt als HTML
                $oMailer->Body = $this->message;
    
                // Alternativer Nachrichteninhalt für Clients, die kein HTML darstellen
                $oMailer->AltBody = strip_tags($oMailer->Body);
    
    
                //PHPmailer v6 Versand prüfen
                if(!$oMailer->send()) 
                {
                    $this->response_html .= '<p>' . $this->contact_fail . '</p>';
                    $this->response_status = 0;
                }
                else 
                {
                    $this->response_status = 1;
                    $this->response_html .= '<p>' . $this->contact_success . '</p>';
                    exit;
                } 
            }
    
            public function sendRequest() 
            {
                $this->validateFields();
                
                if($this->response_status)
                    $this->sendEmail();
    
                $response = array();
                $response['status'] = $this->response_status;   
                $response['html'] = $this->response_html;
    
                echo json_encode($response);
            }
        }
    
        $contact_form = new Contact_Form($_POST, $admin_email, $message_min_length, $contact_errorname, $contact_erroremail, $contact_erroremail2, $contact_errormessage, $contact_fail, $contact_success);
        $contact_form->sendRequest();
    
    ?>
    
    der JS-Teil:
    Code:
    /* ==================================================
       Contact Form
    ================================================== */
    
    BRUSHED.contactForm = function(){
        $("#contact-submit").on('click',function() {
            $contact_form = $('#contact-form');
            
            var fields = $contact_form.serialize();
            
            $.ajax({
                type: "POST",
                url: "_include/php/contact.php",
                data: fields,
                dataType: 'json',
                success: function(response) {
                    
                    if(response.status){
                        $('#contact-form input').val('');
                        $('#contact-form textarea').val('');
                    }
                    
                    $('#response').empty().html(response.html);
                }
            });
            return false;
        });
    
    }
    
    und das Formular selbst, falls das hilft:
    Code:
    <form id="contact-form" class="contact-form" action="#">
        <p class="contact-name">
            <input id="contact_name" type="text" placeholder="<?php print $lang['contact_yourname']; ?>" value="" name="name" />
        </p>
        <p class="contact-email">
            <input id="contact_email" type="text" placeholder="<?php print $lang['contact_youremail']; ?>" value="" name="email" />
        </p>
        <p class="contact-message">
            <textarea id="contact_message" placeholder="<?php print $lang['contact_yourmessage']; ?>" name="message" rows="15" cols="40"></textarea>
        </p>
        <p class="contact-submit">
            <a id="contact-submit" class="submit" href="#"><?php print $lang['contact_sendmessage']; ?></a>
        </p>
        
        <div id="response"></div>
    
    </form>
    
    Ich weiß leider nicht was dazu noch fehlt.
    Bin wie immer sehr dankbar!
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Mir raucht der Gulliver

  2. #2
    Moderator Avatar von Arne Drews
    Registriert seit
    20.01.2016
    Ort
    Friedrichstadt, NF
    Beiträge
    1.796
    Danke
    24
    Bekam 140 mal "Danke" in 139 Postings

    Standard AW: Kontaktformular gibt keine Bestätigung aus, setzt Felder nicht zurück

    Du machst ja auch keinen globalen HTTP-Request, wo soll der Client denn die veränderten Daten herbekommen?
    Wenn Du AJAX verwendest, bist Du für die Aktualisierungen verantwortlich. Dein Server-Script muss entsprechendes Feedback geben, auf dem basierend die Seite dann per JS modifiziert wird.

  3. #3
    Azubi(ne)
    Themenstarter
    Avatar von Sysmatic
    Registriert seit
    01.10.2018
    Ort
    Thüringen
    Alter
    31
    Beiträge
    67
    Danke
    10
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Kontaktformular gibt keine Bestätigung aus, setzt Felder nicht zurück

    Kleines Update:
    Habe festgestellt dass es sich nur mit xampp so verhält.
    Die Mail geht raus, jedoch ohne Bestätigung (wie oben beschrieben)

    Auf meinem Test-Server verhält es sich anders.
    Das Formular funktioniert wie es soll, allerdings geht die Mail nicht raus und ich bekomme die entsprechende Bestätigung.

    Versteh' ich nicht...
    Mir raucht der Gulliver

  4. #4
    Großmeister(in)
    Registriert seit
    24.10.2016
    Beiträge
    633
    Danke
    0
    Bekam 46 mal "Danke" in 45 Postings

    Standard AW: Kontaktformular gibt keine Bestätigung aus, setzt Felder nicht zurück

    Ich bekomme da:
    Der Versand ist fehlgeschlagen!
    Außerdem kann man bei dir keine Umlautdomain bei der eMail-Adress eingeben.

    Da du das Script per Ajax aufrufst, musst du per JavaScript die Felder nach erfolgreichem Senden leeren.

    - - - Aktualisiert - - -

    Vielleicht noch ein Tipp zu der Seite:

    Ich sitze an einem 24" Bildschirm und was sehe ich, wenn ich auf die Seite kommen? Riesige Bilder im Slider! Die Navigation sehe ich erst, wenn ich scrolle, das ist extrem unglücklich!

    Und lahma.... ist die Seite auch.

  5. #5
    Moderator Avatar von Arne Drews
    Registriert seit
    20.01.2016
    Ort
    Friedrichstadt, NF
    Beiträge
    1.796
    Danke
    24
    Bekam 140 mal "Danke" in 139 Postings

    Standard AW: Kontaktformular gibt keine Bestätigung aus, setzt Felder nicht zurück

    Auf meinem Test-Server verhält es sich anders.
    Das Formular funktioniert wie es soll, allerdings geht die Mail nicht raus und ich bekomme die entsprechende Bestätigung.
    Du verwendest in Deiner Event-Verarbeitung für Click keine preventDefault() oder stopPropagation().
    Wundert mich, dass XAMPP anders reagiert, aber Dein Server verhält sich richtig, er führt den Klick aus und erzeugt damit einen globalen HTTP-Request, der die Seite neu lädt.

  6. #6
    Azubi(ne)
    Themenstarter
    Avatar von Sysmatic
    Registriert seit
    01.10.2018
    Ort
    Thüringen
    Alter
    31
    Beiträge
    67
    Danke
    10
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Kontaktformular gibt keine Bestätigung aus, setzt Felder nicht zurück

    Okay...
    nein das war es nicht, hab da einen Flüchtigkeitsfehler gefunden (beim prüfen von $oMailer->send() befand sich das exit; noch beim falschen Fall)

    Die Änderung führt nun zu folgendem Sachverhalt:
    Auf dem lokalen Server funktioniert nun alles wie erwartet und ein direkter Aufruf von contact.php mit dem Browser zeigt mir folgendes:
    <br />
    <b>Notice</b>: Undefined index: name in <b>G:\xampp\htdocs\projects\pj06_onepager\_include \php\contact.php</b> on line <b>52</b><br />
    <br />
    <b>Notice</b>: Undefined index: email in <b>G:\xampp\htdocs\projects\pj06_onepager\_include \php\contact.php</b> on line <b>53</b><br />
    <br />
    <b>Notice</b>: Undefined index: message in <b>G:\xampp\htdocs\projects\pj06_onepager\_include \php\contact.php</b> on line <b>55</b><br />
    {"status":0,"html":"<p>Bitte geben Sie ihren Namen an<\/p><p>Bitte geben Sie ihre Email-Adresse an<\/p><p>Die Nachricht sollte mindestens 5 Zeichen beinhalten<\/p>"}


    Wieder völlig anders mit dem Online-Server (welcher übrigens Testzwecken dient @Bandit):
    Die Eingaben werden geprüft und Fehler zurückgegeben. Gut!
    Bei korrekten Eingaben erfahre ich aber...nichts! Keine Meldung darüber ob versendet oder nicht. Kommt aber auch wieder nichts in der Inbox an.
    Was zur Hölle??
    Wie soll ein Dilettant wie ich Fehler finden wenn alles einwandfrei läuft aber gleichzeitig auch nicht?
    Die dortige contact.php offenbart mir folgendes:
    {"status":0,"html":"<p>Bitte geben Sie ihren Namen an<\/p><p>Bitte geben Sie ihre Email-Adresse an<\/p><p>Die Nachricht sollte mindestens 5 Zeichen beinhalten<\/p>"}

    Weiß nicht ob da ein Zusammenhang besteht oder ob bplaced einfach nur weniger Fehler widergeben mag...
    Mir raucht der Gulliver

  7. #7
    Moderator Avatar von Arne Drews
    Registriert seit
    20.01.2016
    Ort
    Friedrichstadt, NF
    Beiträge
    1.796
    Danke
    24
    Bekam 140 mal "Danke" in 139 Postings

    Standard AW: Kontaktformular gibt keine Bestätigung aus, setzt Felder nicht zurück

    Beim direkten Aufruf hast Du doch auch keine POST Daten! Wie soll er denn $_POST['name'] bzw. $_POST['email'] kennen?!
    Sei mir nicht böse, aber so langsam habe ich das Gefühl, dass Du überhaupt nicht weißt, was Du tust, sondern einfach nur Häppchen zusammenkopierst, die Du im Netz und hier findest.
    Das macht so leider echt keinen Sinn.

  8. #8
    Azubi(ne)
    Themenstarter
    Avatar von Sysmatic
    Registriert seit
    01.10.2018
    Ort
    Thüringen
    Alter
    31
    Beiträge
    67
    Danke
    10
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Kontaktformular gibt keine Bestätigung aus, setzt Felder nicht zurück

    Du missverstehst mich!
    Ich wollte lediglich mitteilen dass sich beim direkten Aufruf Unterschiede auftun, das ist alles.
    Das diese Unterschiede EVTL nichts mit dem Problem zu tun haben ziehe ich dabei auch in Erwägung.

    Alle Änderungen, welche nicht auf euren Tipps basieren, mache ich selbst.
    Dazu belese ich mich natürlich, denn ich habe mich zuvor noch nie mit JS, jQuery, Ajax oder OOP auseinander gesetzt.
    Codeschnipsel-Basteleien meide ich dabei in der Regel, weil mir das zu doof ist und nur selten schnelle Abhilfe schafft
    Mir raucht der Gulliver

  9. #9
    Azubi(ne)
    Themenstarter
    Avatar von Sysmatic
    Registriert seit
    01.10.2018
    Ort
    Thüringen
    Alter
    31
    Beiträge
    67
    Danke
    10
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: Kontaktformular gibt keine Bestätigung aus, setzt Felder nicht zurück

    Hat sich auch geklärt, ohne Pro-Upgrade bietet bplaced keine Sockets.
    Somit lass ich euch erstmal in Ruhe was PHP-Angelegenheiten angeht, damit sich alle mal wieder etwas entspannen...
    Mir raucht der Gulliver

  10. #10
    Moderator Avatar von Arne Drews
    Registriert seit
    20.01.2016
    Ort
    Friedrichstadt, NF
    Beiträge
    1.796
    Danke
    24
    Bekam 140 mal "Danke" in 139 Postings

    Standard AW: Kontaktformular gibt keine Bestätigung aus, setzt Felder nicht zurück

    Was haben jetzt Sockets mit dem von Dir gezeigtem Code und der geschilderten Problematik zu tun???

Ähnliche Themen

  1. Kontaktformular - nach dem abschicken auf die Seite zurück
    Von psylangos im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 4
    Letzter Beitrag: 13.03.2013, 13:45
  2. apc_fetch() gibt false zurück
    Von Jan_K im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 10.10.2008, 13:59
  3. CSS Gibt keine Bilder bei Opera ... aus. Beim IE ist OK
    Von Area51sbk im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 16.07.2007, 10:37
  4. Zugriff mit TAL auf ZSQL gibt keine Werte zurück
    Von Gomez im Forum Zope & Plone - das deutsche Hilfeforum
    Antworten: 6
    Letzter Beitrag: 05.07.2007, 12:24
  5. Wie ... es gibt keine dummen Fragen?
    Von dumme Frage im Forum Das Forum für Spiele, Fun & Jokes
    Antworten: 0
    Letzter Beitrag: 28.07.2003, 10:14

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •