Fehler in meinem Registrationsscript.. aber wo?!

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

  • Fehler in meinem Registrationsscript.. aber wo?!

    Hihiho,
    schreib grad an nem registration script, den fehler erläuter ich gleich, such jetzt schon seit stunden nach dem fehler und hab probiert und probiert, aber immer wieder der gleiche fehler...

    prüfen ob nicht-optionale felder ausgefüllt sind: geht
    prüfen ob email addys übereinstimmen: geht
    prüfen ob passwörter übereinstimmen: geht
    prüfen ob username schon in der db ist: geht ab und zu
    prüfen ob email schon in der db ist: geht ab und zu

    aaalso, vorher hab ich das strtoupper noch ned drinne gehabt, da konnt ich nüscht eintragen, also hab ich inna phpmyadmin nen datensatz eingetragen, dann konnt ich den gleichen datensatz nochmal eintragen bloß klein geschrieben, dann ging alles wunderbar... wenn ich dann versuche nen neuen datensatz einzutragen, dann wird plötzlich alles abgehackt (die stelle ab nem bestimmten teil vom code... )

    also die frage lautet, wie muss ich den quelltext genau schreiben um zu prüfen ob email oder username schon in der datenbank vorhanden sind, egal ob groß oder klein geschrieben z.b. Sandman oder sandman oder SaNdMaN

    PHP-Code:
    <?php

            
    if($send == "Registrieren")
        {
            
            if(
    filled($username) && filled($email1) && filled($email2) && filled($pass1) && filled($pass2) == true)
            {

                if(
    agree($email1$email2) == true)
                {

                    if(
    agree($pass1$pass2) == true)
                    {
    // problemteil
                        
    connect();

                        
    $query mysql_query("SELECT * FROM `ct_userdetails` WHERE `username` = '".$_POST['username']."'");
                        
    $result mysql_fetch_array($query) OR DIE( mysql_error() );    

                        
    $qry mysql_query("SELECT * FROM `ct_userdetails` WHERE `email` = '".$email1."'");
                        
    $rslt mysql_fetch_array($qry) OR DIE( mysql_error() );    

                        echo 
    strtolower($_POST['username']);
                        echo 
    strtolower($result['username']);
                        echo 
    strtolower($email1);
                        echo 
    strtolower($rslt['email']);

                        if(
    strtolower(($_POST['username']) == strtolower($result['username'])) OR (strtolower($email1) == strtolower($rslt['email'])))
                        {
                            
    $Srv_msg "Benutzer oder Email-Adresse existiert schon.";
                        }

                        elseif(
    $result['username'] == "" AND $rslt['email'] == "")
                        {

                            if(
    filled($day) && filled($month) && filled($year))
                            {
                                
    $birthday $day "." $month "." $year;    
                            }     
        
                            
    connect();
                                   
    mysql_query("INSERT INTO `ct_userdetails` (`id`,
                                                     `username`,
                                                     `email`,
                                                     `passwort`,
                                                     `name`,
                                                     `beruf`,
                                                     `geburtstag`,
                                                     `wohnort`,
                                                     `bezirk`,
                                                     `plz`,
                                                     `msn`,
                                                     `icq`,
                                                     `aim`,
                                                     `yim`,
                                                     `skype`,
                                                     `beschreibung`,
                                                     `signatur`,
                                                     `reg_datum`) 
                                          VALUES ('',
                                             '"
    .$username."',
                                               '"
    .$email1."',
                                               '"
    .$pass1."',
                                               '"
    .$name."',
                                               '"
    .$beruf."',
                                               '"
    .$birthday."',
                                               'Berlin',
                                               '"
    .$bezirk."',
                                               '"
    .$plz."',
                                               '"
    .$messenger_msn."',
                                               '"
    .$messenger_icq."',
                                               '"
    .$messenger_aim."',
                                               '"
    .$messenger_yim."',
                                               '"
    .$messenger_skype."',
                                               '"
    .$beschreibung."',
                                               '"
    .$signatur."',
                                               '"
    .timestamp()."')")
            
                                                 OR DIE ( 
    mysql_error() );
        
                            
    $Srv_msg "Die Registrierung war erfolgreich.";
                        }             
                            

                    }
        
                    elseif(
    agree($pass1$pass2) == false)
                    {
                        
    $Srv_msg "Passw&ouml;rter stimmen nicht &uuml;berein.";
                    }

                } 

                elseif(
    agree($email1$email2) == false)
                {
                    
    $Srv_msg "Email-Adressen stimmen nicht &uuml;berein.";
                }

            } 

            elseif(
    filled($username) OR filled($email1) OR filled($email2) OR filled($pass1) OR filled($pass2) == false)
            { 
                
    $Srv_msg "Bitte f&uuml;lle alle Felder aus die mit einem Stern gekennzeichnet sind."
            }

        }
    ?>
    danke schonmal im vorraus, hoffe der code ist euch ned zu lang, aber ich hielt es für besser ihn "komplett" (htmlteil, funktionen nicht inbegriffen) rein zu posten...

    funktionen:
    filled();
    connect();
    agree();
    Zuletzt geändert von Sandmancw; 08.09.2006, 16:06.

  • #2
    Re: Fehler in meinem Registrationsscript.. aber wo?!

    Original geschrieben von Sandmancw
    danke schonmal im vorraus, hoffe der code ist euch ned zu lang
    vor allen dingen ist er zu breit - forenregeln beachten.

    strtolower brauchst du nicht, dass macht mysql schon. du machst eine abfrage auf user oder email, wenn dir einer oder mehrere datensätze (dürften ja maximal zwei sein) zurückgeliefert werden, weißt du, ob etwas schon in der db vorhanden ist.

    dann solltest du dein if - elseif überdenken, du fragst ja alles doppelt ab.

    Kommentar


    • #3
      ne, mysql macht das ned... frag mich nich warum... machts einfach ned...
      deswegenbrauch ich strtolower... meine eingabe war klein, die von der datenbank war groß... trotzdem nen eintrag erfolgt... hatte ich 2 mal sandman drinne stehen...

      das mit den if/else is mir klar, kann die auch zusammenfassen, aber erstmal möcht ich ne lösung für mein prob finden, weil ich find einfach end heraus, worans liegen könnte... (was auchd arann liegen kann, dass ich seit 22 stunden wach bin, aber naja...)

      Kommentar


      • #4
        Original geschrieben von Sandmancw
        ne, mysql macht das ned... frag mich nich warum... machts einfach ned...
        deswegenbrauch ich strtolower... meine eingabe war klein, die von der datenbank war groß... trotzdem nen eintrag erfolgt...
        Ob case-sensitive verglichen wird, hängt bei MySQL vom Feldtyp ab.

        Für die TEXT-Datentypen erfolgt der Vergleich per Default case-insensitive,
        für die BLOB-Typen case-sensitive.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          sind VARCHAR felder utf8_blabla_ci dingsbums hab irgendwo gelesen, dass das dann geht, aber geht trotzdem ned ^^

          Kommentar


          • #6
            dann kannst du mal die klammern beim strtolower-if überprüfen, der erste ausdruck dürfte immer wahr sein.

            aber wie wahsaga schon geschrieben hat, würde ich die feldtypen ändern.

            Kommentar


            • #7
              das problem liegt viel mehr darin, dass der etxt abgehackt wird ... aber bisher danke für die hilfe ^^

              Kommentar


              • #8
                weiss jetzt worans lag... wegen dem or dir wurde alles abgehackt, denn die anweisung sucht nen usernamen, wenn er vorhanden ist lebt se weiter und wenn der username nicht in der db ist stirbt se,,, aber wie kann ich das umgehen?! weil ich den error befehl schon gern drinne hätte ^^

                $query = mysql_query("SELECT * FROM `ct_userdetails` WHERE `username` = '".$username."' OR `email` = '".$email1."'");
                $result = mysql_fetch_array($query);

                Kommentar


                • #9
                  Original geschrieben von Sandmancw
                  denn die anweisung sucht nen usernamen, wenn er vorhanden ist lebt se weiter und wenn der username nicht in der db ist stirbt se,,,
                  das denke ich stimmt nicht. Die Abfrage 'stirbt' nur dann, wenn sie einen Fehler enthält. Der Tatbestand, dass kein passender Datensatz gefunden wurde, heißt nicht, dass sie fehlerhaft ist also stirbt. In diesem Fall gibt die Funktion mysql_fetch_array() den Wert FALSE zurück (s. php-man). Also solltest du auch das hier
                  PHP-Code:
                  elseif($result['username'] == "" AND $rslt['email'] == ""
                  besser auf TRUE/FALSE testen als auf einen leeren string.

                  MySQL ist wahrscheinlich gar nicht der Grund bzgl. der Groß-/Kleinschreibung, sondern php, da du - zusätzlich zu der sql abfrage, ob ein user oder eine email schon existiert - auch nochmal eine php abfrage machst, die die schreibung nicht ignoriert. Wie gesagt besser auf TRUE testen...Sie dazu auch strcasecmp
                  Zuletzt geändert von ZombieChe; 09.09.2006, 09:05.

                  Kommentar


                  • #10
                    sieht jetzt eh ganz anders aus... dumm, dass OR und AND aus der digitaltechnik übernommen sind... dachte nen OR heisst dann auch "entweder das oder das muss stimmen/ nicht stimmen" aber vorhin hab ich festgestellt, dass das nich so is...

                    script funktioniert, sieht nich mehr so aus wie vorher... sind keine fehler mehr drinne... wollte nur sagen was ich beim fehlersuchen festgestellt habe... wegen dem or die wurde der code abgehackt und als ichs raus genommen habw ar alles ok... der mysql_error() wurde ned mal angezeigt, wenn ich aber ne fehlermeldung eingegeben habe, dann wurde diese auch angezeigt...

                    Kommentar


                    • #11
                      wofür gibts XOR?

                      Kommentar


                      • #12
                        Original geschrieben von Sandmancw
                        dumm, dass OR und AND aus der digitaltechnik übernommen sind... dachte nen OR heisst dann auch "entweder das oder das muss stimmen/ nicht stimmen" aber vorhin hab ich festgestellt, dass das nich so is...
                        Na da hat aber einer nicht richtig aufgepasst, denn auch
                        in der "digitaltechnik" bedeutet "A oder B" dass entweder A wahr ist
                        oder B wahr ist oder A und B wahr sind.

                        Wie vom vorposter bereits gesagt gibt es xor für exclusives
                        oder. Das "normale" oder ist inklusiv.

                        greets
                        (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                        Kommentar


                        • #13
                          Ist hier denn keiner Mehr in der Lage Quelltext umzubrechen?
                          Webdesign und Webentwicklung - Plunix.de

                          Kommentar

                          Lädt...
                          X