• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Problem Kontaktformular mit PHP

Testimus

Neues Mitglied
Hi Leute,
ich habe folgendes Problem.
Ich habe mir ein Kontaktformular erstellt, dass via Post-Methode und PHP arbeitet.
Wenn ich eine komplette Formular.php Datei erstelle, mit <Head>, <body> ..... , funktioniert alles ohne Probleme.
Ich möchte das Formular jedoch so einbauen, dass ich nicht meine ganze Seite, inklusive Navigation u.s.w. neu laden muss.
Deshalb soll das Kontaktformular im Content geladen werden.
Also steht in der Formular.php nun nur noch eine <div>. Darin stehen die Formularfelder und das PHP-Skript (welches auch funktioniert).
Die Formular.php bzw. die sich darin befindende <div> wird später auf meiner Seite im Content-Bereich geladen.
Hier das Problem: Die Felder und die Formatierung werden richtig dargestellt, jedoch erhalte ich folgende Fehlermeldung:
"Notice: Undefined index: email in tpl/inhalt/formular.php on line 36"
Anscheinend steht nichts mehr im $_Post array !?
Wie kann das sein?
Könnt ihr mir helfen?

MfG
Testimus

P.S: Falls Erklärung zu schlecht, poste ich 'nen CodeSchnipsel.
 
Ja, der Code wäre nötig. Aber man sieht an der Fehlermeldung bereits, dass du etwas nicht deklariert hast. Was genau .. ohne Code schwer ratbar.
 
Danke für die schnelle Antwort!
Also ich habe den ersten Teil des PHP-Codes kopiert:

<?php
$von = $_POST['von'];
$email = $_POST['email'];
$betreff = $_POST['betreff'];
$nachricht = $_POST['nachricht'];
$fertig = $_POST['fertig'];

function checkEmail( $email )
{ ................}......

Schon die ersten 5 Zeilen, bei denen der Array-Inhalt in eine Variable übergeben wird kommt der Fehler.
Wie gesagt, wenn ich den gleichen Code in einer PHP Datei mit <html> <head> <body> ... einbaue, funktioniert das absolut Problemlos.
Ich versteh nicht warum?

MfG
Testimus
 
das nützt uns herzlich wenig, denn die variablendeklaration wird wohl kaum fehler aufweisen, wie wärs mal mim rest?
aber bitte in code-tags, danke.

Nils aka XraYSoLo
 
So, hier mal meine Formular.php:

HTML:
<div id="KForm">
       <p>&nbsp;</p>

	   <form action="formular.php" method="post">
	   <p>Ihr Name:
	   <br />
        <input type="text" name="von" />
		</p>
	    <p>Ihre Email-Adresse:    (Für Antwort):<br />
	    <input type="text" name="email" />
	    </p>
	    <p>Betreff:<br />
        <input type="text" name="betreff" /></p>
		<p>Ihre Nachricht:<br />
		<textarea name="nachricht" cols="50" rows="10">
		</textarea></p>
		<p><input type="submit" value="Absenden" name="fertig" /></p>
		  </form>
PHP:
<?php
				$von = $_POST['von'];
				$email = $_POST['email']; 
				$betreff = $_POST['betreff']; 
				$nachricht = $_POST['nachricht']; 
				$fertig = $_POST['fertig'];  
            	
                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 ($von == "") { 
                    
  						echo"<script type=\"text/javascript\"> alert(\"Sie haben ihren Namen nicht angegeben!\");</script>"; 
 				    
                    
                    
                    } elseif ($email == "") { 
    					echo"<script type=\"text/javascript\"> alert(\"Sie haben ihre  Email nicht angegeben!\");</script>"; 
  					} elseif ($betreff == "") { 
  					    echo"<script type=\"text/javascript\"> alert(\"Sie haben keinen Betreff angegeben!\");</script>"; 
			        } elseif ($nachricht == "") { 
   					    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 = "[email protected]"; 
  						$betreffemail = "Kontaktformular"; 
  						$text = "Sie haben eine Nachricht von:".$von." 
  						Seine Email Adresse lautet:".$email." 
  						Der Betreff lautet:".$betreff." 
  						Das Sendedatum:".$datum." 
  						Die Nachrich lautet:".$nachricht." 
  						"; 
 						 mail($ich, $betreffemail, $text, 
 						 "From: Absender <Absenderemail>"); 
					     echo"Mail verschickt <br>"; 
						 echo"<script type=\"text/javascript\"> alert(\"Die Nachricht wurde erfolgreich verschickt!\");</script>";         
					} 
				} 
				?>
HTML:
</div>

MfG
Testimus
 
Hi!
PHP:
$fertig = $_POST['fertig'];
Woher soll $_POST['fertig'] kommen? Der Submit-Button sendet keinen Wert mit.
LG nif7
 
Hi!
PHP:
$fertig = $_POST['fertig'];
Woher soll $_POST['fertig'] kommen? Der Submit-Button sendet keinen Wert mit.
LG nif7

das macht nichts, ob man nun die superglobale oder die der superglobalen zugewiesene variable abfragt. allerdings bläht es den quelltext etwas auf.
überhaupt wäre ich dafür, die arrays direkt abzufragen. sie in variablen zu packen macht m.e. wenig sinn.

Nils aka XraYSoLo
 
Zuletzt bearbeitet:
Also ich hab das ganze so umgebaut, dass die $_Post Werte direkt 'eingebaut' werden und keine zusätzlichen Variablen benötigt werden.
Das ändert nur leider immer noch nichts an der Tatsache, dass das $_Post Array leer ist , es stehen einfach keine Werte drin!
Wie kann das sein?
 
Wie kann das sein?

gute frage, normalerweise dürfte das nicht sein...
versuch' mal, das script schritt für schritt mit auskommentierung anzugehen.
POST-variablen werden nur dann auf NULL gesetzt, wenn sie von einem script geleert werden oder man den browser schließt und das ist ja bei dir nicht der fall.

Nils aka XraYSoLo
 
Was ist denn eigentlich formular.php?
Du hast oben DREI Codeabschnitte gepostet. Wie hängen die zusammen? Alles zusammen ergibt die formular.php?
 
So, ich vermute einfach mal, dass alle 3 Codeabschnitte, die formular.php ergeben, ein sogenanntes Affenformular. Das Problem ist, dass Du immer die $_POST-Variablen ansprichst. Du musst vorher aber überprüfen, ob das Formular duch den submit-Button aufgerufen wurde oder nicht.
PHP:
<?php
if (isset($_POST['fertig'])) {
   // Formular wurde über submit aufgerufen
   tu_was_mit_den_Daten();
}
else {
   // Formular wurde nicht über submit aufgerufen
   die_Daten_sind_nicht_vorhanden();
}
?>
Ich hoffe, das hilft weiter.

Gruß thuemmy
 
jap,

das ist die komplette formular.php
Habe es nur getrennt, weil es sowohl html als auch php code ist.

thuemmy,

vielen Dank!!
Das war der Fehler!
Mein PHP-Code wurde direkt beim Laden der Seite ausgeführt und nicht erst als der submit-Button betätigt wurde.
Nun klappts tadellos.

THX
Testimus
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben