Antworten auf deine Fragen:
Neues Thema erstellen

[PHP] Anfängerproblem mit Kontaktformular

mausz

Noch nicht viel geschrieben

Hallo,

ich habe jetzt schon Nächte mit diesem Kontaktformular verbracht, mir Tutorials durchgelesen, in Foren gesucht und verschiedene Ansätze ausprobiert, aber ich komme einfach nicht weiter.
Ich bin absoluter Anfänger in Sachen PHP.
Dank Wordpress habe ich mir etwas Verständnis dafür angeeignet, aber etwas komplett selbst schreiben kann ich wohl noch nicht.
Ich arbeite dran, aber ich dachte, dass ich das Kontaktformular vlt auch so schon hinbekomme. ;)

Ich habs mit einem Tutorial von hier probiert. (dieses hier)
Aber nach dem ich den Code erst mal 1 zu 1 zum testen übernommen habe, bekomme ich nur eine weiße Seite. =/
error_reporting steht auch gleich zu Anfang, aber nicht mal einen Fehler gibt er aus. Woran kanns liegen?

Da mich das so gewurmt hat, hab ichs noch mit einem anderen Kontaktformular ausprobiert und das funktioniert zwar, aber ich glaube, es ist nicht wirklich Spamsicher... -.-
Und - was mich auch noch etwas stört - es überprüft nicht, ob Felder ausgefüllt sind.
Ich stell mir das so vor, dass Name, Mail und Anfragetext Pflichtfelder sind und somit nicht leer abgeschickt werden können. Adresse und Telefonnummer hingegen sollen optional sein.

Ich zeig euch einfach mal, was ich bisher habe. Vielleicht könnt ihr mir ja ein paar neue Ansätze geben, damit ich vlt auch besser weiß, wo ich nach suchen muss, bzw. mit welcher Funktion ich das gewünschte erreiche...

kontakt.php
Code:
<h1>Kontakt</h1>
<p>
	<form action="kontakt-act1.php" method="post">
		<dl>
			<dt>Ihr Name:</dt>
			<dd><input type="text" name="Name" /></dd>
			<dt>Adresse:</dt>
			<dd><input type="text" name="Adresse" /></dd>
			<dt>Telefonnummer (für weitere Kontaktaufnahme):</dt>
			<dd><input type="text" name="Telefon" /></dd>
			<dt>Ihre E-Mail:</dt>
			<dd><input type="text" name="EMail" /></dd>
			<dt>Anfrage:</dt>
			<dd><textarea name="anfrage" rows="5" cols="30"></textarea></dd>
		</dl>
		<p class="buttons">
		<input type="submit" value="Senden" name="fertig" />
		<input type="reset" value="Zurücksetzen" />
		</p>
	</form>
	</p>

kontakt-act1.php
Code:
<?php

$strEmpfaenger = 'EMPFÄNGERMAIL';
$strFrom       = '"Kontaktformular" <KONTAKTMAIL>';
$strSubject    = 'Kontaktanfrage';
$strReturnhtml = '/kontakt-danke.php';
$strDelimiter  = ":\t";

function checkEmail( $email )
{
    $nonascii      = "\x80-\xff";    
    $nqtext        = "[^\\\\$nonascii\015\012\"]";
    $qchar         = "\\\\[^$nonascii]";
    $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";
    $pattern       = "$user_part\@$domain_part";
    
    if (!preg_match( "/$pattern$/", $email ))
    {
        return FALSE;
    }
    else
    {
        return TRUE;
    }
}  

if(isset($fertig)){

  if ($Name == "") {
   echo"<script type=\"text/javascript\"> alert(\"Sie haben ihren Namen nicht angegeben!\");</script>";
  } elseif ($Telefon == "") {
    echo"<script type=\"text/javascript\"> alert(\"Sie haben ihre Telefonnummer nicht angegeben!\");</script>";
  } elseif ($EMail == "") {
    echo"<script type=\"text/javascript\"> alert(\"Sie haben Ihre E-Mail nicht angegeben!\");</script>";
  } elseif ($anfrage == "") {
    echo"<script type=\"text/javascript\"> alert(\"Sie haben keine Nachricht angegeben!\");</script>";    
  } elseif (!checkEmail( $_REQUEST['email'] )) {
    echo"<script type=\"text/javascript\"> alert(\"Die Email Adresse ist nicht gueltig!\");</script>";
  } else {
  
  


$datum = date("d.m.Y");
  $uhrzeit = date("H:i");
  $datum=$datum ."-". $uhrzeit ."Uhr";
  

    
  $ich = "MEINEMAIL";
  $betreffemail = "Kontaktformular";
  $text = "Sie haben eine Nachricht von:".$Name."
  Seine Email Adresse lautet:".$EMail."
  Die Telefonnummer lautet:".$Telefon."
  Das Sendedatum:".$datum."
  Die Nachrich lautet:".$anfrage."
  
  
  
  ";
  mail($ich, $betreffemail, $text, 
  "From: Absender <Absenderemail>");
  echo"Mail verschickt <br>";
  
echo"<script type=\"text/javascript\"> alert(\"Die Nachricht wurde erfolgreich verschickt!\");</script>";        



}
}

if($_POST)
{
 $strMailtext = "";

 while(list($strName,$value) = each($_POST))
 {
  if(is_array($value))
  {
   foreach($value as $value_array)
   {
    $strMailtext .= $strName.$strDelimiter.$value_array."\n";
   }
  }
  else
  {
   $strMailtext .= $strName.$strDelimiter.$value."\n";
  }
 }

 if(get_magic_quotes_gpc())
 {
  $strMailtext = stripslashes($strMailtext);
 }

 mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)
  or die("Die Mail konnte nicht versendet werden.");
 header("Location: $strReturnhtml");
 exit;
}

?>

Und dann gibts eben noch die Danke-Seite, auf der dann einfach nur "vielen Dank" steht.

Für mich als Laie sieht es eigentlich so aus, als ob da eine Überprüfung vorgesehen ist. Leider funktioniert diese aber irgendwie nicht. =/


Und wenn wir schon mal dabei sind: Wo lege ich fest (und formatiere) die Mail, die dann als Ergebnis der Formulars an mich geschickt wird?

Ich hoffe, es kann mir jemand helfen. Ich weiß so langsam nicht mehr weiter.
 

terrapack

Noch nicht viel geschrieben

AW:
PHP:
 Anfängerproblem mit Kontaktformular[/b]

Hallo mausz,

dann versuch ich dir mal etwas zu helfen.

Zuerst einmal werden im verarbeitenden PHP-Script die Variablen des Formulars nicht richtig ausgelesen. So wie es jetzt da steht, müsste php selbstständig die $_POST Variable in entsprechende Variablen übertragen. Das ist aber meist nicht aktiv. Deshalb solltest du alle vom Formular übertragenen Daten mittels $_POST['name'] auslesen. Ich würde dein Script also erst einmal folgendermaßen abändern:

[PHP]
if (isset($_POST['Name'])){ // statt if (isset($fertig)){
  $Name = $_POST['Name'];
  $Adresse = $_POST['Adresse'];
  $Telefon = $_POST['Telefon'];
  $EMail = $_POST['EMail'];
  $anfrage = $_POST['anfrage'];
  ...
Dann sollten die folgenden Abfragen funktionieren. Lediglich die Zeile
PHP:
} elseif (!checkEmail( $_REQUEST['email'] )) {
muss abgeändert werden in
PHP:
}elseif(!checkEmail($EMail)){
Folgender Teil verschickt die Email:
PHP:
$ich = "MEINEMAIL"; // Hier deine eigene Email-Adresse eintragen.
$betreffemail = "Kontaktformular";

// Der Inhalt der Email:
$text = "Sie haben eine Nachricht von:".$Name."
Seine Email Adresse lautet:".$EMail."
Die Telefonnummer lautet:".$Telefon."
Das Sendedatum:".$datum."
Die Nachrich lautet:".$anfrage."            ";
//

mail($ich, $betreffemail, $text,    "From: Absender <Absenderemail>"); // Hier wird die Mail versandt.
Näheres zur Mailfunktion kannst du diversen Tutorials dazu entnehmen. Du solltest dir auch einmal anschauen, was im Header stehen kann, das ist der 4. Parameter der mail() - Funktion.

Der letzte Teil ist in meinen Augen nach dem Auslesen der $_POST-Variablen oben überflüssig:
PHP:
if($_POST) {  $strMailtext = "";   while(list($strName,$value) = each($_POST))  {   if(is_array($value))   {    foreach($value as $value_array)    {     $strMailtext .= $strName.$strDelimiter.$value_array."\n";    }   }   else   {    $strMailtext .= $strName.$strDelimiter.$value."\n";   }  }   if(get_magic_quotes_gpc())  {   $strMailtext = stripslashes($strMailtext);  }   mail($strEmpfaenger, $strSubject, $strMailtext, "From: ".$strFrom)   or die("Die Mail konnte nicht versendet werden.");  header("Location: $strReturnhtml");  exit; }
Ich hoffe das hilft dir weiter.

Grüße

edit: Ach ja, wegen Spam-Sicherheit solltest du dir mal folgendes ansehen: http://www.phpcaptcha.org/
 
Zuletzt bearbeitet:

mausz

Noch nicht viel geschrieben

AW:
PHP:
 Anfängerproblem mit Kontaktformular[/b]

Vielen Dank für deine Antwort!
Werde ich nachher mal austesten. :)
Ich hab zwischenzeitlich noch eine weitere Anleitung gefunden, die auf Anhieb funktioniert hat. Befindet sich aber noch in der Testphase und es ist sicher nicht verkehrt noch ein weiteres funktionsfähiges Formular in der Hinterhand zu haben. ;)
Also danke für deine Hilfe!

PS: Ich weiß nicht, obs ich so schreiben darf, aber  hat mir sehr geholfen.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.620
Beiträge
1.538.374
Mitglieder
67.544
Neuestes Mitglied
janusbarman
Oben