Einfache Formular abfrage zu kompliziert?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #16
    Mit dem isset():

    PHP Code:
    if(isset($_POST['feld']) && empty($_POST['feld'])) {...} 

    Mhn, dieser Teil scheint nicht ganz richtig:


    PHP Code:
             '<font size="1" face="Verdana, Arial, Helvetica, sans-serif">
             <strong>[X]</strong> Land<br></td>'
    ;
        }
    if (
    $_Checkvar['EMail'] == "sendfalse") {
        echo 
    '<tr><td bgcolor="#E1E1E1">
             <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
             <strong>[X]</strong> EMail<br></td>'
    ;
         
         die(
    '<tr><td bgcolor="F2F2F2"></td><br><tr><td bgcolor="#E1E1E1">
             <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
             <a href="load.php?f=join"><strong>Zurück zum Formular</strong></td></a>'
    );
            
    }

    /* Merkwürdiges else */
    else {
    $strMailtext "";

     while(list(
    $strName,$value) = each($_POST))
     {
      if(
    is_a 

    Sollte sich das ganze nicht auf alle If-Abfragen beziehen und nicht nur, wenn die E-Mail nicht angegeben wurde?

    Dann würde ich eine weitere Variable setzen, $error, welche entweder true oder false ist, entweder wenn ein Fehler aufgetreten ist oder wenn es keinen Eingabefehler gibt (dann weiter, was im Moment dein Else macht). Einfach mit einem if($error == false)....

    Außerdem finde ich es merkwürdig das dein Script nur abgebrochen wird, wenn die E-Mail Adresse falsch ist. Ich würde dies eher auch wieder mit der $error Variable machen. Also if($error == true) ..breche Script ab...



    Floriam
    PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

    Comment


    • #17
      Ich habe das Script unterdessen etwas optimiert und eine isset Abfrage eingebaut, weiss jedoch nicht ob das so auch richtig ist?
      Dank deinem Hinweis habe ich nun auch das die() in eine separate if Abfrage gepakt, damit sollte nun eigentlich alles stimmen, falls das mit dem isset korrekt ist.

      Das Script funktioniert richtig bis die E-Mail Adresse "Mail" vom Formular übergeben wird, dann wird nämlich das Script bereits oben mit die beendet. Und das verstehe ich absolut nicht.

      PHP Code:
      <?php 
      error_reporting
      (E_ALL);

      $strEmpfaenger 'seek@gmx.ch';

      $strFrom       '"Bewerber" <bewerbung@euo-clan.com>';

      $strSubject    'Bewerbungsformular EUO';

      $strReturnhtml 'load.php?f="join_ok.php"';

      $strDelimiter  ":\t";

      if(isset(
      $_POST['Nickname'],
               
      $_POST['GebJahr'],
               
      $_POST['Land'], 
               
      $_POST['Mail'])) {
      } else {
          die(
      "Bitte benutze das EUO Join us Formular");
      }
      if (
      $empty=($_POST['Nickname']== "") OR
                 (
      $_POST['GebJahr']== "") OR
                 (
      $_POST['GebJahr']== "Jahr") OR
                 (
      $_POST['Land']== "") OR
                 (
      $_POST['Mail']== "")) {
          echo 
      '<br><br><br><br><br><br><br><br><br><br><br><br>
               <body bgcolor="#F2F2F2" link="#333333" vlink="#333333">
               <table width="275px" align="center" border="0" cellspacing="1" cellpadding="2">
               <tr>
               <td bgcolor="#999999">
               <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
               <strong><font color="#FF6600">EUO</font>.JOIN US Check</td>
               </tr>
               <tr><td bgcolor="#E1E1E1">
               <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
               Du musst folgendes Feld oder Felder ausfüllen:<strong></td>'
      ;
          echo 
      '<tr><td bgcolor="#F2F2F2"></td>';
          }
      if(
      $_POST['Nickname'] == "") {
          echo 
      '<tr><td bgcolor="#E1E1E1">
               <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
               <strong>[X]</strong> Nickname<br></td>'
      ;
          }
      if ((
      $_POST['GebJahr'] == "") OR ($_POST['GebJahr'] == "Jahr")){
          echo 
      '<tr><td bgcolor="#E1E1E1">
               <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
               <strong>[X]</strong> Geburtsdatum<br></td>'
      ;
          }
      if (
      $_POST['Land'] == "") {
          echo 
      '<tr><td bgcolor="#E1E1E1">
               <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
               <strong>[X]</strong> Land<br></td>'
      ;
          }
      if (
      $_POST['Mail'] == "") {
          echo 
      '<tr><td bgcolor="#E1E1E1">
               <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
               <strong>[X]</strong> E-Mail<br></td>'
      ;
          }
      if (
      $empty) {
          die(
      '<tr><td bgcolor="F2F2F2"></td><br><tr><td bgcolor="#E1E1E1">
               <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
               <a href="load.php?f=join"><strong>Zurück zum Formular</strong></td></a>'
      );
              
      } else {
      $strMailtext "";

       while(list(
      $strName,$value) = each($_POST))
       {
        if(
      is_array($value))
        {
         foreach(
      $value as $value_array)
         {
          
      $strMailtext .= $strName.$strDelimiter.$value_array."\n";
         }
        }
        else
        {
         
      $strMailtext .= $strName.$strDelimiter.$value."\n";
        }
       }

       if(
      get_magic_quotes_gpc())
       {
        
      $strMailtext stripslashes($strMailtext);
       }

       
      mail($strEmpfaenger$strSubject$strMailtext"From: ".$strFrom)
        or die(
      "Die Mail konnte nicht versendet werden. The mail could not been sent.");
       echo 
      '<meta http-equiv="refresh" content="0; url="'.$strReturnhtml.'>';
       exit;
       }
      ?>
      Vielen Dank nochmal, ich geh jetzt erstmal schlafen, gn8
      Last edited by Seek; 07-11-2004, 00:26.

      Comment


      • #18
        1. Wieso machst du eine leere If Schleife? Den gesamten Teil einfach verneinen und schon hast du das was du in dem Else Teil benutzt.

        if(!(isset($_POST['feld'],...)))


        2. Setz $empty doch lieber in der If Schleife welche du benutzt um zu prüfen ob Einträge fehlen.


        3. Gib mal sämtliche $_POST Variablen mit print_r() aus..
        PHP Handbuch - MySQL Handbuch - PHP Einsteiger Tutorial - CSS Referenz - Browserunterstützung von CSS

        Comment


        • #19
          Ich hab nun mal noch die geschweiften Klammern richtig gesetzt und das überflüssige else entfernt. Wie du das mit den empty meinst versteh ich nicht, ist aber wohl auch nicht unbedingt nötig.

          Der check Teil funktioniert nun eigentlich richtig, lediglich wenn ich alle zu prüfenden Felder mittels Formular übergeben habe behauptet er dass garnichts übergeben wurde und gibt mir die die("Bitte benutze das...") aus. Das macht einfach keinen Sinn. Da muss der Fehler doch im else teil liegen, welchen ich leider nicht selber geschrieben habe.

          PHP Code:
          <?php 
          error_reporting
          (E_ALL);

          $strEmpfaenger 'seek@gmx.ch';

          $strFrom       '"Bewerber" <bewerbung@euo-clan.com>';

          $strSubject    'Bewerbungsformular EUO';

          $strReturnhtml 'load.php?f="join_ok.php"';

          $strDelimiter  ":\t";

          /* Es wird alles korrekt übergeben, ich kriege ja auch die Mail mit den Daten
          echo "<pre>\n";
              print_r($_POST);
              echo "</pre>\n";*/

          if(!(isset($_POST['Nickname'], 
                     
          $_POST['GebJahr'], 
                     
          $_POST['Land'], 
                     
          $_POST['Mail']))) {
              die(
          "Bitte benutze das EUO Join us Formular");
          }
          if (
          $empty=($_POST['Nickname']== "") OR
                     (
          $_POST['GebJahr']== "") OR
                     (
          $_POST['GebJahr']== "Jahr") OR
                     (
          $_POST['Land']== "") OR
                     (
          $_POST['Mail']== "")) {
              echo 
          '<br><br><br><br><br><br><br><br><br><br><br><br>
                   <body bgcolor="#F2F2F2" link="#333333" vlink="#333333">
                   <table width="275px" align="center" border="0" cellspacing="1" cellpadding="2">
                   <tr>
                   <td bgcolor="#999999">
                   <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
                   <strong><font color="#FF6600">EUO</font>.JOIN US Check</td>
                   </tr>
                   <tr><td bgcolor="#E1E1E1">
                   <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
                   Du musst folgendes Feld oder Felder ausfüllen:<strong></td>'
          ;
              echo 
          '<tr><td bgcolor="#F2F2F2"></td>';
              
          if(
          $_POST['Nickname'] == "") {
              echo 
          '<tr><td bgcolor="#E1E1E1">
                   <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
                   <strong>[X]</strong> Nickname<br></td>'
          ;
              }
          if ((
          $_POST['GebJahr'] == "") OR ($_POST['GebJahr'] == "Jahr")){
              echo 
          '<tr><td bgcolor="#E1E1E1">
                   <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
                   <strong>[X]</strong> Geburtsdatum<br></td>'
          ;
              }
          if (
          $_POST['Land'] == "") {
              echo 
          '<tr><td bgcolor="#E1E1E1">
                   <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
                   <strong>[X]</strong> Land<br></td>'
          ;
              }
          if (
          $_POST['Mail'] == "") {
              echo 
          '<tr><td bgcolor="#E1E1E1">
                   <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
                   <strong>[X]</strong> E-Mail<br></td>'
          ;
              }
          if (
          $empty) {
              die(
          '<tr><td bgcolor="F2F2F2"></td><br><tr><td bgcolor="#E1E1E1">
                   <font size="1" face="Verdana, Arial, Helvetica, sans-serif">
                   <a href="load.php?f=join"><strong>Zurück zum Formular</strong></td></a>'
          );
              }    
          } else {

          /* bis hier stimmt alles wenn ich die(); setze*/

          $strMailtext "";

           while(list(
          $strName,$value) = each($_POST))
           {
            if(
          is_array($value))
            {
             foreach(
          $value as $value_array)
             {
              
          $strMailtext .= $strName.$strDelimiter.$value_array."\n";
             }
            }
            else
            {
             
          $strMailtext .= $strName.$strDelimiter.$value."\n";
            }
           }

           if(
          get_magic_quotes_gpc())
           {
            
          $strMailtext stripslashes($strMailtext);
           }

           
          mail($strEmpfaenger$strSubject$strMailtext"From: ".$strFrom)
            or die(
          "Die Mail konnte nicht versendet werden. The mail could not been sent.");
           echo 
          '<meta http-equiv="refresh" content="0; url="'.$strReturnhtml.'>';
           exit;
           }
          ?>
          Last edited by Seek; 07-11-2004, 12:30.

          Comment


          • #20
            das macht sinn

            der lädt die seite einfach zwei mal *mich wiederhol*

            undzwar wenn er die mail schickt, kommt danach das
            PHP Code:
            echo '<meta http-equiv="refresh" content="0; url="'.$strReturnhtml.'>'
            und danach sind logischer weise alle $_POST's leer und es kommt der fehler, beim ersten laden der seite stimmt jedoch alles

            setz den content mal auf 3 und siehe selbst

            byez - sagg

            edit: ach und nebenbei, setz doch mal die anführungszeichen in dem meta-tag richtig
            Last edited by sagg; 07-11-2004, 14:49.
            mfg - sagg

            Comment


            • #21
              ahrg, das hat mir auch einer so gesagt und ich habs natürlich ohne gross zu überlegen übernommen... hmm, aber er lädt weiterhin nicht die gewünschte Seite, post mir doch bitte mal was ich da schreiben muss damit der nach dem absenden mein load.php?f=join_ok sofort lädt.

              Comment


              • #22
                geht doch

                PHP Code:
                echo '<META HTTP-EQUIV=Refresh CONTENT="1; URL=http://www.euo-clan.com/euo/load.php?f=join_ok"> '
                Vielen Dank nochmal and alle die mir geholfen haben!

                Comment

                Working...
                X