Formular Probleme

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

  • Formular Probleme

    Hallo zusammen

    ich Bräuche dringt mal hilfe ich bin schon am verzweifeln

    Also es geht um eine Fromular Auswertung und Überprüfung
    dieser Code hier Funktionert ohne Prbleme darin werden die einzelnen felde geprüft ob sie leer sind oder nicht mehr erst mal nicht.

    PHP-Code:
    //Variablen für den ersten Aufruf de Formulars
    if (!isset ($_POST['firmenname'])) $_POST['firmenname'] = '' // ist die Variable nicht gesetzt setzte diesen dafür ein
    if (!isset ($_POST['tarif'])) $_POST['tarif'] = '';
    if (!isset (
    $_POST['abteilung'])) $_POST['abteilung'] = '';
    if (!isset (
    $_POST['gender'])) $_POST['gender'] = '';
    if (!isset (
    $_GET['check'])) $_GET['check'] = '';
    if (!isset (
    $_POST['vorname'])) $_POST['vorname'] = '';
    if (!isset (
    $_POST['name'])) $_POST['name'] = '';
    if (!isset (
    $_POST['ort'])) $_POST['ort'] = '';
    if (!isset (
    $_POST['plz'])) $_POST['plz'] = '';
    if (!isset (
    $_POST['strasse'])) $_POST['strasse'] = '';
    if (!isset (
    $_POST['telefon'])) $_POST['telefon'] = '';
    if (!isset (
    $_POST['fax'])) $_POST['fax'] = '';
    if (!isset (
    $_POST['mobil'])) $_POST['mobil'] = '';
    if (!isset (
    $_POST['inet'])) $_POST['inet'] = '';
    if (!isset (
    $_POST['email'])) $_POST['email'] = '';
    if (!isset (
    $fm_check)) $fm_check '';
    //if (!isset ($error)) $error = FALSE;
    if (!isset ($errorMessage)) $errorMessage ' ';
    /////////////////////////////////////////////////////////////////////////////////
    /////////////// Ende Variablen für den Ersten aufruf ///////////////////////////
    ///////////////////////////////////////////////////////////////////////////////

    $script $PHP_SELF  ;

    $errorFields = array('tarif',
                         
    'firmenname',
                         
    'gender',
                         
    'vorname',
                         
    'name',
                         
    'ort',
                         
    'plz',
                         
    'strasse',
                         
    'telefon',
                         
    'email'
                   
    ); 

    //Anlegen Errorfiels aus dem Array 
    for($x=0;$x<count($errorFields);$x++)
    {
        
    $errorClass[$errorFields[$x]] = 'inputField';
    }
    //Wenn das Formular abgeschickt wird $error False gesetzt bis fehler auftreten 
    if(isset($_POST['submit']))
    {
        
        
    $error FALSE;
        foreach(
    $errorFields as $key => $value)
        {
        
            if(empty(
    $_POST[$errorFields[$key]]))
            {
                
    $error TRUE;
                
    $errorClass[$value] = 'errorField';
                
    $errorPicture[$value] = '<img src="./images/achtung_klein.gif">&nbsp;';
            }
        
        }

    }
    // ist der Check erfolgreich Zeige den Text an
    if($_GET['check'] == "TRUE")
    {
        
    $errorMessage '<table width="100%" class="errorTable"><tr><td><b>
                                         Al OKles!</b><br><br>
        </td></tr></table><br>'
    ;
    }

    if(isset(
    $_POST['submit'])) 
    {        
    if(
    $error == TRUE)
        {
        
    $errorMessage '<table width="100%" class="errorTable"><tr><td>
        <img src="./images/achtung_gross.gif"></td><td><b>Achtung!</b><br>
        Es ist zu einem Fehler gekommen. Bitte f&uuml;llen Sie alle 
        farblich markierten Pflichtfelder aus.</td></tr></table><br>'
    ;
        }                    
                  else
        {                              
                
    // Alles ist in Ordnung
                // Daten können gespeichert werden
                
    header("Location: [url]http://[/url]{$_SERVER['HTTP_HOST']}/{$_SERVER['PHP_SELF']}?check=TRUE");
                
    // Seite neu laden und Hinweis anzeigen
        
    }

    so weit so gut
    funktioniert gut leere felder werden bemäkelt und erfolgsmeldung wird auch ausgegeben
    nun wolte ich aber noch das der Frimenname überprüft wird aus einer datenbank also habe ich mir eine funktion geschrieben

    PHP-Code:
    function mysql_frima_check(){
    $return ''
    //includieren der Connect Datei um eine Verbindung zur Datenbank herzustellen
    include("inc/mycon.php");
    //Abfrage in Check_sql speichern
    $check_sql "SELECT firma FROM $db_table WHERE firma LIKE '".$_POST['firmenname']."' LIMIT 0 , 1";
        
    // Mysql Query $check_sql ausführen und in check_user speichern
    $check_firma mysql_query$check_sql ) or die (mysql_error());
    $check_rows mysql_num_rows$check_firma ) or die (mysql_error());
     if( 
    $check_rows == 1
       {
       
    $return "TRUE";
       }
      else
        {
        
    $return "FALSE";
        }
    return 
    $return;

    und eingebunden habe ich sie folgender massen

    PHP-Code:
    if(isset($_POST['submit'])) 
    $fm_check mysql_frima_check();
    {        
    if(
    $error == TRUE)
        {
        
    $errorMessage '<table width="100%" class="errorTable"><tr><td>
        <img src="./images/achtung_gross.gif"></td><td><b>Achtung!</b><br>
        Es ist zu einem Fehler gekommen. Bitte f&uuml;llen Sie alle 
        farblich markierten Pflichtfelder aus.</td></tr></table><br>'
    ;
        }
        elseif ( 
    $fm_check == "TRUE"
            {
                        
    // wenn Vorhanden Error Message ausgeben
            
    $errorMessage '<table width="100%" class="errorTable"><tr><td>
                             <img src="./images/achtung_gross.gif"></td><td><b>Achtung!</b><br>
                             Diese Firma existert bereits bei uns in der Datenbank<br>Bitte wenden Sie sich an Uns um Nähere Infomationen zubekommen !</td></tr></table><br>'
    ;
            }
                        
            else
            {                              
                
    // Alles ist in Ordnung
                // Daten können gespeichert werden
                
    header("Location: [url]http://[/url]{$_SERVER['HTTP_HOST']}/{$_SERVER['PHP_SELF']}?check=TRUE");
                
    // Seite neu laden und Hinweis anzeigen
            
    }

    zu meinem eigentlichen Problem wenn felder leer sind zeigt er mir die felder richtig an
    ist die firma vorhanden in der datenbank bekomme ich die fehlermeldung angezeigt
    nur wenn alles in Ordung ist bekomme ich ne weisse seite ohne irgent welche fehlermeldungen schon alles versucht auch mit if else ect error_reporting(E_ALL);ini_set('display_errors', 1); sind an nur anzeigen tut er mir dann nichts

    Bitte helft einer verzweifelten seele

    mfg
    Zuletzt geändert von onkel_hotte; 15.11.2008, 16:55.

  • #2
    Re: Formular Probleme

    1. Code umbrechen
    2. Aufs wesentliche kürzen. Ich hab keine Lust mir das alles anzugucken.
    3. http://en.wikipedia.org/wiki/Sql_injection

    Kommentar


    • #3
      // Alles ist in Ordnung
      // Daten können gespeichert werden
      header("Location: <a href="http://" target="_blank">http://</a>{$_SERVER['HTTP_HOST']}/{$_SERVER['PHP_SELF']}?check=TRUE");
      // Seite neu laden und Hinweis anzeigen
      Schau mal im Handbuch nach header(), da kommt eine URL rein und kein a href Zeugs.

      Kommentar


      • #4
        Schau mal im Handbuch nach header(), da kommt eine URL rein und kein a href Zeugs.
        das macht das forum automatisch, wenn die option "URLs automatisch umwandeln" aktiviert ist. bin ich schon drauf reingefallen.

        peter
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Hallo da bin ich wieder
          Danke Lennard für den Tip mit der Sql Injektion
          Funtion geändert in
          PHP-Code:
          function mysql_frima_check(){
          $return ''
          //includieren der Connect Datei um eine Verbindung zur Datenbank herzustellen
          include("inc/mycon.php");
          //Abfrage in Check_sql speichern
          $query sprintf("SELECT firma FROM $db_table where firma='%s'"
                            
          mysql_real_escape_string($_POST['firmenname'])); 

          // Mysql Query $query ausführen und in check_firma speichern
          $check_firma mysql_query$query ) or die (mysql_error());    
              
          //Wir laden das Ergebniss der MySql Anfrage in ein Array
          $check_rows mysql_num_rows$check_firma ) or die (mysql_error());
              
          //$check_pw = mysql_fetch_array($check_rows) or die (mysql_error());
            
          if( $check_rows == 0) {
                                    
                                   
          $return "FALSE";
                                  }
                                  else
                                  {
                                   
          $return "TRUE";
                                  }
          return 
          $return;

          auch die ab frage geändert

          Allerdings noch immer das selbe Problem
          PHP-Code:
           if(isset($_POST['submit']))
              {         
              
                  if(
          $error == TRUE)
                          {
                              
          $errorMessage '<table width="100%" class="errorTable"><tr><td>
                                                               <img src="./images/achtung_gross.gif"></td><td><b>Achtung!</b><br>
                                                               Es ist zu einem Fehler gekommen. Bitte f&uuml;llen Sie alle 
                                                               farblich markierten Pflichtfelder aus.</td></tr></table><br>'
          ;
                          }
                          else
                          {
                              if (
          mysql_frima_check() == "FALSE" )
                          
                              {            
                              
          // Alles ist in Ordnung
                              // Daten k&ouml;nnen gespeichert werden
          header("Location: http://{$_SERVER['HTTP_HOST']}/{$_SERVER['PHP_SELF']}?check=TRUE");
                              
          // Seite neu laden und Hinweis anzeigen
                  
                              
          }
                              else 
                              {
                              
          // wenn Vorhanden Error Message ausgeben
                              
          $errorMessage '<table width="100%" class="errorTable"><tr><td>
                                               <img src="./images/achtung_gross.gif"></td><td><b>Achtung!</b><br>     Diese Firma existert bereits bei uns in der Datenbank<br>
          Bitte wenden Sie sich an Uns um Nähere Infomationen zubekommen !</td></tr></table><br>'
          ;
                              }    
                      
                          }
                  

          leider nich immer das selbe Problem das wenn alles simmt und die firma nicht vorhanden ist
          eine weisse seite angezeigt wird ohne irgent was drauf

          hoffe ihr könte mir auf die sprünge helfen
          Zuletzt geändert von onkel_hotte; 15.11.2008, 20:57.

          Kommentar


          • #6
            Nach mysql_num_rows() brauchst du kein "or die", denn $query ist o.k., sonst wäre das Script schon früher abgebrochen.

            Warum benutzt du eigentlich Strings für FALSE/TRUE und nicht die boolschen Konstanten?

            Nachdem du SQL-Injection schon ausgeschlossen hast, solltest du die Weiterleitung absichern. Im Moment könnte der Benutzer die Validierung überspringen, indem er selbst ?check=TRUE an die URL anhängt.

            Kommentar


            • #7
              Morgen zusammen

              @onemorenerd

              Ich hate schon alles ausprobiert 2 tage verzweifel ich schon dran das er irgent wie in die schleife springt und mir die meldung anzeigt

              ich hate es auch mit Bolean gemacht aber erst sich irgent wo zu verlaufen wo ichs nie er wartet hätet deswegen auch mein hilferuf hier im forum da ihr ja öfter zu tun habt als ich im moment das ich irgent was über sehe oder nen fehler ein gebaut habe den ich nicht erkenne
              so hate ich schon mal versucht aber dann wieder das selbe problem mit der weissen seite wenn alles richtig ist weil ich zuerst dachte es leigt an der funktion das ich da einen fehler gebaut hatte
              PHP-Code:
              if( $check_rows == 0) {
                                        
                                       return = 
              FALSE;
                                      }
                                      else
                                      {
                                       return = 
              TRUE;
                                      } 
              das mit der umleitung solte als nächstes in angriff genommen werden aber ich verzweifel noch immer an das es einfach nicht weiter geht wenn alles richtig ist

              mfg

              Kommentar


              • #8
                Variablen schreibt man immer noch mit $ am Anfang.

                Kommentar


                • #9
                  @h3ll

                  das retur ist schon richtig ohne $ davor return ist in funktionen eine ausstiegsmöglichkeit die funktion wird damit beendet und dann halt zurückgelifert was immer dahinter steht also in meine fall gibt die funktioon dann TRUE oder FALSE aus

                  Kommentar


                  • #10
                    Und return schreibt man immer noch ohne =

                    Kommentar


                    • #11
                      ja entschuldige hat das nur ab geändert um zu zeigen das ich es auch schon so probiert hate aber leider noch immer das geliche problem fehler werden angezeigt auch wenn der ein targ schon vohanden ist aber nicht wenn alles i o ist

                      Kommentar


                      • #12
                        Error Reporting eingeschaltet? Steht was im Fehler Log? Schon mit debugging probiert, also einzelne Variablen ausgegeben und überprüft?

                        Kommentar


                        • #13
                          Error reporting ist an nur anzeigen zu er nix die Variable versucht aus zu lesen kommt auch an wenn vorhanden ist
                          allerdings läuft er beim rest nicht durch
                          da habe ich keine anzeige ob da was ausgegeben wird

                          Kommentar


                          • #14
                            Ein Problem weniger

                            ich habe noch mal die funtion geändert und nun geht es
                            Vorher

                            PHP-Code:
                              if( $check_rows == ) {
                                        
                            $return "FALSE";
                                        }
                                        else
                                       {
                                        
                            $return =  "TRUE";
                                    } 
                            jetzt

                            PHP-Code:
                             if( $check_rows ) {
                                        
                            $return "TRUE";
                                        }
                                        else
                                       {
                                        
                            $return "FALSE";
                                    } 
                            keine Ahnung warum ich sich da tot gelaufen hat
                            aber so funktoniert es wenigstens

                            ein nur noch halb wahnsinniger

                            mfg
                            vom Onkel

                            Kommentar


                            • #15
                              Nach return gehört kein =

                              Kommentar

                              Lädt...
                              X