phun-ky Skrevet 8. september 2004 Skrevet 8. september 2004 (endret) $test = mysql_query("SELECT * FROM `users` WHERE brukernavn='".$user."' AND passord='".$pass."'") or die("MySQL Login Error: ".mysql_error()); blir dette riktig? skal variblene se slik ut når du sammenligner? Endret 9. september 2004 av phun-ky
LoS Skrevet 8. september 2004 Skrevet 8. september 2004 (endret) Ser jo riktig ut, har du prøvd scriptet? også har du selvfølgelig husket å bruke mysql_escape_string? Endret 8. september 2004 av LoS
Xqtor Skrevet 8. september 2004 Skrevet 8. september 2004 Tror du kan klare deg med enkle anførselstegn rundt variablene du skal sammenlikne med.
phun-ky Skrevet 8. september 2004 Forfatter Skrevet 8. september 2004 Ser jo riktig ut, har du prøvd scriptet?også har du selvfølgelig husket å bruke mysql_escape_string? ehm.. mysql_escape_string();? hvorfor? skjønte ikke bæret av manualen ang det på php.net
LoS Skrevet 8. september 2004 Skrevet 8. september 2004 (endret) Gjør scriptet ditt sikrere, sånn at det ikke skal gå ann å hacke spørringen. edit: noe som igjen fører til en del stripslashes() når du skal hente ut info. Endret 8. september 2004 av LoS
phun-ky Skrevet 8. september 2004 Forfatter Skrevet 8. september 2004 (endret) her er koden hittil, med escape string: <? $e_post=$_POST['epost']; $passord=$_POST['pass']; $password = md5($passord); $esc = mysql_escape_string($e_post); mysql_connect ("host", "user", "pass") or die ('My SQL Error: ' . mysql_error()); mysql_select_db ("db"); $query = mysql_query("SELECT * FROM `kunde` WHERE epost='".$esc."' AND passord='".$password."'") or die("MySQL Login Error: ".mysql_error()); $row = mysql_fetch_array($query); $mail = $row["epost"]; $pwd = $row["pass"]; if (($esc == $mail) && ($password == $pwd)): echo "bruker logget inn"; elseif (($esc == $mail) && ($password != $pwd)): echo "feil passord, prøv igjen"; else: echo "feil bruker, er du registrert?"; endif; ?> men det eneste som dukker opp av echoene er: feil passord.. hva kan være galt? stripslashes() ? hvor? Endret 8. september 2004 av phun-ky
LoS Skrevet 8. september 2004 Skrevet 8. september 2004 stripslashes er når du skal vise frem data til andre brukere. Etter ett par minutter titting, så så jeg ihvertfall at: passord = '$passord' ikke går helt overens med: $row["pass"] Det er jo to forskjellige rader.
phun-ky Skrevet 8. september 2004 Forfatter Skrevet 8. september 2004 tror kanskje du bommer litt, men skal prøve å forklare litt: $passord=$_POST['pass']; henter passorder i formen $password = md5($passord); krypterer passordet, strengen havner i $password mysql_connect ("host", "user", "pass") pass her er fiktivt for sikkerhetsgrunner AND passord='".$password."'") henter fram bruker og passord fra tabellen (passordet ligger kryptert i tabellen) $pwd = $row["pass"]; henter ut feltet "pass" i tabellen og legger den i variabelen $pwd if (($esc == $mail) && ($password == $pwd)): sjekker det krypterte passordet som bruker tastet inn mot det krypterte passordet som ligger i tabellen.. skjønner du? eller var dette feil? er kanskje en dum måte å gjøre det på, er vel enklere på den måtet at man henter bare bruker fra tabellen og så sjekker om passordet matcher, for å hindre feil.. eller?
LoS Skrevet 8. september 2004 Skrevet 8. september 2004 (endret) Jeg tror du misforstod litt. Har du to rader i tabellen hvor passordet er lagra? en som heter pass og en annen som heter passord For det spørringen din nå gjør er å hente ut informasjon fra rader der epost er $esc, og passord er $password for deretter å hente ut fra $row["pass"] raden. leif. Endret 8. september 2004 av LoS
phun-ky Skrevet 8. september 2004 Forfatter Skrevet 8. september 2004 (endret) wow, skulle akkurat til å flame her, men så det nå. så nå står det: $pwd = $row["passord"]; Endret 8. september 2004 av phun-ky
phun-ky Skrevet 8. september 2004 Forfatter Skrevet 8. september 2004 (endret) hm.. det er sql queryen som er feil, får ikke hentet ut noe fra databasen... $query = mysql_query("SELECT * FROM kunde WHERE epost='".$esc."'") funker ikke, men rett i db'en funker denne: SELECT * FROM kunde WHERE epost = "minmail\@yahoo.com" LIMIT 0 , 30 det må være variabelen som stusser, eller innsettingen av den,. EDIT: la på addslashes og stripslashes, men det hjalp ikke.. Endret 8. september 2004 av phun-ky
LoS Skrevet 8. september 2004 Skrevet 8. september 2004 Når du kjører spørringen på den måten så trenger du ikke gjøre det på den måten der. $query = mysql_query("SELECT * FROM kunde WHERE epost = '$esc'") skal funke like bra. Har du prøvd uten mysql_escape_string? mysql_escape_string må brukes hele veien hvis det skal funke. dessuten så kan du prøve å legge spørringen i en egen variabel, også skrive den ut, for å se hva som står der. altså: $sql = "SELECT * FROM kunde WHERE epost = '$esc' AND passord = '$password'"; $query = mysql_query($sql); // resten av scriptet echo $sql; // helt på slutten f.eks.
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå