Sicherheitsabfrage bei Kontaktformular

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:
<?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
 
Hi,

na, bevor Du die Mail abschickst:

PHP:
<?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
 
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:
<?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.
 
Hi,

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

PHP:
session_start();

an den Anfang Deiner Datei setzen.

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

LG
 
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.
PHP:
			<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>
 
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

Code:
<?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

Code:
<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 :)
 
Hast du dir die beiden Variablen mal ausgeben lassen, um zu überprüfen ob sie auch den Wert enthalten, den du erwartest?
PHP:
var_dump( $_SESSION['Md5OfGenCode'], md5($_POST['code']), $_POST['code'] );
 
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...:confused:

Dank auf alle Fälle erstmal für die schnelle Antwort:)
 
Zurück