Einfache Formular abfrage zu kompliziert?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #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

    Kommentar


    • #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
      Zuletzt geändert von Seek; 07.11.2004, 01:26.

      Kommentar


      • #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

        Kommentar


        • #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;
           }
          ?>
          Zuletzt geändert von Seek; 07.11.2004, 13:30.

          Kommentar


          • #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
            Zuletzt geändert von sagg; 07.11.2004, 15:49.
            mfg - sagg

            Kommentar


            • #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.

              Kommentar


              • #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!

                Kommentar

                Lädt...
                X