anmelde formular checken...

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

  • anmelde formular checken...

    Hallo, ich baue grade ein Anmelde Formular für meine Besucher...

    Meine Vorstellungen waren (sind)

    Eingabefeld
    - Username
    - User Email
    - User Passwort
    - User Passwort2

    Ich habe ein paar überprüfungen im script:

    Name, es wird (oder soll) nachgeschaut werden ob der Username schon vergeben ist. Ich mache das mit der BINARY Funktion also ist es egal ob Blubb oder blubb eingegeben wird.

    Email, es wird geschaut ob die Email Adresse ein @ Zeichen enthält

    Passowort, es wird geschaut ob die eingabe von Passowort und passwort2 die gleichen sind, wenn ja wird geschaut ob das passwort mehr als 5 zeichen hat.

    Bei allen Anweisungen (ich benutze die if anweisung) wird im fehlerfall der Variable $error ein wert zugewiesen z.B. name, email oder passwort

    zum Schluss noch eine anweisung um zu checken ob $error nicht! '' nichts ist wenn ja denn öffnet er die fehler seite und wenn alles sauber ist denn speichert er die eingaben in der DB.

    Extras:

    Das passwort wird mit md5() in die DB gespeichert
    und bei allen eingaben werden HTML und PHP Tags gelöscht.
    ich verwende Smarty!

    Nun hab ich leider einen kleinen hänger...
    und komme nicht mehr klar

    Könntet ihr euch das Script mal anscheuen, und ein kleines Feedback abgeben? Irgendwo ist ein Fehler ich glaube bei der "Ob user schob existiert" abfrage.

    Mein Script:

    PHP-Code:
    <?php
        
    require_once( '../include/smarty/Smarty.class.php' );
        require_once( 
    '../include/db_connect.php' );
        
    $smarty                  = new Smarty();
        
    $smarty->template_dir    'smarty/templates';
        
    $smarty->compile_dir     'smarty/cache';
        
    /*Speichert Benutzerdaten in Variablen*/
        
    $name        =    $_POST['name'];
        
    $passwort    =    $_POST['passwort'];
        
    $passwort2    =    $_POST['passwort2'];
        
    $email        =    $_POST['email'];
        
    /*Entfernt HTML- und PHP-Tags aus einem String*/
        
    $name        =    strip_tags($name);
        
    $passwort    =    strip_tags($passwort);
        
    $passwort2    =    strip_tags($passwort2);
        
    $email        =    strip_tags($email);
        
        
    $sql "SELECT BINARY name FROM mitglieder WHERE name='$name';";
        
    $name mysql_query($sql);
        if (
    $name    ==    '') {
            
    $error    =    'name';
        }
        
    /*Findet das erste Vorkommen eines Strings (hier das at @ zeichen)*/
        
    if (preg_match("/@/i"$email)) {
            
    $email    =    $email;
        } 
            else 
        {
               
    $error    =    'email';
        }
        
    /*Ermitteln der String-Länge*/
        
    if ( $passwort    !=    $passwort2) {
            
    $error    =    'passwort';
        }
        
    $passwort_laenge    =    strlen($passwort);
        if(
    $passwort_laenge 5) {
            
    /*Errechnet den MD5-Hash eines Strings*/
            
    $passwort    =    md5($passwort);
        }
        if( 
    $error != '' ) {
            
    $smarty->display'registrieren_error.tpl' );
        }
            else
        {
            
    $sql    =    "INSERT INTO mitglieder (
                                name, email, passwort
                            ) VALUES (
                                '
    $name', '$email', '$passwort'
                            )"
    ;
            
    $neuer_user    =    mysql_query($sql);
            
            
    $smarty->display'registrieren.tpl' );
        }
    ?>

  • #2
    PHP-Code:
     /*Speichert Benutzerdaten in Variablen*/  
    $name        =    $_POST['name'];      
    $passwort    =    $_POST['passwort'];     
    $passwort2    =    $_POST['passwort2'];      
    $email        =    $_POST['email'];      

    /*Entfernt HTML- und PHP-Tags aus einem String*/  
    $name        =    strip_tags($name);      
    $passwort    =    strip_tags($passwort);
    $passwort2    =    strip_tags($passwort2);  
    $email        =    strip_tags($email); 
    Habe jetzt nur mal kurz drübergeschaut deinen Fehler kann ich dir nicht sagen aber ein Tip habe ich.

    Wenn du was in der Datenbank schreibst solltest du immer mysql_real_escape_string verwenden, da mann sonst eine SQL Abfrage einschleusen kann.
    Also ich hätte es jetzt bei dir mit allen direkt so gemacht:

    PHP-Code:
    $name        =    mysql_real_escape_string(strip_tags($_POST['name'])); 
    Zuletzt geändert von Blitzschlag; 02.03.2008, 17:01.

    Kommentar


    • #3
      Re: anmelde formular checken...

      Original geschrieben von WebNem
      Könntet ihr euch das Script mal anscheuen, und ein kleines Feedback abgeben? Irgendwo ist ein Fehler ich glaube bei der "Ob user schob existiert" abfrage.
      ein fehler? dein script ist verbuggt von vorne bis hinten - das wäre mein kleines feedback

      zu deiner frage, hast du mal im manual nachgesehen, was mysql_query() bei einem SELECT zurückliefert?

      Kommentar


      • #4
        Re: Re: anmelde formular checken...

        Original geschrieben von 3DMax
        ein fehler? dein script ist verbuggt von vorne bis hinten - das wäre mein kleines feedback

        zu deiner frage, hast du mal im manual nachgesehen, was mysql_query() bei einem SELECT zurückliefert?
        Ja hab selber grade gesehen das es der reinste BugMac ist...
        echt peinlich!

        aber jetzt läuft alles so wie es laufen soll.

        Ich würde mich freuen wenn ihr jetzt wo es meiner ansicht her sauber ist das script noch mal anschauen könnt und evtl. verbesserungs vorschlge schreibt.

        Ich will es auch so sicher wie möglich haben...

        PHP-Code:
        <?php
            
        require_once( '../include/smarty/Smarty.class.php' );
            require_once( 
        '../include/db_connect.php' );
            
        $smarty                  = new Smarty();
            
        $smarty->template_dir    'smarty/templates';
            
        $smarty->compile_dir     'smarty/cache';
            
        /*Speichert Benutzerdaten in Variablen*/
            
        $name        =    $_POST['name'];
            
        $passwort    =    $_POST['passwort'];
            
        $passwort2    =    $_POST['passwort2'];
            
        $email        =    $_POST['email'];
            
        /*Entfernt HTML- und PHP-Tags aus einem String*/
            
        $name        =    mysql_real_escape_string(strip_tags($name));
            
        $passwort    =    mysql_real_escape_string(strip_tags($passwort));
            
        $passwort2    =    mysql_real_escape_string(strip_tags($passwort2));
            
        $email        =    mysql_real_escape_string(strip_tags($email));
            
        /***************************************************************
        ***    Die eingabe für den gewünschten Usernamen wird überprüft. **
        ****************************************************************/    
            
        if ($name == '') {
                
        $name    =    'error';
            }
                else
            {
                
        /*Überprüft ob der eingegebene Username schon vergeben ist*/
                
        $sql "SELECT BINARY name FROM mitglieder WHERE name='$name'";
                
        $result mysql_query($sql);
                while(
        $row mysql_fetch_object($result)) {
                    if (
        $name != $row->name) {
                        
        $name    =    'error';
                    }
                }
            }
            
        /***************************************************************
        ***    Die eingabe für den gewünschten Usernamen wird überprüft. **
        ****************************************************************/    
            
        if ($email == '') {
                
        $email    =    'error';
            }
                else
            {
                if (
        preg_match("/@/i"$email)) {
                    
        $email $email;
                }
                    else
                {
                    
        $email    =    'error';
                }
            }
            if (
        $email != 'error') {
                
        $sql "SELECT BINARY email FROM mitglieder WHERE email='$email'";
                
        $result mysql_query($sql);
                while(
        $row mysql_fetch_object($result)) {
                    if (
        $email != $row->email) {
                        
        $email    =    'error';
                    }
                }
            }
            
        /***************************************************************
        ***    Die eingabe für den gewünschten Usernamen wird überprüft. **
        ****************************************************************/    
            /*Ermitteln der String-Länge*/
            
        if ($passwort    !=    $passwort2) {
                
        $passwort    =    'error';
            }
            if (
        $passwort != 'error') {
                
        $passwort_laenge    =    strlen($passwort);
                if (
        $passwort_laenge 5) {
                    
        $passwort    =    md5($passwort);
                }
            }
            if (
        $name == 'error' or $email == 'error' or $passwort == md5('')) {
                    
        $smarty->display'registrieren.tpl' );
                }
                    else
                {
                    
        $sql "INSERT INTO mitglieder (name, email, passwort) VALUES ('$name', '$email', '$passwort')";
                    
        $neuer_user    =    mysql_query($sql);
                }
        ?>
        Also was sagt ihr zum Aufbau? Zur sicherheit? und zum Style?

        Kommentar


        • #5
          Re: Re: Re: anmelde formular checken...

          Original geschrieben von WebNem
          Also was sagt ihr zum Aufbau? Zur sicherheit? und zum Style?
          nicht wirklich glücklich und stark verbesserungswürdig.

          ich nenne nur mal einige punkte.

          für die fehler solltest du dir eine separate variable definieren, am besten ein array - dort sammelst du dann alle feher.

          SELECT BINARY (case-sensitiv) bewirkt genau das gegenteil von dem, was du vor hast .
          fehlgeschlagene querys solltest du abfangen.
          du brauchst auch nicht durch das result zu iterieren - mysql_num_rows() reicht.
          mysql_real_escape_string() auf die variablen erst anwenden, wenn diese in die datenbank eingetragen werden.

          strip_tags() auf die eingangsparameter würde ich nicht benutzen - auf alle fälle nicht für die passwörter. dafür aber trim()

          lustige zuweisungen wie $email = $email; kannst du dir sparen

          Kommentar

          Lädt...
          X