falsche überprüfung beim absenden eines Kontaktformulars

PhaseV

Mitglied
Hallo liebe PHPler,

ich habe ein kleines Problem mit einem Kontaktformular, undzwar Überprüft die Seite für die EMail prüfung nur ob die Felder leer sind oder nicht, ich brauche aber eine wo grade das EMail-Feld genau überprüft wird, das die Email-Addy richtig ist (diesist@einemail.de).

Und bist jetzt läuft das alles auch über 2 files, wo muss ich denn folgenden PHP-Code im Formular reinschreiben?

PHP:
<?php
$Empfaenger = "";
if($_REQUEST['Send'])
{
if(empty($_REQUEST['Name']) || empty($_REQUEST['Email']) ||
empty($_REQUEST['Nachricht']))
{
echo"Bitte gehen Sie <a
href=\"javascript:history.back();\">zur&uuml;ck</a> und f&uuml;llen
Sie alle Felder aus!";
}
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&uuml;r Ihre eMail!";
}
}
else
{
echo"Ein Fehler ist aufgetreten. Bitte gehen Sie auf diese <a
href=\"../kontakt.php\">Seite</a>.";
}
?>

ich danke schonmal im Vorraus für eure Hilfe.

MfG
SiLvErStAr2411
 
1. Würde ich nicht mit $_REQUEST sondern mit $_POST arbeiten, da das einfach sicherer ist als $_REQUEST (Mit $_REQUEST könnte man die Daten auch per Query-String versenden)

2. Welche 2 Dateien sind das (Dateiname und Code bitte) und wie sieht das Formular genau aus?

3. Die E-Mail-Adresse kannst du mit Regulären ausdrücken überprüfen!

4. Es gibt im Netz bestimmt genügend Info dazu. :google::suchen:
 
habe das kontaktformular mit script nochmal überarbeitet. Jetzt habe ich aber das problem das das script mir den inhalt vom formular auf der seite ausgibt, aber dafür nichts in der email. vielleicht kann mir ja jemand helfen. hier mal das komplette script:
PHP:
<?php
	function mail_tmpl()
		{
			echo '<html>';
			echo '<table border="0" cellpadding="0" cellspacing="0">';
			echo '<tr>';
			echo '<td>Name:</td>';
			echo '<td>'.$_POST['Name'].'</td>';
			echo '</tr>';
			echo '<tr>';
			echo '<td>EMail:</td>';
			echo '<td>'.$_POST['Email'].'</td>';
			echo '</tr>';
			echo '</table>';
			echo '</html>';
		}
	$action = $_SERVER['PHP_SELF'];
	if ($_SERVER['REQUEST_METHOD'] == 'POST')
	{
		if (!empty($_POST['Name']) || !empty($_POST['EMail']) || !empty($_POST['Betreff']))
			{
				ini_set('track_errors', 1);
				$from = $_POST['Email'];
				$empf = 'webmaster@testserver.de';
				$betreff = 'EMail von Webseite:';
				$betreff .= $_POST['Betreff'];
				$msg = mail_tmpl();
			  	$erfolg = @mail($empf, $betreff, $msg, $from);
				if ($erfolg)
				{
					echo 'Ihre Nachricht wurde verschickt.<br>';
					echo 'Wir werden uns Ihrem Anliegen schnellst möglichst widmen.<br><br>';
					echo 'Ihr Team';
				}
				else
				{
					echo $php_errormsg;
				}
			}
	}
?>
<table height="100%" width="100%" border="0" cellpadding="0" cellspacing="0">
	<tr>
		<td align="center" valign="middle">
			<table border="0" cellpadding="1" cellspacing="2" id="text">
				<form action="<?=$action?>" method="post">
					<tr>
						<td align="right">Name:</td>
						<td>
							<input name="Name" size="50" type="text">*
						</td>
					</tr>
					<tr>
						<td align="right">eMail:</td>
						<td>
							<input name="Email" size="50" type="text">*
						</td>
					</tr>
					<tr>
						<td align="right">Betreff:</td>
						<td>
							<select name="Betreff" size="1">
								<option>Hilfe</option>
								<option>Mitteilung</option>
								<option>Beratung</option>
								<option>Anfrage</option>
								<option>Angebot</option>
								<option>sontiges</option>
							</select>*
						</td>
					</tr>
					<tr>
						<td align="right">Nachricht:</td>
						<td><textarea cols="38" name="Nachricht" rows="5"></textarea></td>
					</tr>
					<tr>
						<td align="right">W&uuml;nsche Antwort:</td>
						<td>
							Ja<input name="Antwort" checked type="radio" value="ja" id="radio">&nbsp;&nbsp;Nein<input name="Antwort" type="radio" value="nein" id="radio">
						</td>
					</tr>
					<tr>
						<td align="center" colspan="2">
							<input name="Send" id="button" type="submit" value="Abschicken">&nbsp;&nbsp;<input name="Reset" id="button" type="reset" value="L&ouml;schen">
						</td>
					</tr>
				</form>
			</table>
		</td>
	</tr>
</table>
 
Ich nehme mal an mit dieser Funktion willst du alles in einer Variable speichern:

PHP:
function mail_tmpl() 
        { 
            echo '<html>'; 
            echo '<table border="0" cellpadding="0" cellspacing="0">'; 
            echo '<tr>'; 
            echo '<td>Name:</td>'; 
            echo '<td>'.$_POST['Name'].'</td>'; 
            echo '</tr>'; 
            echo '<tr>'; 
            echo '<td>EMail:</td>'; 
            echo '<td>'.$_POST['Email'].'</td>'; 
            echo '</tr>'; 
            echo '</table>'; 
            echo '</html>'; 
        }
So wie du das aber gemacht hast, wird der Text ausgegeben (siehe "echo") ;)

Mach so:

PHP:
function mail_tmpl() 
        { 
            $msg='<html>
                    <table border="0" cellpadding="0" cellspacing="0"> 
                    <tr>
                    <td>Name:</td>
                    <td>'.$_POST['Name'].'</td>
                    </tr>
                    <tr> 
                    <td>EMail:</td>
                    <td>'.$_POST['Email'].'</td>
                    </tr>
                    </table>
                    </html>';
             return $msg;
        }
 
Email Format kanst du so Prüfen

PHP:
if(!eregi("^([a-z0-9_]|\-|\.)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,4}\$",$_POST[Email])){ 
    $fehler_text.="Bitte geben Sie eine gültige E-Email-Adresse an.<br>"; }

Mfg Splasch
 
Zurück