# Sicherheitsabfrage bei Kontaktformular



## c4er (25. März 2008)

Hallo liebe Gemeinde,

Ich habe in letzter Zeit vermehrt mit Probleme mit Spam zu tun und würde deswegen gerne eine Sicherheitsabfrage im Kontaktformular einbauen. Leider habe ich von der Programierung überhaupt keine Ahnung und wende mich deswegen an euch.

Könnte mir jemand folgenden Code so umschreiben dass dieser eine Sicherheitsabfrage enthält?

Lg Mario


```
<?php

##### FILE WITH INCLUDES AND REQUIRES
include("./include/required_files.php");
########################################

ob_start();

###### CONTENT ###################### 

$t = new Template("./templates/blank/contents/request.tpl");

$s_errors = "";
$show_form = true;

$fields = array ("vorname","nachname","email","nachricht","tel");

$errors = array ( 
                  "vorname"  => "Vorname",
                  "nachname" => "Nachname",
				  "email"    => "E-Mail",
				  "nachricht" => "Nachricht",
				  "tel"      => "Bitte geben sie eine Telefonnummer ein"
                );
                
$regex  = array(
                "vorname"  => "required",
                "nachname" => "required",
                "email"    => "",
                "nachricht" => "required",
                "tel"      => "required"
               );

if(!isset($_POST['send'])) {
  $t->emptyTpl();
} else {
  foreach($_POST as $key=>$val) {
  	  if(!in_array($key,$fields))
  	   continue;
  	  if(!checkField($regex[$key],$val)) {
  	  	 $s_errors .= $errors[$key]."<br/>\n"; 
  	  }
  }
  
  if(strlen($s_errors) <= 0) {
    $show_form = false;
    $tEmail = new Template("./emails/admin/new_message.tpl");
    $tEmail->fillTpl($_POST);
    
    if(sendAdminEmail("Kontakt-Formular", &$tEmail)) {	
       $tSuccess = new Template("./templates/blank/contents/request/email_success.tpl");
       echo $tSuccess->getFileContent();
       weiterleiten("index.php");
    } else {
       $tFailure = new Template("./templates/blank/contents/request/email_failure.tpl");
       echo $tFailure->getFileContent();
       weiterleiten("index.php",5);
    }
  } else {
  	  $s_errors = "<b>Bitte kontrollieren sie folgende Felder:</b> <br/> <br/>\n". $s_errors;
  	  $t->fillTpl($_POST);
  }
}

if($show_form) {
   $t->define("{PHP_SELF}",$_SERVER['PHP_SELF']);
   $t->define("{errors}",$s_errors);
   echo $t->getParsedFileContent();
}

###### END OF CONTENT ###############
$content = ob_get_contents();
ob_end_clean();


#################### include output-file ##############
require_once("./containers/c_blank.php");
################################
?>
```


----------



## wraimann (25. März 2008)

Das Script zum generieren des Sicherheitscodes habe ich selbst mal auf www.phpclasses.org mir besorgt (Author: Dmitry Sheiko) und ein wenig angepasst für meine Bedürfnisse.
Einbinden der Abfrage ins Formular:

```
<img src="code_pic.php">;
<br>
<input name="code" id="contact_subject" size="5" class="inputbox" value="" type="text">
```

Überprüfung in deinem Script:

```
...

  foreach($_POST as $key=>$val) {
  	  if(!in_array($key,$fields))
  	   continue;
  	  if(!checkField($regex[$key],$val)) {
  	  	 $s_errors .= $errors[$key]."<br/>\n"; 
  	  }
  }
  if($_SESSION['Md5OfGenCode'] != md5($_POST['code'])){
  	  	$s_errors .= "Sicherheitsabfrage<br/>\n"; 
  }
  ...
```

Im Anhang findes du die entsprechende code_pic.php und das Hintergrundbild.


----------



## Chaosengel_Gabriel (25. März 2008)

[Erstes Statement]
Ich schau mir das grad mal an, denn sowas in der Art hab ich selbst auch schon gesucht...

Weiteres Feedback folgt...


----------



## c4er (26. März 2008)

Danke euch für die schnelle Antwort ich werde mal probieren und euch sagen ob ich Herr der Name geworden bin 

lg Mario

Also habe gerade probiert aber bei mir passiert nichts hatte den Code phpoben bei mir eingefügt oder war das falsch? Wie gesagt ich habe leider keine Ahnung in solchen Sachen...

Die anderen Dateien hatte ich einfach in denselben Ordner geladen.


----------



## wraimann (26. März 2008)

Das PHP - Script das du eingefügt hast, übernimmt das Versenden des Mails. D.h. dort wird auch die Überprüfung stattfinden müssen.

```
if($_SESSION['Md5OfGenCode'] != md5($_POST['code'])){
            $s_errors .= "Sicherheitsabfrage<br/>\n"; 
  }
```
Das Formular selbst allerdings wird wo anders erzeugt. Dort musst du dann die Sicherheitsabfrage einfügen:

```
<img src="code_pic.php">
<br>
<input name="code" size="5" type="text">
```
oder

```
echo "<img src=\"code_pic.php\">\n";
echo "<br>\n";
echo "<input name=\"code\" size=\"5\" value="" type=\"text\">";
```
Achte darauf, dass es zwischen _<form ...>_ und _</form>_ ist.

mfg.


----------



## c4er (26. März 2008)

Ich merke schon ich bin einfach zu dämlich dazu kannst du zufällig aus den Daten erkennen wo ich den Code einfügen muss?


----------



## wraimann (26. März 2008)

Aus dieser Angabe alleine nicht. Das Formular wird vermutlich in der Datei:
_./templates/blank/contents/request.tpl_
erzeugt.


----------



## c4er (26. März 2008)

Danke dir bin insoweit fündig gewordener zeigt auch die Sicherheitsabfrage an aber gebe ich einen falschen Code ein wird die Nachricht trotzdem verschickt. Habe ich noch irgendetwas etwas vergessen?!

Lg Mario


----------



## wraimann (27. März 2008)

Vor der if - Bedingung ( if(strlen($s_errors) <= 0) { gehört noch die Abfrage:

```
if($_SESSION != md5($_POST)){
            $s_errors .= "Sicherheitsabfrage<br/>\n"; 
  }
```
 rein.
Es könnte allerdings sein das dein CMS die $_SESSION löscht. Testen kannst du dies am Besten durch:


```
echo "Code: ".$_SESSION." - ".md5($_POST."<br />";
```

vor der if - Bedingung. Mit diesem Befehl sollte nach einem Senden einer Mail etwas auf deiner Seite angezeigt werden ähnlich:
Code: 
	
	
	



```
aslkdfjöalskdfjw52345asf34 - aslkdfjöalskdfjw52345asf34
```


----------



## c4er (27. März 2008)

Danke euch jetzt funktioniert alles. Ich bin überglücklich darüber. 

Lg Mario


----------



## Smiths (1. September 2008)

Hallo
Ich habe das mit der Sicherheitsabfrage auch probiert und habe keinen Dunst von php.
Ich habe aber bereits das Bild im Formular. Generiert wird es also schonmal 
Es muss nur noch eine Abfrage rein. Ich schaffe es aber einfach nicht, auch nicht mit dem was hier steht.
Kann mir vielleicht einer helfen?
Kann mir einer anhand des Codes sagen wo die Abfrage rein muss?

```
<?php  
if($action=="email")  
{  
 if(isset($go))  
 {  
  $mailtext = "  Sehr geehrte Damen und Herren,
  hier sind meine Daten zur Buchungsanfrage:
  
  Anreise: {$D1}.{$D2} {$D3}
  Abreise: {$D4}.{$D5} {$D6}
  Zimmeranzahl:
  {$D7} Einzelzimmer
  {$D9} Doppelzimmer
  Anzahl der Personen:
  {$D10} Erwachsene
  {$D11} Jugendliche
  {$D12} Kinder
  
  Persöhnliche Daten
  Name: {$T1}
  Vorname: {$T10}
  Firma: {$T2}
  Straße: {$T3}
  PLZ, Ort: {$T4} {$T5}
  Land: {$T6}
  Telefon: {$T11}/{$T13}
  Fax: {$T12}/{$T14}
  E-Mail: {$email}
  Bemerkungen: {$S1}  
  
  Mit freundlichen Grüßen
  {$T10} {$T1}
  
{$mtext}";  
  mail("mail@mail.de", "Buchungsanfrage", $mailtext, "From: {$email}");  
  echo "<br><br><div align='center'>Ihre Buchungsanfrage wurde uns übermittelt!<br>Sie werden von uns schnellstmöglichst eine Antwort erhalten.</div>";  
 }  
 if(!isset($go))  
 {  
 ?> 
<div align="center">
  <p><img src="bilder/buchungsanfrage.jpg" width="400" height="50"> </p>
  <p><strong><font size="4">Hier k&ouml;nnen Sie mit Hilfe des Formulars, online 
    eine Buchungsanfrage abschicken!</font></strong> </p>
</div>
<form name="form1" method="post" action="formular.php?action=email&go=">
    
  <table border="0" width="102%" height="31">
    <tr> 
      <td width="10%" height="23"><b>Anreise:</b></td>
      <td height="23" colspan="3"> <select size="1" name="D1">
          <option value="01">01</option>
          <option value="02">02</option>
          <option value="03">03</option>
          <option value="04">04</option>
          <option value="05">05</option>
          <option value="06">06</option>
          <option value="07">07</option>
          <option value="08">08</option>
          <option value="09">09</option>
          <option value="10">10</option>
          <option value="11">11</option>
          <option value="12">12</option>
          <option value="13">13</option>
          <option value="14">14</option>
          <option value="15">15</option>
          <option value="16">16</option>
          <option value="17">17</option>
          <option value="18">18</option>
          <option value="19">19</option>
          <option value="20">20</option>
          <option value="21">21</option>
          <option value="22">22</option>
          <option value="23">23</option>
          <option value="24">24</option>
          <option value="25">25</option>
          <option value="26">26</option>
          <option value="27">27</option>
          <option value="28">28</option>
          <option value="29">29</option>
          <option value="30">30</option>
          <option value="31">31</option>
        </select> <select size="1" name="D2">
          <option value="Januar">Januar</option>
          <option value="Februar">Februar</option>
          <option value="März">März</option>
          <option value="April">April</option>
          <option value="Mai">Mai</option>
          <option value="Juni">Juni</option>
          <option value="Juli">Juli</option>
          <option value="August">August</option>
          <option value="September">September</option>
          <option value="Oktober">Oktober</option>
          <option value="November">November</option>
          <option value="Dezember">Dezember</option>
        </select> <select size="1" name="D3">
          <option value="2008" selected="selected">2008</option>
          <option value="2009">2009</option>
        </select></td>
    </tr>
    <tr> 
      <td width="10%" height="23"><b>Abreise:</b></td>
      <td height="23" colspan="3"> <select size="1" name="D4">
          <option value="01">01</option>
          <option value="02">02</option>
          <option value="03">03</option>
          <option value="04">04</option>
          <option value="05">05</option>
          <option value="06">06</option>
          <option value="07">07</option>
          <option value="08">08</option>
          <option value="09">09</option>
          <option value="10">10</option>
          <option value="11">11</option>
          <option value="12">12</option>
          <option value="13">13</option>
          <option value="14">14</option>
          <option value="15">15</option>
          <option value="16">16</option>
          <option value="17">17</option>
          <option value="18">18</option>
          <option value="19">19</option>
          <option value="20">20</option>
          <option value="21">21</option>
          <option value="22">22</option>
          <option value="23">23</option>
          <option value="24">24</option>
          <option value="25">25</option>
          <option value="26">26</option>
          <option value="27">27</option>
          <option value="28">28</option>
          <option value="29">29</option>
          <option value="30">30</option>
          <option value="31">31</option>
        </select> <select size="1" name="D5">
          <option value="Januar">Januar</option>
          <option value="Februar">Februar</option>
          <option value="März">März</option>
          <option value="April">April</option>
          <option value="Mai">Mai</option>
          <option value="Juni">Juni</option>
          <option value="Juli">Juli</option>
          <option value="August">August</option>
          <option value="September">September</option>
          <option value="Oktober">Oktober</option>
          <option value="November">November</option>
          <option value="Dezember">Dezember</option>
        </select> <select size="1" name="D6">
          <option value="2008" selected="selected">2008</option>
          <option value="2009">2009</option>
        </select></td>
    </tr>
    <tr> 
      <td width="10%" height="1"><b>Zimmeranzahl:</b></td>
      <td width="4%" height="1"><select size="1" name="D7">
          <option value="00">00</option>
          <option value="01">01</option>
          <option value="02">02</option>
          <option value="03">03</option>
          <option value="04">04</option>
          <option value="05">05</option>
          <option value="06">06</option>
          <option value="07">07</option>
          <option value="08">08</option>
          <option value="09">09</option>
          <option value="10">10</option>
          <option value="11">11</option>
          <option value="12">12</option>
		  <option value="13">13</option>
        </select></td>
      <td height="1" colspan="2"> <p align="left">Einzelzimmer</td>
    </tr>
    <tr> 
      <td width="10%" height="1"></td>
      <td width="4%" height="1"><select size="1" name="D9">
          <option value="00">00</option>
          <option value="01">01</option>
          <option value="02">02</option>
          <option value="03">03</option>
          <option value="04">04</option>
          <option value="05">05</option>
          <option value="06">06</option>
          <option value="07">07</option>
          <option value="08">08</option>
          <option value="09">09</option>
          <option value="10">10</option>
          <option value="11">11</option>
          <option value="12">12</option>
		  <option value="13">13</option>
        </select></td>
      <td height="1" colspan="2"> Doppelzimmer</td>
    </tr>
    <tr> 
      <td width="10%" height="3" rowspan="3" valign="top"><b>Anzahl der<br>
        Personen:</b></td>
      <td width="4%" height="1"><select size="1" name="D10">
          <option value="00">00</option>
          <option value="01">01</option>
          <option value="02">02</option>
          <option value="03">03</option>
          <option value="04">04</option>
          <option value="05">05</option>
          <option value="06">06</option>
          <option value="07">07</option>
          <option value="08">08</option>
          <option value="09">09</option>
          <option value="10">10</option>
          <option value="11">11</option>
          <option value="12">12</option>
          <option value="13">13</option>
          <option value="14">14</option>
          <option value="15">15</option>
          <option value="16">16</option>
          <option value="17">17</option>
        </select></td>
      <td height="1" colspan="2"> Erwachsene (ab 19 Jahren)</td>
    </tr>
    <tr> 
      <td width="4%" height="1"><select size="1" name="D11">
          <option value="00">00</option>
          <option value="01">01</option>
          <option value="02">02</option>
          <option value="03">03</option>
          <option value="04">04</option>
          <option value="05">05</option>
          <option value="06">06</option>
          <option value="07">07</option>
          <option value="08">08</option>
          <option value="09">09</option>
          <option value="10">10</option>
          <option value="11">11</option>
          <option value="12">12</option>
          <option value="13">13</option>
          <option value="14">14</option>
          <option value="15">15</option>
          <option value="16">16</option>
          <option value="17">17</option>
        </select></td>
      <td height="1" colspan="2"> Jugendliche (12 - 18 Jahren)</td>
    </tr>
    <tr> 
      <td width="4%" height="1"><select size="1" name="D12">
          <option value="00">00</option>
          <option value="01">01</option>
          <option value="02">02</option>
          <option value="03">03</option>
          <option value="04">04</option>
          <option value="05">05</option>
          <option value="06">06</option>
          <option value="07">07</option>
          <option value="08">08</option>
          <option value="09">09</option>
          <option value="10">10</option>
          <option value="11">11</option>
          <option value="12">12</option>
          <option value="13">13</option>
          <option value="14">14</option>
          <option value="15">15</option>
          <option value="16">16</option>
          <option value="17">17</option>
        </select></td>
      <td width="24%" height="1"> Kinder (bis 11 Jahren) </td>
      <td width="62%" height="1"><u>Wegen den Ermäßigungen sollten die genauen 
        Alter der Kinder unter Bemerkungen mitgeteilt werden!</u></td>
    </tr>
  </table>
  <table border="0" width="100%">
    <tr> 
      <td width="15%"></td>
      <td width="27%"></td>
      <td width="21%"></td>
      <td width="37%"></td>
    </tr>
    <tr> 
      <td width="15%" height="19"><b>Persönliche Daten</b></td>
      <td width="27%" height="19"></td>
      <td width="21%" height="19"></td>
      <td width="37%" height="19"></td>
    </tr>
    <tr> 
      <td width="15%" height="19"><b>Name:</b></td>
      <td width="27%" height="19"><input type="text" name="T1" size="26"></td>
      <td width="21%" height="19"></td>
      <td width="37%" height="19"></td>
    </tr>
    <tr> 
      <td width="15%" height="19"><b>Vorname:</b></td>
      <td width="27%" height="19"><input type="text" name="T10" size="26"></td>
      <td width="21%" height="19"></td>
      <td width="37%" height="19"></td>
    </tr>
    <tr> 
      <td width="15%" height="19"><b>Firma:</b></td>
      <td width="27%" height="19"><input type="text" name="T2" size="26"></td>
      <td width="21%" height="19"></td>
      <td width="37%" height="19"></td>
    </tr>
    <tr> 
      <td width="15%" height="19"><b>Straße:</b></td>
      <td width="27%" height="19"><input type="text" name="T3" size="26"></td>
      <td width="21%" height="19"></td>
      <td width="37%" height="19"></td>
    </tr>
    <tr> 
      <td width="15%" height="19"><b>PLZ, Ort:</b></td>
      <td width="27%" height="19"><input type="text" name="T4" size="6"> <input type="text" name="T5" size="18"></td>
      <td width="21%" height="19"></td>
      <td width="37%" height="19"></td>
    </tr>
    <tr> 
      <td width="15%"><b>Land:</b></td>
      <td width="27%"><input type="text" name="T6" size="26"></td>
      <td width="21%"></td>
      <td width="37%"></td>
    </tr>
    <tr> 
      <td width="15%"><b>Telefon:</b></td>
      <td width="27%"><input type="text" name="T11" size="6">
        / 
        <input type="text" name="T13" size="16"></td>
      <td width="21%"></td>
      <td width="37%"></td>
    </tr>
    <tr> 
      <td width="15%"><b>Fax:</b></td>
      <td width="27%"><input type="text" name="T12" size="6">
        / 
        <input type="text" name="T14" size="16"></td>
      <td width="21%"></td>
      <td width="37%"></td>
    </tr>
    <tr> 
      <td width="15%"><b>E-Mail:</b></td>
      <td width="27%"><input type="text" name="email" size="26"></td>
      <td width="21%"></td>
      <td width="37%"></td>
    </tr>
    <tr> 
      <td width="15%"></td>
      <td width="27%"></td>
      <td width="21%"></td>
      <td width="37%"></td>
    </tr>
    <tr> 
      <td width="15%"><b>Bemerkungen:</b></td>
      <td width="27%"><textarea rows="3" name="S1" cols="22"></textarea></td>
      <td colspan="2" valign="top">Alles andere, wie z.B. die Alter der Kinder 
        für die Ermäßigungen oder sonstige Wünsche.</td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td colspan="3"><p><b>Sicherheitsabfrage (Bitte geben Sie die Zeichenfolge aus dem Block in das darunterliegende Feld ein.)</b> <br />
        <img src="code_pic.php">&nbsp;</p>      </td>
    </tr>
    <tr>
      <td height="24">&nbsp;</td>
      <td colspan="3"><input name="code" id="contact_subject" size="5" class="inputbox" value="" type="text" /></td>
    </tr>
    <tr> 
      <td height="33">&nbsp;</td>
      <td colspan="3"><input type="submit" name="Submit" value="Abschicken"> <input type="reset" value="Zurücksetzen" name="B2"></td>
    </tr>
      <td height="21">&nbsp;</td>
    <td>&nbsp;</td>
    </tr>
  </table>  
  </form>  
  <?php  
  }  
 }  
 ?>
```

Ich wäre euch sehr sehr dankbar.
Gruß
Smiths


----------



## kuddeldaddeldu (1. September 2008)

Hi,

na, bevor Du die Mail abschickst:


```
<?php  
if($action=="email")  {  
   if(isset($go))  {  
      if($_SESSION['Md5OfGenCode'] != md5($_POST['code'])) {
         echo "Sicherheitscode nicht korrekt!";
         // hier könntest Du das ausgefüllte Formular mit neuem
         // Sicherheitscode ausgeben, damit man nicht alles nochmal
         // tippen muss.
      } else {
         $mailtext = "  Sehr geehrte Damen und Herren,...";
         ...
      }
   }
 } 
?>
```

LG


----------



## Smiths (2. September 2008)

Da hatte ich es auch schon eingebaut, aber dann sagt er immer das der Code falsch sei, auch wenn er richtig ist.
Hab es so eingebaut

```
<?php  
if($action=="email")  
{   
 if(isset($go))  
 { 
 	if($_SESSION['Md5OfGenCode'] != md5($_POST['code'])) 
 	{ 
     	echo "Sicherheitscode nicht korrekt!"; 
	}
	else
	{
	  $mailtext = "  Sehr geehrte Damen und Herren,
	  hier sind meine Daten zur Buchungsanfrage:
	  
	  Anreise: {$D1}.{$D2} {$D3}
	  Abreise: {$D4}.{$D5} {$D6}
	  Zimmeranzahl:
	  {$D7} Einzelzimmer
	  {$D9} Doppelzimmer
	  Anzahl der Personen:
	  {$D10} Erwachsene
	  {$D11} Jugendliche
	  {$D12} Kinder
	  
	  Persöhnliche Daten
	  Name: {$T1}
	  Vorname: {$T10}
	  Firma: {$T2}
	  Straße: {$T3}
	  PLZ, Ort: {$T4} {$T5}
	  Land: {$T6}
	  Telefon: {$T11}/{$T13}
	  Fax: {$T12}/{$T14}
	  E-Mail: {$email}
	  Bemerkungen: {$S1}  
	  
	  Mit freundlichen Grüßen
	  {$T10} {$T1}
	  
	{$mtext}";  
	  mail("mail@mail.de", "Buchungsanfrage", $mailtext, "From: {$email}");  
	  echo "<br><br><div align='center'>Ihre Buchungsanfrage wurde uns übermittelt!<br>Sie werden von uns schnellstmöglichst eine Antwort erhalten.</div>"; 
	} 
 }
```

Wie ich das gefüllte Formular nochmal ausgebe hab ich keinen Plan, wenn ich die Formgeschichte da hochkopiere, dann nimmt er das nicht an.


----------



## kuddeldaddeldu (2. September 2008)

Hi,

Du musst natürlich noch die Session starten, sonst gibt's auch keine Sessiondaten.


```
session_start();
```

an den Anfang Deiner Datei setzen.

Was heißt "er nimmt das nicht an"?

LG


----------



## Smiths (2. September 2008)

Ah super, mit dem Start einer Session funktioniert es  danke
Ich habe mittlerweile das Form auch nach dem Fehlerecho reinkopiert und es wir angezeigt.
Wie kriege ich jetzt die vorherigen Daten in das Feld? Wenn ich das so mache, dann bleibt es leer.

```
<tr> 
			  <td width="15%" height="19"><b>Straße:</b></td>
			  <td width="27%" height="19"><input type="text" name="T3" size="26" value=<?php "{$T3}" ?>></td>
			  <td width="21%" height="19"></td>
			  <td width="37%" height="19"></td>
			</tr>
```


----------



## kuddeldaddeldu (2. September 2008)

Hi,

das Stichwort heißt Affenformular.

LG


----------



## c4er (24. März 2009)

Hallo,

Ich muss euch mal wieder Nerven irgendwie will das Skript jetzt nicht mehr sauber arbeiten und zwar habe ich das Problem das wenn der Code eingegeben wird immer angegeben wird dass der Code falsch eingegeben ist. Könntet Ihr nimmer wieder weiterhelfen? Hier der Code:

request.php


```
<?php

  foreach($_POST as $key=>$val) { 
        if(!in_array($key,$fields)) 
         continue; 
        if(!checkField($regex[$key],$val)) { 
             $s_errors .= $errors[$key]."<br/>\n";  
        } 
  } 
  if($_SESSION['Md5OfGenCode'] != md5($_POST['code'])){ 
            $s_errors .= "Sicherheitsabfrage<br/>\n";  
  } 

##### FILE WITH INCLUDES AND REQUIRES
include("./include/required_files.php");
########################################

ob_start();

###### CONTENT ###################### 

$t = new Template("./templates/blank/contents/request.tpl");

$s_errors = "";
$show_form = true;

$fields = array ("vorname","nachname","email","nachricht","tel");

$errors = array ( 
                  "vorname"  => "Vorname",
                  "nachname" => "Nachname",
				  "email"    => "E-Mail",
				  "nachricht" => "Nachricht",
				  "tel"      => "Bitte geben sie eine Telefonnummer ein"
                );
                
$regex  = array(
                "vorname"  => "required",
                "nachname" => "required",
                "email"    => "",
                "nachricht" => "required",
                "tel"      => "required"
               );

if(!isset($_POST['send'])) {
  $t->emptyTpl();
} else {
  foreach($_POST as $key=>$val) {
  	  if(!in_array($key,$fields))
  	   continue;
  	  if(!checkField($regex[$key],$val)) {
  	  	 $s_errors .= $errors[$key]."<br/>\n"; 
  	  }
  }
  if($_SESSION['Md5OfGenCode'] != md5($_POST['code'])){
            $s_errors .= "Sicherheitsabfrage<br/>\n"; 
  }   
  if(strlen($s_errors) <= 0) {
    $show_form = false;
    $tEmail = new Template("./emails/admin/new_message.tpl");
    $tEmail->fillTpl($_POST);
    
    if(sendAdminEmail("Kontakt-Formular", &$tEmail)) {	
       $tSuccess = new Template("./templates/blank/contents/request/email_success.tpl");
       echo $tSuccess->getFileContent();
       weiterleiten("index.php");
    } else {
       $tFailure = new Template("./templates/blank/contents/request/email_failure.tpl");
       echo $tFailure->getFileContent();
       weiterleiten("index.php",5);
    }
  } else {
  	  $s_errors = "<b>Bitte kontrollieren sie folgende Felder:</b> <br/> <br/>\n". $s_errors;
  	  $t->fillTpl($_POST);
  }
}

if($show_form) {
   $t->define("{PHP_SELF}",$_SERVER['PHP_SELF']);
   $t->define("{errors}",$s_errors);
   echo $t->getParsedFileContent();
}

###### END OF CONTENT ###############
$content = ob_get_contents();
ob_end_clean();


#################### include output-file ##############
require_once("./containers/c_blank.php");
################################
?>
```

request.tpl


```
<span class="page_title">
  Kontakt <hr size="1" color="#CCCCCC"/>
</span>



<form action="" method="post" name="form1" id="form1">
  {errors} <br />
  <tpl:@IF value="{errors}" nequals="">
     <br />
  </tpl:@IF>
  <table border="0" cellspacing="0" cellpadding="2">
    <tr valign="top">
      <td>Firma:</td>
      <td  colspan="2"><input name="firma" type="text" id="firma" value="{firma}" /></td>
    </tr>
    <tr valign="top">
      <td>Vorname:*</td>
      <td  colspan="2"><input name="vorname" type="text" id="vorname" value="{vorname}" /></td>
    </tr>
    <tr valign="top">
      <td>Nachname:*</td>
      <td  colspan="2"><input name="nachname" type="text" id="nachname" value="{nachname}" /></td>
    </tr>
    <tr valign="top">
      <td>&nbsp;</td>
      <td  colspan="2">&nbsp;</td>
    </tr>
    <tr valign="top">
      <td colspan="3"><strong>Kontakt</strong> <br /> <br /></td>
    </tr>
    <tr valign="top">
      <td>Telefon:*</td>
      <td  colspan="2"><input name="tel" type="text" id="tel" value="{tel}" />
        <br />
	      <span class="field_description">Normalerweise erreichbar</span>
          <br />
          <br />
</td>
    </tr>
    <tr valign="top">
      <td>Telefon (2): </td>
      <td  colspan="2"><input name="tel2" type="text" id="tel2" value="{tel2}" /></td>
    </tr>
    <tr valign="top">
      <td>&nbsp;</td>
      <td  colspan="2"><span class="field_description">Alternative Nummer</span><br />
        <br />
</td>
    </tr>
    <tr valign="top">
      <td>E-Mail:</td>
      <td  colspan="2"><input name="email" type="text" id="email" value="{email}" /></td>
    </tr>
    <tr valign="top">
      <td>&nbsp;</td>
      <td  colspan="2">&nbsp;</td>
    </tr>
    <tr valign="middle">
      <td>Kommentar:</td>
      <td  colspan="2"><textarea name="nachricht" cols="50" rows="15" id="nachricht">{nachricht}</textarea></td>
    </tr>
    <tr valign="middle">
      <td>&nbsp;</td>
      <td  colspan="2"><input name="send" type="submit" id="send" value="Weiter &gt;&gt;" /></td>
    </tr>
	<tr>
	<td>
	Sicherheitsabfrage:*<input name="code" size="5" type="text">
	</td>
	<td>	
        <img src="code_pic.php">
	</td>
	</tr>
   
  </table>
 
<br>

  </form>
  
<small>* Pflichtfeld</small>
```

Ich danke euch schon einmal im Voraus


----------



## DeluXe (24. März 2009)

Hast du dir die beiden Variablen mal ausgeben lassen, um zu überprüfen ob sie auch den Wert enthalten, den du erwartest?

```
var_dump( $_SESSION['Md5OfGenCode'], md5($_POST['code']), $_POST['code'] );
```


----------



## c4er (24. März 2009)

kannst du mir sagen wie ich das genau mache ich habe leider von der Programmierung überhaupt keine Ahnung deswegen hatte ich mir damals schon helfen lassen...

Dank auf alle Fälle erstmal für die schnelle Antwort


----------



## DeluXe (24. März 2009)

Du kannst das var_dump() von mir in der request.php über das foreach in der dritten Zeile packen.


----------



## c4er (24. März 2009)

oben steht jetzt:


```
NULL string(32) "c3aa2ba1cd39089587b7a9b0a2ea1280" string(5) "43ec5"
```

Kannst du damit etwas anfangen?


----------



## kuddeldaddeldu (24. März 2009)

Hi,



c4er hat gesagt.:


> ```
> NULL string(32) "c3aa2ba1cd39089587b7a9b0a2ea1280" string(5) "43ec5"
> ```



schau Dir doch im Manual die Funktion [phpf]var_dump[/phpf] an. Dann weißt Du, dass $_SESSION['Md5OfGenCode'] nicht gesetzt ist.

LG


----------



## c4er (24. März 2009)

kannst du mir sagen was das setzt genau heißt und was ich machen müsste weil eigentlich verstehe ich nur Bahnhof


----------



## kuddeldaddeldu (24. März 2009)

Kannst Du Deine Beiträge bitte mal in ordentlicher und verständlicher Form verfassen (ganze Sätze, Groß-/Kleinschreibung, Interpunktion)? Danke.

Wo wird die Session überhaupt gestartet? An welcher Stelle wird diese Session-Variable gesetzt? Das ist im geposteten Code nicht zu sehen.
Wenn Du jetzt immer noch nur Bahnhof verstehst, ist es an der Zeit, Dir die Grundlagen von PHP anzueignen, dafür ist das Forum nicht da.
Alternativ könntest Du eine Anfrage im Jobforum stellen.

LG


----------



## c4er (24. März 2009)

erstmals das für mich gar nicht so einfach aufgrund meiner Behinderung und der Software die ich benutze mit komma oder Satzzeichen zu agieren und ich gebe zu auch manchmal zu überlesen was die Software ausgibt...

Ansonsten habe ich den Denkanstoß verstanden und werde nicht mehr weiter nerven trotzdem danke ich dem Poster davor dass er versucht hatte mir zu helfen und wünsche allen noch ein schöner Abend...


----------



## schmidtt1 (30. März 2011)

Hallo,
ich habe bereits Abfragen in meinem Kontaktformular, aber ich weiß nicht genau, wie ich beide miteinander kombinieren kann.


```
<h3>Kontakt</h3>
<p>Sie haben eine Frage, ein Anliegen, oder einen Tipp f&uuml;r mich. Z&ouml;gern Sie nicht l&auml;nger. <br>Schreiben Sie mich an.</p>
<?php
// wenn das Formular übermittelt wurde
if(isset($_POST['abschicken'])) and {
while(list($feld,$wert)=each($HTTP_POST_VARS)){
// übermittelte Inhalte "entschärfen"
$wert=preg_replace("/(content-type:|bcc:|cc:|to:|from:)/im", "",$wert);
$$feld=$wert;
// die übermittelten Variablen werden zum "Text der Email" zusammengefasst
if($feld!="abschicken"){
$mailnachricht.=ucfirst($feld).": $wert\n";
}
}
$mailnachricht.="\nDatum/Zeit: ". date("d.m.Y H:i:s");
// Überprüfen ob alle Pflichtfelder gefüllt sind
empty($name) ? $err[] = "<p>- Bitte den Namen angeben.</p>" : false;
empty($email) ? $err[] = "<p>- Bitte die Email-Adresse angeben.</p>" : false;
empty($text) ? $err[] = "<p>- Welchen Wunsch haben Sie? Bitte den Text eingeben.</p>" : false;
// wenn nicht, werden die Fehlermeldungen ausgegeben und das "halbgefüllte" Formular angezeigt
if(!empty($err)) {
echo "<p>Bitte korrigieren Sie folgende/n Fehler:</p>";
foreach($err as $fehler){
echo $fehler;
} ?>
```
und nachher nochmal

```
<?php    // sind keine Fehler vorhanden, wird die Email versendet
} else {
$mailbetreff="Kontaktformular ".$_SERVER['HTTP_HOST'];
// HIER DIE EMPFÄNGER EMAIL-ADRESSE ANPASSEN******
if(mail("ich@gmx.de", $mailbetreff, $mailnachricht, "From: $email")){
echo "<p>Vielen Dank f&uuml;r Ihre eMail!</p>";
} else {
echo "<p>Ein Fehler ist aufgetreten!</p>";
}
}
 // das Formular welches als erstes dem Besucher angezeigt wird
} else { ?>
```
Bitte helft mir


----------

