[Typo3-german] Selbstaufrufender PHP Formmailer

Matthias Waldmüller mw at auviso.com
Wed Aug 17 12:26:16 CEST 2005


> Woher weiss das Script, dass es gemeint ist? Wird ein hidden value 
> gesetzt? Wird das Formular über das Script erzeugt? Bitte genauer.
> Ansonsten ist es möglich so etwas zu machen.
>
> Gruss. Peter.
>
> -- 
> _____________________________
> 4Many® Services
> openBC: http://www.openbc.com/go/invuid/Peter_Russ

ja, genau, ein hidden value für die vorschau und eines für das senden 
selbst. das formular wird dann erzeugt, wenn keines der values gesetzt ist. 
hier der code:

<?php
  while (list($key, $value) = each($HTTP_POST_VARS))
  {
  $key = $value;
  }
  if ($v_ok == "Vorschau" and $vorschau_ok != "vors_ok")
  {

       //-------------------------- (Anfang 
Vorschau) --------------------------------------------

            $to = $email;
            $from = XXXXX;

            $body = "Sehr geehrter Gast!<br><br>";

            if ($Betreff == "Anfrage")
            {
            $body .= "Herzlichen Dank für Ihre ANFRAGE.<br><br>";
            }
            else
            {
            $body .= "Herzlichen Dank für Ihre RESERVIERUNG.<br><br>";
            }

            $body .= "Sie sind im Begriff folgende Informationen an uns zu 
senden:<br>Bitte überprüfen Sie die Richtigkeit der eingegebenen Daten und 
klicken Sie anschließend auf \"Abschicken\"<br><br>";


            $body .= "Name: $Vorname $name<br>";
            $body .= "Strasse: $Strasse<br>";
            $body .= "PLZ/Ort: $ort<br>";
            $body .= "Land: $Land<br>";
            $body .= "Tel.: $Telefon<br>";
            if ($mobil !="")
            {
            $body .= "Mobil: $mobil<br>";
            }
            if ($Fax !="")
            {
            $body .= "Fax: $Fax<br>";
            }
            $body .= "E-Mail: $email<br>";

            if ($Anreise == "" or $Anreise == "TT.MM.JJJJ")
            {
            $body .= "<br>";
            }
            else
            {
            $body .= "<br>";
            $body .= "Sie möchten am $Anreise anreisen und am $Abreise 
abreisen.<br><br>";
            }

            if ($DZ_Erwachsene > 1)
            {
            $dz_ew = "Erwachsene";
            }
            else
            {
            $dz_ew = "Erwachsenen";
            }

            if ($DZ_Kinder > 1)
            {
            $dz_kind = "Kinder";
            }
            else
            {
            $dz_kind = "Kind";
            }


   if ($DZ != "")
    {
    $body .="Sie möchten:<br>";


       //----------------------------- (Appartement Abfrage 
Anfang) ---------------------------------

            if ($DZ  != "")
            {
            $body .="$DZ Appartement(s)";
            }
            if ($DZ_Erwachsene != "")
             {
             $body .=" für $DZ_Erwachsene $dz_ew";
             if ($DZ_Kinder !="")
              {
              $body .=" und $DZ_Kinder $dz_kind";
              }
              if ($Alter_DZ_Kinder !="")
              {
              $body .=" im Alter von $Alter_DZ_Kinder";
              }
             }
            else
             {
             if ($DZ_Kinder !="")
              {
              $body .=" für $DZ_Kinder $dz_kind";
              }
              if ($Alter_DZ_Kinder !="")
              {
              $body .=" im Alter von $Alter_DZ_Kinder";
              }
             }
             $body .=".<br><br>";
            }

       //------------------------------ (Appartement Abfrage 
Ende) ----------------------------------



       //------------------------------ (Wünsche Abfrage 
Anfang) -------------------------------------------


            if ($Wuensche != "")
            {
   $body .="<br>";
            $body .="Ihre Wünsche:<br>";
            $body .="$Wuensche<br><br>";
            }

            if ($Reiseversicherung != "" OR $Erlebniscard != "" OR $Schipass 
!= "")
            {
            $body .="Des Weiteren interessieren Sie sich für:<br>";
   if ($Reiseversicherung != "")
   {
   $body .="&nbsp;&nbsp;eine Reiseversicherung<br>";
   }
   if ($Erlebniscard != "")
   {
   $body .="&nbsp;&nbsp;die Erlebniscard<br>";
   }
   if ($Schipass != "")
   {
   $body .="&nbsp;&nbsp;den Schipass<br>";
   }
   $body .="<br><br>";
            }

        // ------------------------------------- (Wünsche Abfrage 
