Problem mit Kontaktformular

Fabian Frank

Erfahrenes Mitglied
Guten Tag beisammen,

hab mal wieder ein Problem mit einem Kontaktformular. Und zwar verwende ich folgenden Code:

PHP:
<html>
<head>
<title>Formular verarbeiten</title>
</head>

<body>
<?php 
    if(isset($_POST['formcheck'])) 
  { 
  $check_ok = 1; 
   
	if(empty($_POST['name'])){ 
 	 $check_ok = 0; 
  	$error[name] = "<font color='red' size='1'>Bitte geben Sie einen Namen ein!</font>"; 

   
  	if(empty($_POST['email'])){ 
  	$check_ok = 0; 
  	$error[email] = "<font color='red' size='1'>Bitte geben Sie eine Emailadresse ein!</font>";
    
  } 
   
  if($check_ok){ 
   
	$to="email@email.de";      
	$subject="Kontaktformular"; 
	$message="Nachricht"; 
	$senden=mail($to,$subject,$message,"From:".$email1); 

   
  } 
   
  else 
  { 
  ?> 
   
  	<form name="kontakt" method="post" action="<?php echo $_SERVER['PHP_SELF']?>"> <br> 
  	Name:<br> 
  	<input name="name" type="text" size="25" value="" > <br> 
	<?php echo $error['name'];?>
	<br> <br>
    Email:<br> 
  	<input name="email" type="text" size="25" value=""> <br> 
	<?php echo $error['email'];?>
  	<br> <br>
	<input type="hidden" name="formcheck" value="1"> 
  	<input type="submit" name="Formular" value="Absenden"> 
  	</form>
	<?
  	} 
  	?>
</body>
</html>

Wenn ich das ganze dann uploade und ausführen will, erscheint folgende meldung:

Code:
Parse error: parse error, unexpected $ in /var/www/web31/html/index.php on line 53

Könnt ihr mir da bitte weiterhelfen?

Thanks!

Fabi
 
Fabian Frank hat gesagt.:
Code:
Parse error: parse error, unexpected $ in /var/www/web31/html/index.php on line 53
Fabi

Das weisst darauf hin, dass am Ende ein
Code:
}
fehlt...
Vor dem letzten ?> solltest du noch eine Mengenklammer "}" setzen, und wenn ich mich nicht verzählt habe, fehlen sogar zwei...
Du solltest vielleicht, wenn du mit Coden fertig bist, mal die geöffneten und die geschlossenen KLammern zählen, hat mir auch schon einiges Suchen nach Fehlern erspart ;)
 
oh ja, thx erstmal...

Nur wenn ich das jetzt nach diesem Code hier ausführe kommt wenn man die felder leer lässt nichts...warum das?

PHP:
<html>
<head>
<title>Formular verarbeiten</title>
</head>

<body>
<?php 
    if(isset($_POST['formcheck'])) 
{ 
  $check_ok = 1; 
   
	if(empty($_POST['name'])){ 
 	$check_ok = 0; 
  	$error[name] = "<font color='red' size='1'>Bitte geben Sie einen Namen ein!</font>"; 
	}
   
  	if(empty($_POST['email'])){ 
  	$check_ok = 0; 
  	$error[email] = "<font color='red' size='1'>Bitte geben Sie eine Emailadresse ein!</font>";
    } 
   
  if($check_ok){ 
   
	$to="email@email.de";      
	$subject="email"; 
	$message="Nachricht"; 
	$senden=mail($to,$subject,$message,"From:".$email1); 
	echo "THX!";
	} 
}
   
else 
{ 
?> 
   
  	<form name="kontakt" method="post" action="<?php echo $_SERVER['PHP_SELF']?>"> <br> 
  	Name:<br> 
  	<input name="name" type="text" size="25" value="" > <br> 
	<? echo $error; ?>
	<br> <br>
    Email:<br> 
  	<input name="email" type="text" size="25" value=""> <br> 
	
  	<br> <br>
	<input type="hidden" name="formcheck" value="1"> 
  	<input type="submit" name="Formular" value="Absenden"> 
  	</form>
<?
}
?>
</body>
</html>
 
Deine Fehlermeldungen werden offensichtlich nicht ausgegeben.
Ausserdem solltest Du die Indizes in Deinem Array $error auch als Strings kennzeichnen, so kannst Du Konflikte mit evt. existenten Konstanten aus dem Weg gehen.
Aus $error[name] wird somit $error['name'].
 
also... ich hab das mal bei mir aufgebaut...
mir fällt erstmal auf, ich weiss nicht, ob das nicht geht, aber:
PHP:
  if($check_ok){

    $to="email@email.de";
    $subject="Kontaktformular";
    $message="Nachricht";
    $senden=mail($to,$subject,$message,"From:".$email1);


  }

Entweder führt er diesen Teil aus und fertig, Script beendet

oder er macht beim if ein Problem...
Denn obn müsste stehen:
if($check_ok)....
wenn(1) dann
wenn was 1

ich würde oben:
PHP:
  if($check_ok=="1"){
...
vorschlagen
 
Zuletzt bearbeitet:
gut, das mit den einfach anführungsstrichen ist einleuchtend, aber es erscheint bei leer lassen der felder nicht mal das form..
 
uwee hat gesagt.:
also... ich hab das mal bei mir aufgebaut...
mir fällt erstmal auf, ich weiss nicht, ob das nicht geht, aber:
PHP:
  if($check_ok){

    $to="email@email.de";
    $subject="Kontaktformular";
    $message="Nachricht";
    $senden=mail($to,$subject,$message,"From:".$email1);


  }

Entweder führt er diesen Teil aus und fertig, Script beendet

Ja, wenn ich die felder ausfüll gibt er THX aus (siehe code oben), aber wenn ichs ie leer lass, passiert gar nichts...
 
uwee hat gesagt.:
mal was anderes: was steht in
PHP:
if(isset($_POST['formcheck']))
eigentlich drin?

wie meinst das? Da steht halt, wenn er unten auf abschicken klickt, schickt er noch ein feld mit, das formcheck heißt, wenn dieses feld dann mitgeschickt wurde, führt er doch den folgenden teil aus, oder?

Das dürfte aber nicht das Problem sein, am besten ihr testet es mal:

hier
 
ah, das edit, in dem formcheck drinsteht is versteckt.... dann kann ich lange testen ;)

Also, ich hab das ganze mal bei mir raufgeladen und erziele genau das Gegenteil:
WEnn was drinsteht: leere Seite, wenn nichts drinsteht, Hinweis, was ausgefüllt werden muss...

HIER

Wobei bei nichts, wahrscheinlich die mail verschickt wird, ich würde dann per ECHO nen hinweis geben, dass die mail auch verschickt wurde!
 
Zurück