/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Store/små bogstaver logon /SQL ?
Fra : Lars Lindgren


Dato : 22-02-06 16:04

I forbindelse med et login system, har jeg et problem nemlig at username og
password accepteres
uanset om det er skrevet med store eller små bogstaver.

Oplysningerne indtastes i en form og valideres derefter mod de tilladte
brugere/password i en MySQL-database.

Hvorfor skelnes der ikke mellem store og små bogstaver ???

----

$test1 = $HTTP_POST_VARS['user'];
$test2 = $HTTP_POST_VARS['pass'];

$result = mysql_query("SELECT COUNT(user) AS numfound FROM users
WHERE user='$test1' AND pass='$test2'") or die(mysql_error());

$result_ar = mysql_fetch_array($result);

if ($result_ar['numfound'] < 1)
{
header('location: index.php?error=1');
exit;
}

--

Mvh. Lars



 
 
Geert Lund (22-02-2006)
Kommentar
Fra : Geert Lund


Dato : 22-02-06 18:01

Lars Lindgren wrote:

> Hvorfor skelnes der ikke mellem store og små bogstaver ???

MySQL er som udgangspunkt caseinsensitive - derfor...

Leonard (22-02-2006)
Kommentar
Fra : Leonard


Dato : 22-02-06 18:42

"Lars Lindgren" <larslindgren@vip.cybercity.dk> wrote:

>Hvorfor skelnes der ikke mellem store og små bogstaver ?

Dit passwordfelt skal være binært i databasen, så skelner den mellem
store og små bogstaver.

--
Leonard
http:/leonard.dk/hjemmeside/

Dan Storm (22-02-2006)
Kommentar
Fra : Dan Storm


Dato : 22-02-06 21:17

Lars Lindgren skrev:
> Hvorfor skelnes der ikke mellem store og små bogstaver ???
For at MySQL bedre kan parse dine kommandoer er MySQL som standard case
insensitive.

Løs dit problem ved at gøre dine brugere den tjeneste at kryptere dit
password med md5. På den måde behøver du ikke ændre MySQL's måde at
parse på og samtidig behøver dine brugere ikke at spekulere på om du
eller andre med adgang til databasen kan se deres kodeord som de måske
benytter til andre vigtige ting som f.eks. netbank eller lignende!
(Dette er ikke en opfordring til at starte en OT debat om hvorvidt der
skal tages højde for det idet folk bare kan lære at bruge 74 forskellige
passwords!)

md5('mitkodeord'); er ikke det samme som md5('miTkodeord');

Simpelt og nemt.


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!

Leif Neland (23-02-2006)
Kommentar
Fra : Leif Neland


Dato : 23-02-06 10:21

Lars Lindgren wrote:
> I forbindelse med et login system, har jeg et problem nemlig at
> username og password accepteres
> uanset om det er skrevet med store eller små bogstaver.
>
> Oplysningerne indtastes i en form og valideres derefter mod de
> tilladte brugere/password i en MySQL-database.
>
> Hvorfor skelnes der ikke mellem store og små bogstaver ???

Det gør Mysql ikke som standard på tekst. Brug BINARY-keywordet.

> $result = mysql_query("SELECT COUNT(user) AS numfound FROM users
> WHERE user='$test1' AND pass='$test2'") or die(mysql_error());

WHERE BINARY user='$test1' AND BINARY pass='$test2'


Se http://dev.mysql.com/doc/refman/5.0/en/charset-binary-op.html

Leif



Lars Lindgren (23-02-2006)
Kommentar
Fra : Lars Lindgren


Dato : 23-02-06 14:01

Takker for alle svar !

Hvordan nu med krypteringen (md5) af passwordet - hvad nu hvis brugeren så
glemmer det og skal have det tilsendt igen pr. mail ?

Er det ikke sådan med md5 at man kun kan anvende det den ene vej og altså
ikke genskabe password udfra md5 sum?

med venlig hilsen
Lars



Leonard (23-02-2006)
Kommentar
Fra : Leonard


Dato : 23-02-06 14:15

"Lars Lindgren" <larslindgren@vip.cybercity.dk> wrote:

>Hvordan nu med krypteringen (md5) af passwordet - hvad nu hvis brugeren så
>glemmer det og skal have det tilsendt igen pr. mail ?

Så har du en udfordring i at lave et system, der generer et nyt
kodeord til brugeren og sender dette.

>Er det ikke sådan med md5 at man kun kan anvende det den ene vej og altså
>ikke genskabe password udfra md5 sum?

Jo.

--
Leonard
http:/leonard.dk/hjemmeside/

Ove Lie (23-02-2006)
Kommentar
Fra : Ove Lie


Dato : 23-02-06 15:15

"Lars Lindgren" <larslindgren@vip.cybercity.dk> skrev i melding
news:43fc7d50$0$78280$157c6196@dreader1.cybercity.dk...
> I forbindelse med et login system, har jeg et problem nemlig at username
og
> password accepteres
> uanset om det er skrevet med store eller små bogstaver.
>
> Oplysningerne indtastes i en form og valideres derefter mod de tilladte
> brugere/password i en MySQL-database.
>
> Hvorfor skelnes der ikke mellem store og små bogstaver ???
>
> ----
>
> $test1 = $HTTP_POST_VARS['user'];
> $test2 = $HTTP_POST_VARS['pass'];
>
> $result = mysql_query("SELECT COUNT(user) AS numfound FROM users
> WHERE user='$test1' AND pass='$test2'") or die(mysql_error());
>
> $result_ar = mysql_fetch_array($result);
>
> if ($result_ar['numfound'] < 1)
> {
> header('location: index.php?error=1');
> exit;
> }

Her kan du dersom du ikke bare teller, men henter faktiske data, kontrolere
dem mot inntastet data, for php er casesensitive...........

if(resultat_ar['navn']!=test1){
header('location: index.php?error=1');
exit;
}

Ikke teste.........


Så slipper du å gå md5sum() eller andre.

-Ove



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste