Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

PASSWORD() trøbbel

0 views
Skip to first unread message

karl...@gmail.com

unread,
Sep 8, 2008, 8:19:54 AM9/8/08
to
Hei igjen.
Jeg tenkte jeg skulle la være å lagre passord i ren tekst i databasen.
Derfor bruker jeg PASSWORD() til å "kryptere" passordet i databasen.

PHP koden ser slik ut:
$sql .= " AND passord = PASSWORD('" . $_POST['passord'] . "') ";

I mysql tabellen ser det slik ut:
+-----+------------+------------+
| kid | brukernavn | passord |
+-----+------------+------------+
| 4 | Karl | *0F49D25CF |
+-----+------------+------------+

Jeg kan iklke logge inn i det hele tatt ved bruk av PASSWORD.

Jeg bruker PHP 5.2.6
og Mysql 5.0.51b

Er det noe feil i linja $sql=...?

Karl

Joachim Mæland

unread,
Sep 8, 2008, 9:15:54 AM9/8/08
to
On Mon, 08 Sep 2008 05:19:54 -0700, karlarneg wrote:

> PHP koden ser slik ut:
> $sql .= " AND passord = PASSWORD('" . $_POST['passord'] . "') ";

[..]


> Er det noe feil i linja $sql=...?

Ja. Echo eller print $sql så kanskje du ser det du også. Noe du forøvrig
burde ha gjort før du startet forige tråd...


--
Regards/mvh Joachim Mæland

If everything seems under control, you're just not going fast enough.
-Mario Andretti

karl...@gmail.com

unread,
Sep 8, 2008, 10:01:45 AM9/8/08
to
On 8 Sep, 15:15, Joachim Mæland <jm-n...@profine.net> wrote:
> On Mon, 08 Sep 2008 05:19:54 -0700, karlarneg wrote:
> > PHP koden ser slik ut:
> > $sql .= " AND passord = PASSWORD('" . $_POST['passord'] . "') ";
> [..]
> > Er det noe feil i linja $sql=...?
>
> Ja. Echo eller print $sql så kanskje du ser det du også. Noe du forøvrig
> burde ha gjort før du startet forige tråd...
>

Ja, jeg har prøvd det, men ser ikke feilen.

Kjører jeg SELECT * FROM brukere WHERE passord = PASSWORD("123hka1");
i mysql-klienten returnerer det intet resultat...
Koden er nøye fulgt og kontrollert med eksemplet i boka "Beginning
PHP5, Apache, MySQL, Webdevelopment"

Karl

Joachim Mæland

unread,
Sep 8, 2008, 2:05:54 PM9/8/08
to
On Mon, 08 Sep 2008 07:01:45 -0700, karlarneg wrote:

> Ja, jeg har prøvd det, men ser ikke feilen.

Tre hete tips:

1. Test alltid $sql i en MySQL-klient, (noe du forteller at du gjør)!
Test også funksjoner slik at du vet at disse benyttes riktig og faktisk
returnerer forventede verdier. Tipper jeg ville gjort en SELECT PASSWORD
('123hka1') i MySQL-klienten og sammenlignet resultatet med hva som
faktisk er lagret i tabellen...

2. Manualen til MySQL sier klart av PASSWORD() ikke skal benyttes for å
"kryptere" rader i egne tabeller, selv om det fungerer utmerket her hos
meg. SHA1() og MD5() er bedre. Jeg blir ikke plagsomt overasket om
resultatet av PASSWORD() kan endres mellom ulike versjoner av MySQL. Da
står du plutselig uten gyldige brukere etter en oppgradering og boka di
har gjort seg fortjent til en plass i Hall of Shame... :-P

3. Les hva manualen skriver om typer for resultatet av MD5 og SHA1. Det
er ikke vilkårlig hvordan dataene lagres, eller hva du uforvarende
fjerner på eget initiativ.. (Tipper dette er en variant av pkt 1) ;-)

0 new messages