Forum » Server-Side scripting » Hoofdletters
:haha:
Berichten: 482
avatar
Offline Stuur privebericht
Ik ben opnieuw begonnen met een aanmeld script maar ik loop tegen het volgende aan

Stel ik maak een account demo aan dan kan ik het account Demo elke keer aan blijven maken met hoofdletter

ik heb hem door een strtolower gehaald maar nog blijft het probleem

Code | Selecteer Alles
minimaliseren
1
2
3
$query mysql_query("SELECT * FROM `players`");
                    
$players mysql_fetch_array($query);
                    
$players strtolower($players['player']);


Verder is dit het gedeelte om te checken of de speler al bestaat die heb ik ook door een strtolower gehaald maar nog werkt het niet

Code | Selecteer Alles
minimaliseren
1
2
3
elseif(strtolower($players) == $_POST['speler']){                        
                            echo
"Deze speler bestaat al";
                        }


Door een dubbele check moet het toch verholpen zijn lijkt me maar neej toch niet
03-10-2011 01:23
Dit topic is 281 keer bekeken door 43 verschillende leden
Reacties op: "Hoofdletters"
1 | 2 Volgende pagina
:haha:
Berichten: 482
avatar
Offline Stuur privébericht
Ik heb het nu opgelost via
Code | Selecteer Alles
minimaliseren
1
2
3
elseif(strtolower($players) == strtolower($_POST['speler'])){                        
                            echo
"Deze speler bestaat al";
                        }


Maar is der misschien een andere manier hoe ik het kan oplossen zodat het werkt?
03-10-2011 02:13
Rapifia Europe
Berichten: 3718
avatar
Online Stuur privébericht
Dit is de exacte manier, ik zou niet weten hoe je het anders wil/kan oplossen.
03-10-2011 07:21
Berichten: 130
avatar
Offline Stuur privébericht
Jawel,

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
$username mysql_real_escape_string(trim($_POST['speler']));

$name_check mysql_query("SELECT `id` FROM `players` WHERE `username`='".$username."' LIMIT 1") or die(mysql_error());

if(
mysql_num_rows($name_check) == 1){
echo
"De speler bestaat al!";
}


Het beste/veiligste manier?
03-10-2011 14:09
Berichten: 451
avatar
Offline Stuur privébericht
@t iMootje, dat is helemaal niet de beste manier. Het doet ook totaal iets anders.
03-10-2011 14:26
R. Jipping
Berichten: 1597
avatar
Offline Stuur privébericht
Welicht kun je, je hele aanmeld script is posten zodat we kunnen kijken waar het fout gaat?
03-10-2011 19:09
Berichten: 2123
avatar
Offline Stuur privébericht
De oplossing van TS werkt niet omdat TS vergeet door de resultset heen te loopen: De gebruikersnaam wordt nu alleen vergeleken met de eerste gebruikersnaam in de resultset.

Zie hiervoor mysql_fetch_array.

De oplossing van iMootje is in principe prima. Maar waarom is het veld player niet uniek?
03-10-2011 19:14
Berichten: 451
avatar
Offline Stuur privébericht
De oplossing van iMootje werkt niet prima.

Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
7
8
9
10
11
<?
// Hier dus even verbinding met de MySQL daemon maken

if(mysql_real_escape_string(trim("test")) == mysql_real_escape_string(trim("Test"))){
echo 
"1: Werkt niet";
}

if(
strtolower(trim("test")) == strtolower(trim("Test"))){
echo 
"2: Werkt wel";
}
?>
03-10-2011 20:49
Berichten: 2123
avatar
Offline Stuur privébericht
@JeroenH: Waar is dat op gebaseerd?

"By default, string comparisons are not case sensitive and use the current character set. The default is latin1 (cp1252 West European), which also works well for English."

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_equal
03-10-2011 21:00
Rapifia Europe
Berichten: 3718
avatar
Online Stuur privébericht
Jeroen bedoeld dat iMootje nergens de input naar lower strings veranderd, dus heb je er geen hond aan.
03-10-2011 21:02
Berichten: 451
avatar
Offline Stuur privébericht
Nou het hangt er vanaf of je het als query uitvoert of strings vergelijkt. In het eerste geval werkt het wel, in het 2e niet.
03-10-2011 21:03
Reageer op: "Hoofdletters"
1 | 2 Volgende pagina
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden