phun-ky Skrevet 8. september 2004 Del 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 Lenke til kommentar
LoS Skrevet 8. september 2004 Del 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 Lenke til kommentar
Xqtor Skrevet 8. september 2004 Del Skrevet 8. september 2004 Tror du kan klare deg med enkle anførselstegn rundt variablene du skal sammenlikne med. Lenke til kommentar
phun-ky Skrevet 8. september 2004 Forfatter Del 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 Lenke til kommentar
LoS Skrevet 8. september 2004 Del 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 Lenke til kommentar
phun-ky Skrevet 8. september 2004 Forfatter Del 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 Lenke til kommentar
LoS Skrevet 8. september 2004 Del 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. Lenke til kommentar
phun-ky Skrevet 8. september 2004 Forfatter Del 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? Lenke til kommentar
LoS Skrevet 8. september 2004 Del 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 Lenke til kommentar
phun-ky Skrevet 8. september 2004 Forfatter Del 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 Lenke til kommentar
phun-ky Skrevet 8. september 2004 Forfatter Del 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 Lenke til kommentar
LoS Skrevet 8. september 2004 Del 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. Lenke til kommentar
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å