[GastForen Programmierung/Entwicklung JavaScript PHP Kontaktformular - Sende-Erfolgsmeldung als "Alert" - (Wie) geht das?

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

PHP Kontaktformular - Sende-Erfolgsmeldung als "Alert" - (Wie) geht das?

homeedition
Beiträge gesamt: 198

20. Jun 2014, 10:49
Beitrag # 1 von 3
Bewertung:
(35653 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich habe ein PHP Kontaktformular und zur Zeit wird die Erfolgsmeldung, nach dem Senden, des Formulars in einer leeren Page angezeigt, da ich aber eine OnePage habe ist das sehr doof wenn, nach dem Senden, eine leere Page mit der Erfolgsmeldung angezeigt wird.

Deshalb möchte ich gerne dass nach dem Drücken auf den "Senden"-Button die Erfolgsmeldung "Ihre Nachricht wurde versendet" als Alert erscheint und die Seite nicht gewechselt wird.

Ist das Irgendwie möglich? - Das wäre super!

Hier mal das gesamte Formular-Script:
Code
<style type="text/css"> 

body {
text-align:center;
}
<!--
.titel {
font-family: 'Alegreya Sans SC', sans-serif;
font-size: 14pt;
font-weight: 400;
color: #000;
}
.inhalte {
font-family: 'Alegreya Sans', sans-serif;
font-size: 12pt;
font-weight: 400;
color: #000;
}
-->
</style>


<!-- .......................................................................... -->
<!-- Anfang Formular -->
<!-- .......................................................................... -->
<script language=JavaScript>
<!--
function isValid() {

var msg = "";

if (kontaktFormular.eMail.value.indexOf("@") < 1 ||
kontaktFormular.eMail.value.indexOf(".") < 1) {
msg += "- Die E-Mail-Adresse ist syntaktisch nicht korrekt.\n";
}

if(kontaktFormular.vorName.value == "") {
msg += "- Leeres Feld: Name:\n";
}

if(kontaktFormular.betreff1.value == "") {
msg += "- Leeres Feld: Betreff:\n";
}

if(kontaktFormular.nachricht.value == "") {
msg += "- Leeres Feld: Nachricht:\n";
}

if(msg == "") {
return true;
}
alert(msg);
return false;
}
-->
</script>
<?php

$formularAnzeigen = false;
if (!empty($_POST["senden"]) && (
empty($_POST["vorName"]) ||
empty($_POST["eMail"]) ||
empty($_POST["nachricht"]))) {
$formularAnzeigen = true;
echo '<span style="color: #FF0000; font-size: x-large;">Bitte alle Pflichtfelder ausfuellen.</span>';
} else if (!empty($_POST["senden"]) &&
!isEmail($_POST["eMail"])) {
$formularAnzeigen = true;
echo '<span style="color: #FF0000; font-size: x-large;">Die E-Mail-Adresse ist nicht korrekt.</span>';
} else if (empty($_POST["senden"])) {
$formularAnzeigen = true;
}
if ($formularAnzeigen) {
?>
<!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>
<link href='http://fonts.googleapis.com/css?family=Alegreya+Sans:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,800,800italic,900,900italic' rel='stylesheet' type='text/css'>
<link href='http://fonts.googleapis.com/css?family=Alegreya+Sans+SC:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,800,800italic,900,900italic' rel='stylesheet' type='text/css'>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Kontaktformular</title>
</head>
<body>
<form action="<?=$_SERVER[PHP_SELF]; ?>" method="post" name="kontaktFormular" class="titel" onSubmit="return isValid()">
<table width="750" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#ffffff">
<tr>
<td width="750" align="center" valign="top"><span class="titel">Anrede:</span><span class="inhalte"><br />
<select style="font-family: 'Alegreya Sans', sans-serif; font-size: 10pt; font-weight: 400; color: #000;" name="anrede">
<option <?=($_POST['anrede']=='Frau')?'selected':''?>>Frau</option>
<option <?=($_POST['anrede']=='Herr')?'selected':''?>>Herr</option>
</select>
</span></td>
</tr>
<tr>
<td align="center" valign="top"><br />
<span class="titel">*Name:</span><br />
<span class="inhalte">
<input name="vorName" type="text" style="font-family: 'Alegreya Sans', sans-serif; font-size: 10pt; font-weight: 400; color: #000;" value="<?=$_POST['vorName']; ?>" size="50" />
</span></td>
</tr>
<tr>
<td align="center" valign="top"><br />
<span class="titel">eMail*:</span><br />
<span class="inhalte">
<input name="eMail" type="text" id="eMail" style="font-family: 'Alegreya Sans', sans-serif; font-size: 10pt; font-weight: 400; color: #000;" value="<?=$_POST['eMail']; ?>" size="50" />
</span></td>
</tr>
<tr>
<td align="center" valign="top"><span class="inhalte"><br />
<br />
</span><span class="titel">Betreff:</span><span class="inhalte"><br />

<input name="betreff1" type="text" id="betreff1" style="font-family: 'Alegreya Sans', sans-serif; font-size: 10pt; font-weight: 400; color: #000;" value="<?=$_POST['betreff1']; ?>" size="50" />
</span></td>
</tr>
<tr>
<td align="center" valign="top"><span class="inhalte"><br />
</span><span class="titel">Nachricht*:</span><span class="inhalte"><br />

<textarea style="font-family: 'Alegreya Sans', sans-serif; font-size: 10pt; font-weight: 400; color: #000;" name="nachricht" cols="100" rows="8"><?=$_POST['nachricht']; ?>
</textarea>
</span></td>
</tr>
<tr>
<td align="center" valign="top" class="titel"><br />
M&ouml;chten Sie eine Kopie Ihrer Nachricht erhalten?<br />
<input style="font-family: 'Alegreya Sans', sans-serif; font-size: 10pt; font-weight: 400; color: #000;" name="kopie" type="checkbox" class="inhalte" value="checked" checked="checked" <?=$_POST['kopie']; ?> />
</td>
</tr>
<tr>
<td height="53" align="center" valign="top"><br /> <input style="font-family: 'Alegreya Sans', sans-serif; font-size: 10pt; font-weight: 400; color: #000;" name="senden" type="submit" class="titel" value="Nachricht senden" />
<br />
<?php
echo'';
} else {
$eMail = '

Anrede:
'.$_POST['anrede'].'

Name:
'.$_POST['vorName'].'

E-Mail:
'.$_POST['eMail'].'

Betreff:
'.$_POST['betreff1'].'

Nachricht:
'.$_POST['nachricht'].'

Kopie der Nachricht:
'.$_POST['kopie'].'';

if (@mail("meineemail@email.de",
"Neue Nachricht - Kontaktformular",
$eMail)) {
echo "Ihre Nachricht wurde versendet, vielen Dank!<br />";
} else {
echo "E-Mail-Verkehr funktioniert zur Zeit nicht<br />";
}
if ($_POST['kopie']) {
if (@mail($_POST['eMail'],
"Kopie Ihrer eMail",
$eMail)) {
echo "Sie haben eine Kopie Ihrer Nachricht zugesendet bekommen.<br />";
}
}
}

function isEmail($email) {
$nonascii = "\x80-\xff";
$nqtext = "[^\\$nonascii\015\012\"]";
$qchar = "\\[^$nonascii]";
$protocol = "(?:mailto:)";
$normuser = "[a-zA-Z0-9][a-zA-Z0-9_.-]*";
$quotedstring = "\"(?:$nqtext|$qchar)+\"";
$user_part = "(?:$normuser|$quotedstring)";
$dom_mainpart = "[a-zA-Z0-9][a-zA-Z0-9._-]*\.";
$dom_subpart = "(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\.)*";
$dom_tldpart = "[a-zA-Z]{2,5}";
$domain_part = "$dom_subpart$dom_mainpart$dom_tldpart";
$regex = "$protocol?$user_part\@$domain_part";
if (preg_match("/^$regex$/",$email)) {
return true;
}
return false;
}
?>

<!-- ............................................................... -->
<!-- Ende KontaktFormular -->
<!-- ............................................................... --></td>
</tr>
</table>
</form>
</body>
</html>


Vielleicht kann mir ja jemand helfen, vielen Dank :)
X

PHP Kontaktformular - Sende-Erfolgsmeldung als "Alert" - (Wie) geht das?

Intermedia
Beiträge gesamt: 1287

20. Jun 2014, 16:54
Beitrag # 2 von 3
Beitrag ID: #528673
Bewertung:
(35606 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi,

also was du da vor hast wird mit diesem Ansatz nicht funktionieren, da das Formular sonst nicht verschickt wird.

Sowas kann man mit Ajax realisieren, das bedeutet von vorne anfangen.

Du hältst dich auch nicht an das EVA Prinzip und machst dir die Arbeit dadurch nur unnötig schwer.

Dann fallen mir auf Anhieb noch Sicherheitslücken auf.

Lies dir das mal durch: http://blog.oncode.info/...-site-scripting-xss/

und dann das: http://www.robo47.net/...ist-tot-es-lebe-mail

Deine Validierung der E-Mail ist auch sehr abenteuerlich. ;-)
Sowas kann PHP von sich aus: http://php.net/...mples.validation.php


Was den Einsatz von Tabellen betrifft, ist das hier sowas von überflüssig.... ;-)


als Antwort auf: [#528655]

PHP Kontaktformular - Sende-Erfolgsmeldung als "Alert" - (Wie) geht das?

homeedition
Beiträge gesamt: 198

26. Jun 2014, 10:09
Beitrag # 3 von 3
Beitrag ID: #528873
Bewertung:
(35537 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank erstmal :)
Ich werde es mal mit ajax versuchen :)


als Antwort auf: [#528673]