Ende) ------------------------------------

  echo $body; //Vorschau ausgeben

  echo "<form name=\"Formular2\" method=\"post\" 
action=\"index.php?id=39\">";
  echo "<input type=button value=\"Zurück\" 
onClick=\"location.href='javascript:history.back()'\"> <input 
type=\"submit\" name=\"b_ok\" value=\"Abschicken\">";
  echo "<p><strong>Bitte beachten Sie, dass das Formular erst nach klicken 
des Buttons \"Abschicken\" endgültig versand wird!</strong></p>";
  foreach($HTTP_POST_VARS as $key => $value) //hidden fields für jeden Wert 
anlegen
  {
  echo "<input name=\"$key\" type=\"hidden\" value=\"$value\">";
  echo "<input name=\"vorschau_ok\" type=\"hidden\" value=\"vors_ok\">";
  }
  echo "</form>";

  // -------------------------------------- (Ende 
Vorschau) --------------------------------
  }
  if ($b_ok == "Abschicken")
  {

       //-------------------------- (Anfang E-Mail an den 
Gast) --------------------------------------------

            $to = $email;
            $from = 'XXXXX';

            $body = "Sehr geehrter Gast!\n\n";

            if ($Betreff == "Anfrage")
            {
            $body .= "Herzlichen Dank für Ihre ANFRAGE.\n\n";
            }
            else
            {
            $body .= "Herzlichen Dank für Ihre RESERVIERUNG.\n\n";
            }

            $body .= "Sie haben von unserer Homepage aus folgende 
Informationen an uns gesandt:\n\n";


            $body .= "Name: $Vorname $name\n";
            $body .= "Strasse: $Strasse\n";
            $body .= "PLZ/Ort: $ort\n";
            $body .= "Land: $Land\n";
            $body .= "Tel.: $Telefon\n";
            if ($mobil !="")
            {
            $body .= "Mobil: $mobil\n";
            }
            if ($Fax !="")
            {
            $body .= "Fax: $Fax\n";
            }
            $body .= "E-Mail: $email\n";

            if ($Anreise == "" or $Anreise == "TT.MM.JJJJ")
            {
            $body .= "\n";
            }
            else
            {
            $body .= "\n";
            $body .= "Sie möchten am $Anreise anreisen und am $Abreise 
abreisen.\n";
            }

            if ($DZ_Erwachsene > 1)
            {
            $dz_ew = "Erwachsene";
            }
            else
            {
            $dz_ew = "Erwachsenen";
            }

            if ($DZ_Kinder > 1)
            {
            $dz_kind = "Kinder";
            }
            else
            {
            $dz_kind = "Kind";
            }


   if ($DZ != "")
    {
    $body .="Sie möchten:\n\n";


       //----------------------------- (Appartement Abfrage 
Anfang) ---------------------------------

            if ($DZ  != "")
            {
            $body .="$DZ Appartement(s)";
            }
            if ($DZ_Erwachsene != "")
             {
             $body .=" für $DZ_Erwachsene $dz_ew";
             if ($DZ_Kinder !="")
              {
              $body .=" und $DZ_Kinder $dz_kind";
              }
              if ($Alter_DZ_Kinder !="")
              {
              $body .=" im Alter von $Alter_DZ_Kinder";
              }
             }
            else
             {
             if ($DZ_Kinder !="")
              {
              $body .=" für $DZ_Kinder $dz_kind";
              }
              if ($Alter_DZ_Kinder !="")
              {
              $body .=" im Alter von $Alter_DZ_Kinder";
              }
             }
             $body .=".\n\n";
            }

       //------------------------------ (Appartement Abfrage 
Ende) ----------------------------------



       //------------------------------ (Wünsche Abfrage 
Anfang) -------------------------------------------


            if ($Wuensche != "")
            {
   $body .="\n";
            $body .="Ihre Wünsche:\n\n";
            $body .="$Wuensche\n\n";
            }

            if ($Reiseversicherung != "" OR $Erlebniscard != "" OR $Schipass 
!= "")
            {
            $body .="Des Weiteren interessieren Sie sich für:\n";
   if ($Reiseversicherung != "")
   {
   $body .="&nbsp;&nbsp;eine Reiseversicherung\n";
   }
   if ($Erlebniscard != "")
   {
   $body .="&nbsp;&nbsp;die Erlebniscard\n";
   }
   if ($Schipass != "")
   {
   $body .="&nbsp;&nbsp;den Schipass\n";
   }
   $body .="\n\n";
            }
        // ------------------------------------- (Wünsche Abfrage 
Ende) ------------------------------------
            $body .="\n";
            $body .="Herzlichen Dank. Wir werden Ihr Anliegen so schnell wie 
möglich bearbeiten und\n";
            $body .="melden uns in Kürze.\n\n";
       $body .="Mit freundlichen Grüßen aus XXXX\n\n";

            $body .="XXXX\n\n";

        $body .="=====================================\n";
        $body .="=====================================\n\n\n";

            $body .="ACHTUNG: Dieses E-Mail dient zu Ihrer Information und 
ist noch kein Angebot oder ";
            $body .="eine Reservierungs-Bestätigung unsererseits!\n\n";

            $headers = "From: $from\n";
            $headers .= "Reply-To: $from\n";
            $success = mail($to, ("XXXX"), $body, $headers);

        // -------------------------------------- Ende (E-Mail an den 
Gast) --------------------------------


        // -------------------------------------- Anfang (E-Mail an das 
Hotel) -----------------------------

            $to2 = 'info at landhaus-alpbach.at';
            $from2 = $email;

            $body2 = ">>>>>>>>>> $Betreff <<<<<<<<<<<\n\n";
            $body2 .= ">>>>>>>>>> Daten zur Person <<<<<<<<<<<\n\n";
            $body2 .= "$Vorname $name\n";
            $body2 .= "$Strasse\n";
            $body2 .= "$ort\n";
            $body2 .= "$Land\n";
            $body2 .= "Tel.: $Telefon\n";
            $body2 .= "Mobil: $mobil\n";
            $body2 .= "Fax: $Fax\n";
            $body2 .= "E-Mail: $email\n";
            $body2 .= "\n";
            $body2 .= ">>>>>>>>>> Daten der $Betreff <<<<<<<<<<<\n\n";
            $body2 .= "Anreise: $Anreise\n";
            $body2 .= "Abreise: $Abreise\n\n";


       //-------------------------- (Zimmer Abfrage 
Anfang) -----------------------------------------

            $body2 .= "$DZ Appartements für $DZ_Erwachsene Erwachsene(n) und 
$DZ_Kinder Kind(er): Alter $Alter_DZ_Kinder\n";

       //------------------------------ (Zimmerabfrage 
Ende) ----------------------------------

       //------------------------------ (Wünsche Abfrage 
Anfang) -------------------------------------------

            if ($Wuensche != "")
            {
            $body2 .= "\n";
            $body2 .= ">>>>>>>>>> Wünsche <<<<<<<<<<<\n\n";
            $body2 .="$Wuensche\n\n";
            }
            if ($Reiseversicherung != "" OR $Erlebniscard != "" OR $Schipass 
!= "")
            {
            $body .="Interesse für:\n";
   if ($Reiseversicherung != "")
   {
   $body .="Reiseversicherung\n";
   }
   if ($Erlebniscard != "")
   {
   $body .="Erlebniscard\n";
   }
   if ($Schipass != "")
   {
   $body .="Schipass\n";
   }
   $body .="\n\n";
            }


        // ------------------------------------- (Wünsche Abfrage 
Ende) ------------------------------------

            $headers2 = "From: $from2\n";
            $headers2 .= "Reply-To: $from2\n";
            $success2 = mail($to2, "==> $XXXX", $body2, $headers2);

        // -------------------------------------- Ende (E-Mail an das 
Hotel) -------------------------------

?>
<center>
  <table width="100%" border="0" cellpadding="0" cellspacing="0">
  <tr>
      <td class="main">
        <h2>Sehr geehrter Gast!</h2>
        <p>Herzlichen Dank f&uuml;r Ihr Interesse an unserem Haus.<br>
          <br>
          Es freut uns, dass Sie uns bei Ihrem Besuch auf unserer Homepage 
Ihre
          W&uuml;nsche mitgeteilt haben. Wir werden bem&uuml;ht sein, Ihren 
