Gross / Kleinschreibung bei mySQL abfrage

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

  • Gross / Kleinschreibung bei mySQL abfrage

    Ich bin gerade an einem Login! Nun habe ich aber bei der Registrierungsseite ein Problem, bei dem ich nirgendwo eine Lösung gefunden habe!

    Nachfolgend seht ihr die mySQL abfrage, die überprüft, ob der Username bereits verwendet wird! Leider ist es aber so, dass wenn der username "TESTUSER" schon vergeben ist, man sich noch mit dem Namen "testuser" oder TeStUsEr" etc. registrieren kann, was ich aber verhindern will.


    PHP-Code:
    $query = @mysql_query("SELECT user FROM users WHERE user= '".$_POST['username']."'");
    $result = @mysql_fetch_array($query);
                    
    if(
    $_POST['username'] == $result['user']) {

    echo 
    '<p align="center">Sorry, dieser Benutzername ist leider schon vergeben!<br><br><a href="neu.php">Zurück</a></p>';
    die;

    Ich hoffe, ihr könnt mir helfen...

    mfg simu

  • #2
    Hi,

    Einfach so vergleichen:

    PHP-Code:
    strtolower($name_new) == strtolower($name_db

    http://de3.php.net/strtolower

    Kommentar


    • #3
      http://dev.mysql.com/doc/mysql/en/BLOB.html
      Die Zeit hat ihre Kinder längst gefressen

      Kommentar


      • #4
        wenn in der datenbank testUseR steht und der benutzer TESTuseR eingibt, dann findet dein select doch trotzdem einen treffer oder?

        warum zählst du also nicht einfach die anzahl der datensätze und bei einem treffer gibst du die meldung aus?
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Vielen dank, nun funktioniert es!

          Ich habs nun so gemacht:

          PHP-Code:
          $query = @mysql_query("SELECT user FROM users WHERE user= '".strtolower($_POST['username'])."'");
          $result = @mysql_fetch_array($query);
                          
          if(
          strtolower($_POST['username']) == $result['user']) {

          echo 
          '<p align="center">Sorry, dieser Benutzername ist leider schon vergeben!<br><br><a href="neu.php">Zurück</a></p>';
          die;

          Und wenn alles korrekt ist, dann werden die daten in die datenbank geschrieben ( natürlich der username mit strtolower() :-)

          Ist aber schn ein bisschen ungewöhnlich, dass es die gross und kleinbuchstaben unterscheidet, ich dachte bei SQL spielt gross und kleinschreibung keine rolle!?

          Kommentar


          • #6
            Original geschrieben von mrhappiness
            wenn in der datenbank testUseR steht und der benutzer TESTuseR eingibt, dann findet dein select doch trotzdem einen treffer oder?

            warum zählst du also nicht einfach die anzahl der datensätze und bei einem treffer gibst du die meldung aus?
            Weil mysql zwischen Groß und Kleinschreibung unterscheidet?
            Er hat = genommen, und nicht like, wenn dann muß er es so schreiben

            "SELECT user FROM users WHERE LOWER(user)= '".strtolower($_POST['username'])."'
            TBT

            Die zwei wichtigsten Regeln für eine berufliche Karriere:
            1. Verrate niemals alles was du weißt!


            PHP 2 AllPatrizier II Browsergame

            Kommentar


            • #7
              Code:
              SELECT 'A' = 'a' ohne_BINARY, BINARY 'A' = 'a' mit_BINARY
              ergibt bei mir (mysql: 3.23.58):
              Code:
              ohne_BINARY | mit_BINARY
                        1 |          0
              wenn er den benutzernamen in einem BLOB-feld abgelegt hat, dann gilt das natürlich nicht, die unterscheiden zwischen groß- und kleinschreibung, aber dann gehört's ihm auch nicht anders...
              Zuletzt geändert von mrhappiness; 19.10.2004, 22:46.
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                Also wenn ich selber in der DB einen Benutzernamen eingebe, der grossbuchstaben enthält, dann geht es mit keiner dieser lösungen! Aber ich habs nun ja so gemacht, dass bei der registrierung gar kein grossgeschriebener benutzername in die datenbank geschrieben werden kann!

                Kommentar


                • #9
                  Was ja aber auch nicht das wahre ist?!

                  Bei mir meldet SQL:
                  Duplicate entry 'matze' for key 2
                  Duplicate entry 'MaTzE' for key 2
                  Einfach
                  Type Cardinality
                  user UNIQUE
                  den Typ UNIQUE machen ...


                  Dann beim User erstellen schauen ob es erfolgreich war oder nicht!

                  Kommentar


                  • #10
                    Irgendwie verstehe ich diese alberne Diskussion hier nicht ...[list=1][*]Wurde ein VARCHAR-Feld nicht explizit mit dem Attribut BINARY deklariert, so ist es nicht case-sensitive.[*]Wenn man verhindern will das Werte doppelt vergeben werden, so überlässt man dieses der Datenbank indem man 'nen UNIQUE-Key drauflegt und hört mit diesen schwachsinnigen Stümpereien hier auf.[*]Bestenfalls um eine "vernünftige" Fehlermeldung auszugeben kann man vorher ermitteln, ob ein entsprechender Wert bereits in der Datenbank steht ... dann aber bitte mit einem einfachen SELECT COUNT(*) ... und nicht anders ... [*]Wenn eine Abfrage ... dann sollte man auch berücksichtigen das man im Internet immer unter Race-Conditions arbeitet ... also: LOCKING ... ![/list=1]
                    carpe noctem

                    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                    Kommentar


                    • #11
                      Oh, vielen dank für die nicht albernen Vorschläge

                      Es sind leider nicht alle so klug wie du und wenn du es hier albern findest, dann musst du ja gar nix schreiben, geschweige denn lesen...

                      Kommentar


                      • #12
                        Original geschrieben von simu_g
                        Es sind leider nicht alle so klug wie du und wenn du es hier albern findest, dann musst du ja gar nix schreiben, geschweige denn lesen...
                        Na ... da würde ich mal mal gerne hören welcher Vorschlag davon nicht so klug war ... !
                        Ich denke das ist nur ein weiterer Versuch deinerseits Dünnpfiff zu reden ... !
                        Alleine aufgrund Deiner Frage wage ich zu bezweifeln, dass Du auch nur ansatzweise die Fähigkeit besitzt meine Antwort beurteilen zu könne ...

                        ... scheiss Trolls hier heute wieder ... !
                        carpe noctem

                        [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                        [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                        Kommentar


                        • #13
                          Du bist doch der trottel!

                          Erstens schreibst du so dass es ne alberne diskussion ist und dann schreibst du grossgekotzt deine vorschläge, so dass es ein nicht profi wie du sicher nicht checkt...

                          Hast du das schon mal gelesen?:
                          Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis!

                          Kommentar


                          • #14
                            Das ist eine sonderbare Definition eines Trottels die Du da hast ...

                            ... anyway ... dafür das Du so "cerebral defizitär" ausgestattet bist ... dafür kann ich nichts ... meine Vorschläge waren sehr leicht verständlich ...
                            carpe noctem

                            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                            Kommentar

                            Lädt...
                            X