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:
JS:
und das PHP:
weis einfach nicht mehr weiter
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;
}
?>