• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Validierung Ajax und php

The_C

Member
Hallo,
weis einfach nicht mehr weiter :( hab mir ein kleines Formular gebastelt das eine Validierung mit einem Ajax Request auf eine PHP Datei ausführt die wiederum eine mail versendet.
Leider ist es so das die valid. überhaupt nicht funktioniert und mann immer etwas absenden kann auch wenn das Formular nicht mal ausgefüllt ist.
Eine Mail wird zwar versendet und als Absender steht dan "undefined Nachname <undefined@www21.server.com>" aber der Betreff wird wieder richtig übernommen und in der message sollte eigentlich der Vorname, Nachname und die Mailadresse erscheinen statt dessen steht da: Name undefined, Name Nachname und Email undefined alles untereinander.
Hab echt keinen Plan was ich da falsch mache und bitte deswegen um Eure Hilfe.

Danke schon jetzt mal!

Hier noch der verwendete Code:

HTML:
HTML:
<div class="done">Startet in kürze! </div>
      <form id='supportmail' method='post' action='fileadmin/templates/js/process.php'>
      <dl>
      <dd>
      <input id='sender_vorname' type="text" name="vorname" value="Vorname" onfocus="this.value = (this.value == 'Vorname') ? '' : this.value" onblur="this.value = this.value ? this.value : 'Vorname'"/>
      </dd>
      <dd>
      <input id='sender_name' type="text" name="nachname" value="Nachname" onfocus="this.value = (this.value == 'Nachname') ? '' : this.value" onblur="this.value = this.value ? this.value : 'Nachname'"/>
      </dd>
      <dd>
      <input id='sender_mail' type="text" name="mail" value="E-Mail" onfocus="this.value = (this.value == 'E-Mail') ? '' : this.value" onblur="this.value = this.value ? this.value : 'E-Mail'"/>
      </dd>
      <dd>
      <input type='submit' class='absende_button' value='Anmelden' />
      <div class="loading"></div>
      </dd>
      </dl>
      </form>

JS:
PHP:
$(document).ready(function() {
                    
    // Wenn der Absende Button geklickt wird
    $('.absende_button').click(function () {
 
        // übergebe alle daten aus den Feldern
        var vorname = $('input[name=vornname]');
        var nachname = $('input[name=nachname]');
        var email = $('input[name=email]');

        // Einfache validierung

        if (vorname.val()=='') {
            vorname.addClass('hightlight');
            return false;
        } else vorname.removeClass('hightlight');

        if (nachname.val()=='') {
            nachname.addClass('hightlight');
            return false;
        } else nachname.removeClass('hightlight');
                                
        if (email.val()=='') {
            email.addClass('hightlight');
        return false;
        } else email.removeClass('hightlight');
                                
        // organisieren der korrekten Daten
        var data = '&vorname=' + vorname.val() + '&nachname=' + nachname.val() +'&email=' + email.val();
                                
        // deaktiviert alle Textfelder
        $('.text').attr('enabled','false');
                                
        // Lade Kreis anzeigen
        $('.loading').show();
                                
        // Ajax starten
        $.ajax({
            // Url zum verarbeiteten PHP File
            url: "fileadmin/templates/js/process.php", 
                                        
            // GET Methode benutzen
            type: "GET",

            // Abfrage mit data         
            data: data,     
                                        
            // Die Page nicht cashen
            cache: false,
                                        
            //success
            success: function (html) {              
            // Wenn die PHP Datei 1 zurückgibt also richtig das Mail senden
                if (html==1) {                  
                //hide the form
                $('.form').fadeOut('slow');                 
                                                    
                //show the success message
                $('.done').fadeIn('slow');
                                                    
                // Wenn die PHP Datei 0 zurückgibt also falsch das Mail nicht senden und den Fehler ausgeben
                } else alert('Es ist ein unerwarteter Fehler ist aufgetreten, bitte versuchen Sie es später noch einmal.');               
            }       
        });

        return false;
    }); 
});

und das PHP:

PHP:
<?php

//Retrieve form data. 
//GET - user submitted data using AJAX
//POST - in case user does not support javascript, we'll use POST instead
$vorname = ($_GET['vorname']) ? $_GET['vorname'] : $_POST['vorname'];
$nachname = ($_GET['nachname']) ? $_GET['nachname'] : $_POST['nachname'];
$email = ($_GET['email']) ?$_GET['email'] : $_POST['email'];

//flag to indicate which method it uses. If POST set it to 1
if ($_POST) $post = 1;

//Simple server side validation for POST data, of course, you should validate the email
if (!$vorname) $errors[count($errors)] = 'Geben Sie bitte Ihren Vornamen ein';
if (!$nachname) $errors[count($errors)] = 'Geben Sie bitte Ihren Nachnamen ein';
if (!$email) $errors[count($errors)] = 'Geben Sie bitte Ihre Mailadresse ein';  

//if the errors array is empty, send the mail / no errors found
if (!$errors) {


//recipient
    $to = 'admin@mail.com';   
    //sender
    $from = $vorname .' '. $nachname . ' <' . $email . '>';

    //subject and the html message
    $subject = 'Chat Anmeldung'; 
    $message = '
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head></head>
    <body>
    <table>
        <tr><td>Name</td><td>' . $vorname . '</td></tr>
        <tr><td>Name</td><td>' . $nachname . '</td></tr>
        <tr><td>Email</td><td>' . $email . '</td></tr>
    </table>
    </body>
    </html>';

    //send the mail
    $result = sendmail($to, $subject, $message, $from);

    //if POST was used, display the message straight away
    if ($_POST) {
        echo 'Die Freischaltung wird aktiviert!';

    //This one for ajax
    //1 means success, 0 means failed
    } else {
        echo '1';   
    }


} else {
    //display the errors message
    for ($i=0; $i<count($errors); $i++) echo $errors[$i] . '<br/>';
    echo '<a href="http://www.url_zur_seite.com">Back</a>';
    exit;
}


//Simple mail function with HTML header
function sendmail($to, $subject, $message, $from) {
    $headers = "MIME-Version: 1.0" . "\r\n";
    $headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
    $headers .= 'From: ' . $from . "\r\n";

    $result = mail($to,$subject,$message,$headers);

    if ($result) return 1;
    else return 0;
}

?>
 
Zum einen ist deine Validierung einfach falsch: überlege dir, was in den Feldern wirklich drinsteht, wenn man das Formular nicht ausfüllt. Du hast dir da, mit der Kombination zweier Skripte, selbst ein Bein gestellt.

Zum anderen sind die Namen, die du im JS abfragst, im HTML einfach nicht vorhanden...
 
Verstehe ich nicht!
Die Felder gibt es doch vorname, nachname, email?
HTML:
<input id='sender_vorname' type="text" name="vorname" value="Vorname" onfocus="this.value = (this.value == 'Vorname') ? '' : this.value" onblur="this.value = this.value ? this.value : 'Vorname'"/>
zu:
HTML:
<div class="element"><label>Vorname</label><input type="text" name="vorname" class="text" /></div>

Wie soll den das dan für das obere HTML im JS aussehen was ist an dem falsch?
PHP:
var vorname = $('input[name=vorname]');
 
Zuletzt bearbeitet:
Sodala hab es geschafft ;) war ein ganz dummer Fehler von mir ein kleiner Schreibfehler email = mail das war es.
Mails werden nun richtig versendet, die Vallidierung ist zwar noch Buggy aber das wird auch noch!
 
Zurück
Oben