Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
emrah89
Threadersteller
Dabei seit: 25.07.2007
Ort: Aachen
Alter: 34
Geschlecht:
|
Verfasst Fr 29.05.2009 10:49
Titel Kontaktformular in PHP richtig? |
|
|
Moin Medi´s,
Ich versuche seit Tagen schon ein Kontaktformular für ne Homepage zu machen doch irgendwie funktioniert es nicht.
Da ich eigentlich Printer bin, habe ich sehr wenige Erfahrungen im Non-Print Bereich und brauche drigend Hilfe:
Mein Wunsch: Ein Kontaktformular, das nach der Versendung an mein E-Mail adresse weitergeleitet wird.
Auf der Internetseite www.formular-generator.de kann man einen Formuar generieren lassen, doch wenn ich diesen Code in meine PHP Datei reinkopiere und in Firefox testen möchte, werden die PHP tags angezeigt. Ist das normal? Oder wird das später nicht angezeigt wenn die Seite online ist?
So siehts in Firefox aus:
Code: | Bitte alle Pflichtfelder ausfuellen.'; } else if (!empty($_POST["senden"]) && !isEmail($_POST["eMail"])) { $formularAnzeigen = true; echo 'Die E-Mail-Adresse ist nicht korrekt.'; } else if (empty($_POST["senden"])) { $formularAnzeigen = true; } if ($formularAnzeigen) { ?>
*
Vorname:
*
Nachname:
*
E-Mail: z.B: name@gmx.net, ihrName@web.de
*
Betreff:
*
Nachricht: <?=$_POST['nachricht']; ?>
Kopie der Nachricht: > Möchten Sie eine Kopie der Nachricht per E-Mail erhalten?
Formular Generator erstellt.'; } else { $eMail = ' Vorname: '.$_POST['vorName'].' Nachname: '.$_POST['nachName'].' E-Mail: '.$_POST['eMail'].' Betreff: '.$_POST['betreff1'].' Nachricht: '.$_POST['nachricht'].' Kopie der Nachricht: '.$_POST['kopie'].''; if (@mail("ahmetoglu@verlag-mainz.de", "Neue Nachricht vom Kontaktformular", $eMail)) { echo "Ihre Nachricht wurde an unsverschickt, vielen Dank!
"; } else { echo "E-Mail-Verkehr funktioniert zur Zeit nicht
"; } if ($_POST['kopie']) { if (@mail($_POST['eMail'], "Kontaktformular von IchwerdeAutor.de", $eMail)) { echo "Sie haben eine Kopie der Nachricht zugeschickt bekommen.
"; } } } 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; } ?> |
und mein Code sieht so aus:
Code: | <!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Unbenanntes Dokument</title>
</head>
<body>
<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: Vorname:\n";
}
if(kontaktFormular.nachName.value == "") {
msg += "- Leeres Feld: Nachname:\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["nachName"]) ||
empty($_POST["eMail"]) ||
empty($_POST["betreff1"]) ||
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) {
?>
<form name="kontaktFormular" method="post" action="<?=$_SERVER[PHP_SELF]; ?>" onSubmit="return isValid()">
<table width="800" border="0">
<!--anfang vorName-->
<tr>
<td><div align="center">*</div></td>
<td><strong>
Vorname:
</strong></td>
<td>
<input name="vorName" type="text" value="<?=$_POST['vorName']; ?>" /></td>
<td>
</td>
</tr>
<!--ende vorName-->
<!--anfang nachName-->
<tr>
<td><div align="center">*</div></td>
<td><strong>
Nachname:
</strong></td>
<td><input name="nachName" type="text" value="<?=$_POST['nachName']; ?>" /></td>
<td>
</td>
</tr>
<!--ende nachName-->
<!--anfang eMail-->
<tr>
<td><div align="center">*</div></td>
<td><strong>
E-Mail:
</strong></td>
<td><input name="eMail" type="text" id="eMail" value="<?=$_POST['eMail']; ?>" /></td>
<td>
z.B: name@gmx.net, ihrName@web.de
</td>
</tr>
<!--ende eMail-->
<!--anfang betreff1-->
<tr>
<td><div align="center">*</div></td>
<td><strong>
Betreff:
</strong></td>
<td><input name="betreff1" type="text" id="betreff1" value="<?=$_POST['betreff1']; ?>" size="50" /></td>
<td>
</td>
</tr>
<!--ende betreff1-->
<!--anfang nachricht-->
<tr>
<td><div align="center">*</div></td>
<td><strong>
Nachricht:
</strong></td>
<td><textarea name="nachricht" cols="40" rows="10"><?=$_POST['nachricht']; ?></textarea></td>
<td>
</td>
</tr>
<!--ende nachricht-->
<!--anfang kopie-->
<tr>
<td> </td>
<td><strong>
Kopie der Nachricht:
</strong></td>
<td><input name="kopie" type="checkbox" value="checked" <?=$_POST['kopie']; ?>></td>
<td>
Möchten Sie eine Kopie der Nachricht per E-Mail erhalten?
</td>
</tr>
<!--ende kopie-->
<tr>
<td colspan="3">
<div align="center">
<input name="senden" type="submit" value="Senden" />
</div>
</td>
<td> </td>
</tr>
</table>
</form>
<?php
echo'Dieses Formular wurde mit dem <a href="http://www.formular-generator.de" target="_blank">Formular Generator</a> erstellt.';
} else {
$eMail = '
Vorname:
'.$_POST['vorName'].'
Nachname:
'.$_POST['nachName'].'
E-Mail:
'.$_POST['eMail'].'
Betreff:
'.$_POST['betreff1'].'
Nachricht:
'.$_POST['nachricht'].'
Kopie der Nachricht:
'.$_POST['kopie'].'';
if (@mail("ahmetoglu@verlag-mainz.de",
"Neue Nachricht vom Kontaktformular",
$eMail)) {
echo "Ihre Nachricht wurde an unsverschickt, vielen Dank!<br />";
} else {
echo "E-Mail-Verkehr funktioniert zur Zeit nicht<br />";
}
if ($_POST['kopie']) {
if (@mail($_POST['eMail'],
"Kontaktformular von IchwerdeAutor.de",
$eMail)) {
echo "Sie haben eine Kopie der Nachricht zugeschickt 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;
}
?>
</body>
</html> |
Wenn einer bitte bitte bitte kurz gucken würde, wo die Fehler sind wäre ich sehr dankbar, denn ich die Seite drigend ins Netz gestellt werden :S
[edit]
Bitte [code]-Tags verwenden.
Zuletzt bearbeitet von Smooth-Graphics am Fr 29.05.2009 12:45, insgesamt 1-mal bearbeitet
|
|
|
|
|
Snifferdog
Dabei seit: 08.03.2007
Ort: Düsseldorf
Alter: 35
Geschlecht:
|
Verfasst Fr 29.05.2009 10:57
Titel
|
|
|
Hey,
ehm was heißt "Oder wird das später nicht angezeigt wenn die Seite online ist?"? Führst du die PHP Datei auf deinem Computer aus? Wenn ja, dann ist es kein Wunder, dass es nicht funktioniert, denn PHP wird serverseitig ausgeführt.
Du brauchst also einen Server der dir das Script vorher verarbeitet bevor du dein "Ergebnis" bzw die Ausgabe ansehen kannst.
Gruß
EDIT:
Ich sehe grade, dass du die POST-Daten direkt in deine Nachricht einbaust. Das sollte man nie machen.
Sicherheitstechnisch ist das vollkommmen fürn .... Dazu gibts hier im Forum und auch bei Google aber genügend Lesestoff. Such einfach mal nach "sicheres kontaktformular" o.ä.
Zuletzt bearbeitet von Snifferdog am Fr 29.05.2009 11:07, insgesamt 1-mal bearbeitet
|
|
|
|
|
Anzeige
|
|
|
willshedo
Dabei seit: 21.12.2005
Ort: Waldshut
Alter: 51
Geschlecht: -
|
Verfasst Fr 29.05.2009 21:05
Titel
|
|
|
Hi,
dein "So siehts in Firefox aus:" kapier ich zwar nicht, aber den Code hab ich eben online auf ausprobiert, der funktioniert wunderbar und sendet die beiden Mails brav ab. 'Fehler' in dem Sinne sind also nicht drin, auch wenn der PHP-Code reichlich unsauber daherkommt.
Dann lag es also tatsächlich daran, daß du nicht online auf einem Webspace getestet hast, wo auch PHP bereitsteht, richtig? Php-Dateien wie Html-Dateien lokal testen isnich', wie Snifferdog schon sagte.
Grüßle,
Chris
|
|
|
|
|
nickdesign
Dabei seit: 28.02.2007
Ort: South London
Alter: 43
Geschlecht:
|
Verfasst Fr 29.05.2009 22:48
Titel
|
|
|
- > DOWNLOAD http://www.apachefriends.org/de/xampp.html
Installieren und starten dann müsste deine PHP Seite auch angezeigt werden... mehr sag ich net dazu...der rest ist selbsterklärend... *lol*
|
|
|
|
|
fishtown
Dabei seit: 20.06.2009
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Sa 20.06.2009 11:37
Titel
|
|
|
Hallo, ich benutze das selbe Script und habe eine Frage dazu:
Wenn eine Mail verschickt wird, dann kommt sie zwar an, leider aber mit der Server-EMail-Addy (anonymous@xxxxxxx.stratoserver.net).
Wie kann ich das ändern, sodass meine E-Mail Adresse dafür genutzt wird)
|
|
|
|
|
Pixelpole
Dabei seit: 25.10.2004
Ort: Trier
Alter: 37
Geschlecht:
|
|
|
|
|
fishtown
Dabei seit: 20.06.2009
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Sa 20.06.2009 12:04
Titel
|
|
|
Ja, ne, is klar. Danke erstmal, aber wo kommt was hin?
Sorry, aber scheint so als ob ich in meinem Alter echt Probleme mit dem Verstehen habe.
|
|
|
|
|
Smooth-Graphics
Dabei seit: 22.05.2006
Ort: -
Alter: -
Geschlecht:
|
Verfasst Sa 20.06.2009 13:28
Titel
|
|
|
fishtown hat geschrieben: | Ja, ne, is klar. Danke erstmal, aber wo kommt was hin?
Sorry, aber scheint so als ob ich in meinem Alter echt Probleme mit dem Verstehen habe. |
Code: | <?php
$empfaenger = 'niemand@example.com';
$betreff = 'Der Betreff';
$nachricht = 'Hallo';
$header = 'From: webmaster@example.com' . "\r\n" .
'Reply-To: webmaster@example.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($empfaenger, $betreff, $nachricht, $header);
?>
|
Schau dir mal die $header Variable an. Allerdings kann das ganze auch vom Hoster bedingt sein, manche haben da ziemlich "blöde" Einstellungen, so dass immer diese E-Mail angezeigt wird.
|
|
|
|
|
|
|
|
Ähnliche Themen |
Kontaktformular
PHP-Kontaktformular
Kontaktformular
Kontaktformular
kontaktformular
Kontaktformular
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|