PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kontaktformular



chinmoku
05.02.2006, 10:24
Nabend ^^

Ich hätte da eine Frage bezüglich eines Kontaktformulares in PHP.

Zuzeit benutze ich dieses (http://www.webmaster-resource.de/tutorials/php/kontaktformular-mit-php-01.php). Ich habs zwar etwas modifiziert, aber das sollte auch reichen.

Dann habe ich das Formular mal mit diesem hier (http://www.psd-tutorials.de/membertutorial569.html) verglichen.

Was ich an dem letzteren besser finde ist, dass abgefragt wird, ob die EMail Adresse richtig eingegeben ist:


function mailcheck($mail) {
$mail = eregi("^[a-z0-9]+([-_.]?[a-z0-9])
+@[a-z0-9]+([-_.]?[a-z0-9])+.[a-z]{2,4}", $mail);

Wie/wo packe ich den Code jetzt in das erste Beispiel?

Ein Versuch von mir ist leider gescheitert ._.


Wenn jemand ganz viel Zeit hat, kann derjenige mir auch noch erklären, wie folgende Sachen möglich sind:
Wie kann ich in dieses Formular noch eintragen, an wen die EMail geschickt werden soll? Soll heißen, dass ich in dem Formular aus einem DropDownMenü den Empfänger auswählen möchte und dass die Nachricht dann an seine EMail Adresse geschickt wird.

Wäre toll, wenn jemand ne Lösung hätte ^_^

Danke im Voraus.

Manni
05.02.2006, 12:07
Der Code müsste geändert so aussehen:

<html>
<head>
<title>Kontaktformular mit PHP</title>
</head>
<body>
<?php

$Empfaenger = "Ihre@Mailadresse.land";

if($_REQUEST['Send'])
{
if(empty($_REQUEST['Name']) || empty($_REQUEST['Email']) || empty($_REQUEST['Nachricht']))
{
echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und füllen Sie alle Felder aus!";
}
elseif(!eregi("^[a-z0-9]+([-_.]?[a-z0-9])+@[a-z0-9]+([-_.]?[a-z0-9])+.[a-z]{2,4}", $_REQUEST['Email']))
{
echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und geben Sie eine gültige Emailadresse ein!";
}
else
{
$Mailnachricht = "Sie haben folgende Nachricht erhalten: \n\n";
while(list($Formularfeld, $Wert)=each($_REQUEST))
{
if($Formularfeld!="Send")
{
$Mailnachricht .= $Formularfeld.": ".$Wert."\n";
}
}
$Mailnachricht .= "\nDatum/Zeit: ";
$Mailnachricht .= date("d.m.Y H:i:s");
$Mailbetreff = "Kontakt: ";
$Mailbetreff .= $_REQUEST['Betreff'];
mail($Empfaenger, $Mailbetreff, $Mailnachricht, "From: ".$_REQUEST['Email']);
echo"Vielen Dank für Ihre eMail!";
}
}
else
{
echo"Ein Fehler ist aufgetreten. Bitte gehen Sie auf diese <a href=\"kontaktformular.php\">Seite</a>.";
}

?>
</body>
</html>

Hinzugefügt hab ich folgende Zeilen:

elseif(!eregi("^[a-z0-9]+([-_.]?[a-z0-9])+@[a-z0-9]+([-_.]?[a-z0-9])+.[a-z]{2,4}", $_REQUEST['Email']))
{
echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und geben Sie eine gültige Emailadresse ein!";
}

chinmoku
05.02.2006, 12:54
Ah cool danke,

aber wieso geht das "functions" nicht?

Und könnte man für $_REQUEST auch $_POST oder $_GET nehmen? Und worin liegt der Unterschied? ._.

Manni
05.02.2006, 13:54
Deine Funktion müsste wenn so aussehen:

function mailcheck($mail) {
return eregi("^[a-z0-9]+([-_.]?[a-z0-9])
+@[a-z0-9]+([-_.]?[a-z0-9])+.[a-z]{2,4}", $mail);
}
Sie gibt true zurück, wenn die Email gültig ist. (Und false wenn sie ungültig ist)
Dann müsste der Teil so aussehen:

elseif(!mailcheck($_REQUEST['Email']))
{
echo"Bitte gehen Sie <a href=\"javascript:history.back();\">zurück</a> und geben Sie eine gültige Emailadresse ein!";
}

Und du kannst natürlich auch $_POST oder $_GET nehmen, wenn denn das Formular dem entsprechend auch post bzw get als Methode hat ;)

chinmoku
07.02.2006, 15:45
Ich hab das Script mal getestet. Soweit funktioniert das Ganze schon, allerdings:

Wenn ich bei der E Mail keinen Punkt eingebe, wird sie trotzdem gesendet. Wie kann ich das ändern?

Manni
07.02.2006, 16:57
Du musst den Punkt escapen, indem du ein \ davor machst (also \.) Das \ musst du für PHP evtl auch wieder escapen, also: \\. ;)

chinmoku
07.02.2006, 18:02
Shit, ich versteh dich nich XD

Welchen Punkt soll ich denn escapen? ._.'

*zum php Tutorial wandert* ^^

Manni
07.02.2006, 19:26
Deine RegExp muss geändert so aussehen:

^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}