Stoppt-den-Spam.info Foren-Übersicht
RegistrierenSuchenFAQMitgliederlisteBenutzergruppenLogin
PHP-Kontaktformular mit Grafik-Check

 
Neues Thema eröffnen   Neue Antwort erstellen    Stoppt-den-Spam.info Foren-Übersicht -> Zahlen Captcha
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
theprodigy



Anmeldedatum: 07.04.2008
Beiträge: 1

BeitragVerfasst am: 07.04.2008, 15:43    Titel: PHP-Kontaktformular mit Grafik-Check Antworten mit Zitat

Hallo,

ich brauchte einen Schutz bei meinem Kontaktformular
und wollte daher das Zahlen-Captcha einrichten, aber
irgendwie habe ich wohl einen Fehler eingebaut, obwohl
ich streng nach Tutorial/Anleitung ging. Die Datei, bzw.
das Kontaktformular erscheint nun gar nicht mehr, bzw.
wird nicht geladen.

Hier ist meine Datei kontakt.php vor der Veränderung:
Code:
<?
 require("$DOCUMENT_ROOT/menulinks.inc.php");
 $status = $menu["kontakt"]["id"];
 require("$DOCUMENT_ROOT/header.inc.php");
?>
 
<div id="main">
<?php
function generate_formular() {
?>
<div id="contentleft">
 <p class="centered">
  Bei ernsthaftem Interesse an einer Zusammenarbeit freue ich mich über eine Anfrage mit vollständigen Angaben.
 </p>
<form action="kontakt.php" method="post">
 <p>
  <label for="anrede">Anrede</label>
    <select name=anrede size="1">
      <option selected>Herr
      <option>Frau
      <option>Firma/Agentur
     </select>
  </p>

 <p>
  <label for="name">Name</label>
    <input type="text" name="name" size="40" maxlength="120" />
  </p>
 <p>
  <label for="telefon">Telefon</label>
    <input type="text" name="telefon" size="40" maxlength="80" />
  </p>
 
  <p>
   <label for="email">E-Mail-Adresse</label>
    <input type="text" name="email" size="40" maxlength="90" />
   </p>

  <!!   ------------------------------------------------------Angaben Referenzen des Fotografen      -----------------------------------------------------------------!!>
  <p>
   <label for="website">Internetpräsenz</label>
    <input type="text" name="website" size="40" maxlength="90" />
   </p>
 <p>
  <label for="betreff2">Betreff</label>
  <input type="text" name="betreff2" size="40" maxlength="90" />
 </p>
 <p> <label for="nachricht">Nachricht</label>
  <textarea name="nachricht" cols="40" rows="8"></textarea>
 </p>
  <textarea class="gbcommentnv" name="comment1" cols="40" rows="5"></textarea>
  <textarea class="gbcommentnv" name="comment2" cols="40" rows="5"></textarea>
  <textarea class="gbcommentnv" name="comment3" cols="40" rows="5"></textarea>
 <p>
  <input type="submit" name="mail" value="E-Mail verschicken" />
 </p>
</form>
<p class="centered">
 <br /><br />
 Bitte keine Anfragen bezüglich Escort-Service oder ähnlicher Dienstleistungen.
</p>
</div> <!-- contentleft -->
<div id="contentright">
  <img id="right" src="images/kontakt.jpg" alt="Bild des Autors" />
</div>
<?
}
function generate_answer() {
?>
 <p class="headline">
  Ihre Mail wurde zugestellt.<br />
  Herzlichen Dank für Ihr Interesse.
 </p>
<?
}

/* function *main* */
if (!sent || strlen($name) < 2 || strlen($email) <2) {
   generate_formular();
} else {
 $pruefung = array(
  'email' => '/^ [\w.!#%&\*\/=\?\^\`\{\|\}\~+-]{1,64}
    \@ [[:alnum:].-]{1,255} \. [a-z]{2,6} $/xi',
    'name' => '/^[[:print:]]{3,}$/',
  'betreff' => '/^[[:print:]]{3,}$/');
 //Eingabeprüfung
 $fehler = array();
 foreach($_POST as $parameter => $wert) {
  if(isset($pruefung[$parameter])) {
     if(!preg_match($pruefung[$parameter], $wert)) {
        $fehler[] = "Probleme mit Feld " . $parameter . ": " . $wert;
      }
  } else {
      unset($_POST[$parameter]);
  }
 }
   if(strlen($_POST['comment1']) == 0 and strlen($_POST['comment1']) == 0 and strlen($_POST['comment1']) == 0 and empty($fehler)){
    $betreff = "E-Mail über Kontaktformular";
    $message = "<html><body>
        <p align=\"left\">
        <b>Anrede: </b>    $anrede<br />
        <b>Name: </b>     $name<br />
        <b>Telefon: </b>     $telefon<br />
        <b>E-Mail: </b>    $email<br />
        <b>Internetpräsenz: </b>  <a href=\"$website\">$website</a><br /><br />
        <b>Betreff: </b>    $betreff2<br />
     <b>Nachricht: </b>   $nachricht<br />
        </p>
        </body></html>
        ";
       
 
  $header    = "From: $email\r\n";
  $header   .= "Content-Type: text/html\r\nContent-Transfer-Encoding: 8bit\r\n";
  $header   .= "X-Mailer: PHP ". phpversion();
 
  mail (">> Edit by Admin :Das Posten von Email-Adressen ist hier nicht gestattet <<   
    generate_answer();
 } else { // if commentfelder 0
    if(!empty($fehler)){
      ?><ul><?
      foreach($fehler as $row){
       echo"<li>".$row."</li>";
      }
      ?></ul><?
  }
 
    generate_formular();
 }
}
?>
</div> <!-- div main -->
<?php
 require("$DOCUMENT_ROOT/footer.inc.php");
?>


... und hier danach:
Code:
<?
   session_start();
   require("$DOCUMENT_ROOT/menulinks.inc.php");   
   $status = $menu["kontakt"]["id"];
   require("$DOCUMENT_ROOT/header.inc.php");
?>
   
<div id="main">

<?php

function generate_formular() {
?>

<div id="contentleft">

   <p class="centered">
      Bei ernsthaftem Interesse an einer Zusammenarbeit freue ich mich über eine Anfrage mit vollständigen Angaben.
   </p>   

<form action="kontakt.php" method="post">

   <p>
      <label for="anrede">Anrede</label>
      <select name=anrede size="1">
          <option selected>Herr
          <option>Frau
          <option>Firma/Agentur
       </select>
    </p>


   <p>
      <label for="name">Name</label>
      <input type="text" name="name" size="40" maxlength="120" />
    </p>

   <p>
      <label for="telefon">Telefon</label>
      <input type="text" name="telefon" size="40" maxlength="80" />
    </p>
     
    <p>
       <label for="email">E-Mail-Adresse</label>
      <input type="text" name="email" size="40" maxlength="90" />
   </p>


  <!!   ------------------------------------------------------Angaben Referenzen des Fotografen      -----------------------------------------------------------------!!>   

    <p>
       <label for="website">Internetpräsenz</label>
      <input type="text" name="website" size="40" maxlength="90" />
   </p>

   <p>
      <label for="betreff2">Betreff</label>
      <input type="text" name="betreff2" size="40" maxlength="90" />
   </p>

   <p>   <label for="nachricht">Nachricht</label>
      <textarea name="nachricht" cols="40" rows="8"></textarea>
   </p>
      <textarea class="gbcommentnv" name="comment1" cols="40" rows="5"></textarea>
      <textarea class="gbcommentnv" name="comment2" cols="40" rows="5"></textarea>
      <textarea class="gbcommentnv" name="comment3" cols="40" rows="5"></textarea>

   <p>
      <img src="captcha/captcha.php" border="0" title="Sicherheitscode"><br />
      <input type="text" name="sicherheitscode" size="5">
   </p>

   <p>
      <input type="submit" name="mail" value="E-Mail verschicken" />
   </p>
</form>

<p class="centered">
   <br /><br />
   Bitte keine Anfragen bezüglich Escort-Service oder ähnlicher Dienstleistungen.
</p>

</div> <!-- contentleft -->

<div id="contentright">
      <img id="right" src="images/kontakt.jpg" alt="Bild des Autors" />
</div>

<?
}

function generate_answer() {
?>   
   <p class="headline">
      Ihre Mail wurde zugestellt.<br />
      Herzlichen Dank für Ihr Interesse.
   </p>
<?
}

if(isset($_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){
unset($_SESSION['captcha_spam']);

/* function *main* */
if (!sent || strlen($name) < 2 || strlen($email) <2) {
   generate_formular();
} else {

 $pruefung = array(
    'email' => '/^ [\w.!#%&\*\/=\?\^\`\{\|\}\~+-]{1,64}
    \@ [[:alnum:].-]{1,255} \. [a-z]{2,6} $/xi',
    'name' => '/^[[:print:]]{3,}$/',
    'betreff' => '/^[[:print:]]{3,}$/');

   //Eingabeprüfung
   $fehler = array();
   foreach($_POST as $parameter => $wert) {
      if(isset($pruefung[$parameter])) {
           if(!preg_match($pruefung[$parameter], $wert)) {
              $fehler[] = "Probleme mit Feld " . $parameter . ": " . $wert;
          }
      } else {
          unset($_POST[$parameter]);
      }
   }

   if(strlen($_POST['comment1']) == 0 and strlen($_POST['comment1']) == 0 and strlen($_POST['comment1']) == 0 and empty($fehler)){

      $betreff = "E-Mail über Kontaktformular";
      $message = "<html><body>
                  <p align=\"left\">
                  <b>Anrede: </b>            $anrede<br />
                  <b>Name: </b>             $name<br />
                  <b>Telefon: </b>             $telefon<br />
                  <b>E-Mail: </b>            $email<br />
                  <b>Internetpräsenz: </b>      <a href=\"$website\">$website</a><br /><br />
                  <b>Betreff: </b>            $betreff2<br />
               <b>Nachricht: </b>         $nachricht<br />
                  </p>
                  </body></html>
                  ";
                   
   
      $header    = "From: $email\r\n";
      $header   .= "Content-Type: text/html\r\nContent-Transfer-Encoding: 8bit\r\n";
      $header   .= "X-Mailer: PHP ". phpversion();
       
      mail ("blaaaa AT schubidu PUNKT deutschland", $betreff, $message, $header);
   
      generate_answer();

   } else { // if commentfelder 0
      if(!empty($fehler)){
            ?><ul><?
            foreach($fehler as $row){
               echo"<li>".$row."</li>";   
            }
            ?></ul><?
      }
   
      generate_formular();   
   }

}
}
?>

</div> <!-- div main -->

<?php
   require("$DOCUMENT_ROOT/footer.inc.php");
?>


session_start(); nach oben gepackt und Rest in den
Mail-Sende-Bereich, aber nix klappt.

Das Verzeichnis captcha mit den drei Dateien habe ich
definitiv richtig angelegt. :-/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Steef389



Anmeldedatum: 20.06.2007
Beiträge: 57

BeitragVerfasst am: 09.04.2008, 15:38    Titel: Antworten mit Zitat

Code:
if(isset($_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){
unset($_SESSION['captcha_spam']);

/* function *main* */
if (!sent || strlen($name) < 2 || strlen($email) <2) {
   generate_formular();
} else {

 $pruefung = array(
    'email' => '/^ [\w.!#%&\*\/=\?\^\`\{\|\}\~+-]{1,64}
    \@ [[:alnum:].-]{1,255} \. [a-z]{2,6} $/xi',
    'name' => '/^[[:print:]]{3,}$/',
    'betreff' => '/^[[:print:]]{3,}$/');

   //Eingabeprüfung
   $fehler = array();
   foreach($_POST as $parameter => $wert) {
      if(isset($pruefung[$parameter])) {
           if(!preg_match($pruefung[$parameter], $wert)) {
              $fehler[] = "Probleme mit Feld " . $parameter . ": " . $wert;
          }
      } else {
          unset($_POST[$parameter]);
      }
   }

2 Fehler:
1. Falls kein Sicherheitscode eingegeben wurde, wird gar nichts angezeigt, da er gar nicht in die Auswahlschleife hüpft.
2. Falls Parameter nicht gefunden => lösche POST.

So müsste es funktionieren:
Code:
/* function *main* */
if (!sent || strlen($name) < 2 || strlen($email) <2) {
   generate_formular();
} else {

 $pruefung = array(
    'email' => '/^ [\w.!#%&\*\/=\?\^\`\{\|\}\~+-]{1,64}
    \@ [[:alnum:].-]{1,255} \. [a-z]{2,6} $/xi',
    'name' => '/^[[:print:]]{3,}$/',
    'betreff' => '/^[[:print:]]{3,}$/',
    'sicherheitscode' => '/^[A-Za-z0-9]*$/');

   //Eingabeprüfung
   $fehler = array();
   foreach($_POST as $parameter => $wert) {
      if(isset($pruefung[$parameter])) {
           if(!preg_match($pruefung[$parameter], $wert)) {
              $fehler[] = "Probleme mit Feld " . $parameter . ": " . $wert;
          }
      } else {
          unset($_POST[$parameter]);
      }
   }
if (isset($_SESSION['captcha_spam']) AND $_POST["sicherheitscode"] == $_SESSION['captcha_spam']){
unset($_SESSION['captcha_spam']);
}
else
{
$fehler[] = "Sicherheitscode war falsch";
}




PS: HTML_Kommentare mit <!-- -->
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Stoppt-den-Spam.info Foren-Übersicht -> Zahlen Captcha Alle Zeiten sind GMT
Seite 1 von 1

 
  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
You can attach files in this forum
You can download files in this forum