W&uuml;nschen
          zu entsprechen und Ihnen so rasch wie m&ouml;glich eine Antwort
        zusenden. </p>
        <p><br>
        Mit freundlichen Gr&uuml;&szlig;en aus dem sch&ouml;nsten Dorf 
&Ouml;sterreichs</p>
        <p>XXXX<br>
        </p></td>
  </tr>
</table>
</center>

<?
 }
 if ($b_ok != "Abschicken" and $v_ok != "Vorschau")
 {
?>
<SCRIPT language="JavaScript">
  <!--


function emailCheck (emailStr)
 {
  var emailPat=/^(.+)@(.+)$/
  var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
  var validChars="\[^\\s" + specialChars + "\]"
  var quotedUser="(\"[^\"]*\")"
  var atom=validChars + '+'
  var word="(" + atom + "|" + quotedUser + ")"
  var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
  var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
  var matchArray=emailStr.match(emailPat)

 if(document.Formular.name.value == "")
    {
     alert("Bitte geben Sie Ihren Namen ein!");
     document.Formular.name.focus();
     return false;
    }
   if(document.Formular.ort.value == "")
    {
     alert("Bitte geben Sie Ihren Ort ein!");
     document.Formular.ort.focus();
     return false;
    }

   if(document.Formular.email.value == "")
    {
     document.Formular.email.value = "keine-mail at landhaus-alpbach.at";
     return true;
    }
  if (matchArray==null) {
  alert("Bitte geben Sie IHRE KORREKTE E-Mail-Adresse ein oder lassen Sie 
dieses Feld ganz frei!")
  return false
  }
  var user=matchArray[1]
  var domain=matchArray[2]

  if (user.match(userPat)==null) {
    alert("Überprüfen Sie den Benutzernamen der E-Mail-Adresse! (john@, 
office@)")
    return false
  }

   var domainArray=domain.match(domainPat)
   if (domainArray==null) {
 alert("Überprüfen Sie die Domäne! (@microsoft.)")
    return false
   }
   var atomPat=new RegExp(atom,"g")
   var domArr=domain.match(atomPat)
   var len=domArr.length
   if (domArr[domArr.length-1].length<2 ||
    domArr[domArr.length-1].length>4) {
   alert("Überprüfen Sie die Adresse! (.at, .com)")
   return false
   }
   if (len<2) {
   var errStr="Überprüfen Sie die Adresse! (.at, .com)"
   alert(errStr)
   return false
   }
   return true;
   }
//  End -->
  </SCRIPT>
<center>
<form name="Formular" action="index.php?id=39" method="POST" 
onSubmit="return emailCheck(this.email.value);">
   <table width="550" border="0" cellpadding="0" cellspacing="0">
      <tr>
        <td class="main"><center>
            <table border="0">
              <tr>
                <td valign="top" nowrap><b>
                  <input type="radio" name="Betreff" value="Anfrage" 
checked>
                  <span class="main">                  Bitte erstellen Sie 
mir/uns ein Angebot!<br>
                  <input type="radio" name="Betreff" value="RESERVIERUNG">
                  Bitte reservieren Sie f&uuml;r mich/uns!</span></b></td>
              </tr>
            </table>
            <br>
Bitte geben Sie uns Ihre genaue Anschrift, insbesondere Ihre E-Mail-Adresse 
und Ihre<br>
Telefonnummer bekannt!<br>
        </center>
          <table width="100%" border="0" cellpadding="0" cellspacing="0" 
bgcolor="#F5BC15">
            <tr class="main">
              <td valign="top"><b>Vorname</b></td>
              <td valign="top">
                <input type="text" name="Vorname" size="24" tabindex="1">
              </td>
              <td valign="top"><b>Tel.</b></td>
              <td valign="top">
                <input type="text" name="Telefon" size="20" tabindex="6" 
style="border: 2px solid #a11111">
              </td>
            </tr>
            <tr class="main">
              <td valign="top"><b>Nachname</b></td>
              <td valign="top">
                <input type="text" name="name" size="24" tabindex="2" 
style="border: 2px solid #a11111">
              </td>
              <td valign="top"><b>Mobil</b></td>
              <td valign="top">
                <input type="text" name="mobil" size="20" tabindex="7">
              </td>
            </tr>
            <tr class="main">
              <td valign="top"><b>Stra&szlig;e</b></td>
              <td valign="top">
                <input type="text" name="Strasse" size="24" tabindex="3">
              </td>
              <td valign="top"><b>Fax</b></td>
              <td valign="top">
                <input type="text" name="Fax" size="20" tabindex="8">
              </td>
            </tr>
            <tr class="main">
              <td valign="top"><b>PLZ/Ort</b></td>
              <td valign="top">
                <input type="text" name="ort" size="24" tabindex="4" 
style="border: 2px solid #a11111">
              </td>
              <td valign="top"><b>E-Mail</b></td>
              <td valign="top">
                <input type="text" name="email" size="20" tabindex="9" 
style="border: 2px solid #a11111">
              </td>
            </tr>
            <tr class="main">
              <td valign="top"><b>Land</b></td>
              <td valign="top">
                <input type="text" name="Land" size="24" tabindex="5">
              </td>
              <td valign="top">&nbsp;</td>
              <td valign="top">&nbsp;</td>
            </tr>
          </table>
          <br>
          <b>Meine/Unsere
          Urlaubsplanung sieht so aus:<br>
          </b>
          <table width="100%" border="0" cellpadding="0" cellspacing="0" 
bgcolor="#F5BC15">
            <tr class="main">
              <td nowrap valign="top" width="66"><b>Anreise</b></td>
              <td width="148">
                <input
            onblur="if(this.value=='')this.value='TT.MM.JJJJ';"
            onfocus="if(this.value=='TT.MM.JJJJ')this.value='';"
            size="13"
            value="TT.MM.JJJJ"
            name="Anreise"
            type="text">
              </td>
              <td colspan="3" valign="top">Anzahl Appartements:
                <input name="DZ" type="text" id="DZ" size="2"></td>
            </tr>
            <tr class="main">
              <td nowrap valign="top" width="66"><b>Abreise</b></td>
              <td valign="top">
                <input
            onblur="if(this.value=='')this.value='TT.MM.JJJJ';"
            onfocus="if(this.value=='TT.MM.JJJJ')this.value='';"
            size="13"
            value="TT.MM.JJJJ"
            name="Abreise"
            type="text">
              </td>
              <td>Erwachsene
              <input type="text" name="DZ_Erwachsene" size="2"></td>
              <td>Kinder
              <input type="text" name="DZ_Kinder" size="2"></td>
              <td>Alter d. Kinder
              <input type="text" name="Alter_DZ_Kinder" size="5"></td>
            </tr>
          </table>
          <br>
                <b>Worauf
                ich/wir gro&szlig;en Wert lege(n) - was ich/wir 
m&ouml;chte(n):<br>
                </b>
                <table width="100%" border="0" bgcolor="#F5BC15">
                  <tr class="main">
                    <td width="200" valign="top">
                      <textarea name="Wuensche" cols="86" 
rows="8"></textarea>
                    </td>
                  </tr>
          </table>
     <br>
                <b>Bitte
                informieren Sie mich/uns zus&auml;tzlich &uuml;ber 
...</b><br>
    <table width="100%" border="0" cellspacing="0" cellpadding="0" 
bgcolor="#F5BC15">
                  <tr>
                    <td class="main"><p>
                      <span class="main">  <input name="Reiseversicherung" 
type="checkbox" id="Reiseversicherung" value="euro-Reiseversicherung">
                      <a href="Hotelstorno%20Plus_mK_dt.pdf" 
target="_blank">euro-Reiseversicherung</a></span><br>
                  </p>                    </td>
                  </tr>
                  <tr>
                    <td class="main"><input name="Erlebniscard" 
type="checkbox" id="Erlebniscard" value="Erlebniscard">
                    Erlebniscard</td>
                  </tr>
                  <tr>
                    <td class="main"><input name="Schipass" type="checkbox" 
id="Schipass" value="Schipass">
                    Schipass</td>
                  </tr>
          </table>


          <center>
            <p>Bitte beachten Sie, dass eine Reservierung erst durch eine<b> 
Reservierungsbest&auml;tigung</b> unsererseits wirksam wird. Danke!<br>
                         <br>


                <input name="Reset" type="reset" value="Formular 
l&ouml;schen">
                &nbsp;
                <input name="v_ok" type="submit" value="Vorschau">
                <br>
            </p>
          </center>

        </td>
      </tr>
    </table>

    <p>&nbsp;</p>
</form>
</center>
<?
}
?> 





More information about the TYPO3-german mailing list