18. februar 2005 - 00:11
Der er
43 kommentarer og 1 løsning
Hent login-data ud af SQL tabel
Hej! Jeg har lavet en tabel med nogle login information ('bruger' og 'password). Jeg bruger følgende script til at hive "værdierne" ud: $query = mysql_query("select * from admin"); while( $row = mysql_fetch_array($query)) { $auser = $row['bruger']; $apass = $row['PASSWORD']; } Bagefter kommer der et script der tjekker om det indtastede login svarer til det der står i SQL tabellen: if (($_POST['user'] == $auser) and ($_POST['pass'] == $apass)) Problemet er at jeg kun kan logge ind med det første login der står i min tabel (jeg har pt. 2). Nogle der kan hjælpe? På forhånd tak!
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
18. februar 2005 - 00:13
#1
Du skal ændre din SQL således at du henter passwordet til brugeren ud og tjekker om det er korrekt.
18. februar 2005 - 00:15
#2
brug f.eks. følgende SQL: (skal self tilpasses) $query = mysql_query("SELECT password FROM admin WHERE bruger = '".$_POST['bruger']."';"); while( $row = mysql_fetch_array($query)) { $apass = $row['PASSWORD']; } if ($_POST['pass'] == apass) { //bahh }
18. februar 2005 - 00:16
#3
Du skal nok hellere gøre således: $bruger = $_POST['user']; $pass = $_POST['pass']; $bruger_pass = mysql_query("SELECT `brugernavn` FROM `admin` WHERE `brugernavn` = '$bruger' AND `password` = '$pass'"); $bruger_exist = mysql_num_rows($bruger_pass); if ($bruger_exist >0){ //bruger og password er korrekt } else{ //bruger og password er ikke korrekt }
18. februar 2005 - 00:17
#4
tigertool, det er da dobbelt arbejde ? $query = mysql_query("SELECT password FROM admin WHERE bruger = '".$_POST['bruger']."' AND password='".$_POST['pass']."';"); og så checke med mysql_num_rows om der blev fundet et resultat.
18. februar 2005 - 00:18
#5
alister_crowley << kan du have ret i - men jeg kan nu godt lide at tjekke om det evt. kun er passordet der er forkert.
18. februar 2005 - 00:20
#6
tigertool -> men på denne måde: while( $row = mysql_fetch_array($query)) { $apass = $row['PASSWORD']; } overskriver du jo $apass for hvert gennemløb, hvilket var det oprindelige problem.
18. februar 2005 - 00:21
#7
Der er et WHERE statement hvilket vil sige at du kun får et password, eftersom der max findes en bruger med brugernavnet!
18. februar 2005 - 00:22
#8
Hvorfor så lave en while løkke?
18. februar 2005 - 00:22
#9
behøves heller ikke. Men det er sent :)
18. februar 2005 - 00:23
#10
Desuden giver det jo ingen forskel om der er en while eller ej. Den while bliver kun kørt en enkelt gang!
18. februar 2005 - 00:27
#11
Ok, pointen med at lave en WHERE bestemt forespørgsel er den røde tråd ;O)
18. februar 2005 - 00:29
#12
Korrekt. Skrev vist også at det skulle rettes til.
18. februar 2005 - 00:30
#13
Smider lige et svar for en sikkerhedsskyld :)
18. februar 2005 - 00:33
#14
Jeg har forsøgt mig med m_els's foreslag. Men får følgende fejl:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/www.x-road-user.dk/www/auth.php on line 11
Warning: Cannot modify header information - headers already sent by (output started at /var/www/www.x-road-user.dk/www/auth.php:11) in /var/www/www.x-road-user.dk/www/auth.php on line 20
Jeg har uploadet koden på:
http://www.x-road-user.dk/kode.txt Fejlkode nr. 2 (header) har jeg set før, men fik det til at virke ved at putte min session_start(); øverst på siden. Hvorfor kommer den nu igen? :(
18. februar 2005 - 00:36
#15
Er Password ikke et fy-ord i MySQL?
18. februar 2005 - 00:37
#16
Det aner jeg intet om - men godt nok PASSWORD med uppercase i min mysql-tabel????
18. februar 2005 - 00:38
#17
Problemet er at der er en funktion i MySQL kaldet PASSWORD - prøv for sjov skyld at omdøbe det i tabellen og i SQL'en.
18. februar 2005 - 00:40
#18
Okay - det prøver jeg lige - er der ellers ikke noget i vejen med min kode (er næsten lige startet på det her)
18. februar 2005 - 00:41
#19
ellers prøv mit eksepmel :)
18. februar 2005 - 00:44
#20
Jeg har prøvet med dit eksempel tigertool, og min kode ser nu således ud:
ftp://x-road-user.dk/www/kode_tigertool.txt Problemer er bare at man kan logge ind uden at skrive korrekt user og pass.
18. februar 2005 - 00:45
#21
Dødt link?
18. februar 2005 - 00:45
#22
Og man kan ikke logge ind når man skriver det rigtige login :D
18. februar 2005 - 00:45
#23
Jeg bruger selv mit lille script mange steder - og det virker fint.
18. februar 2005 - 00:45
#24
18. februar 2005 - 00:46
#25
jamen hvordan ser din tabel da ud?
18. februar 2005 - 00:47
#26
bruger varchar(20), password varchar(20)
18. februar 2005 - 00:49
#27
Så er der jo fejl i den SQL m_els skrev. der står jo brugernavn og ikke bruger! Fordelen med mit script er at du faktisk kan tjekke på om brugeren findes og bare har indtastet forkert kodeord - eller om brugeren ikke findes overhovedet.
18. februar 2005 - 00:51
#28
Forresten.. $_SESSION['login'] = "false"; skrives: $_SESSION['login'] = false; (hvis det er boolsk)
18. februar 2005 - 00:52
#30
Det er bevidst at false og true har "" om sig.
18. februar 2005 - 00:58
#31
Prøv lige: <? session_start(); mysql_connect("mysql5.wannafind.dk", "x_road_use", ""); mysql_select_db("x_road_user_dk_db"); $query = mysql_query("SELECT password FROM admin WHERE bruger = '".$_POST['bruger']."';"); while( $row = mysql_fetch_array($query)) { $apass = $row['password']; } if (mysql_num_rows($query) > 0) { if ($_POST['pass'] == $apass) { //Brugernavn og password er korrekt $_SESSION['login'] = "true"; $_SESSION['user_in'] = $_POST['bruger']; header("Location: admin.php"); } else { //Password er forkert - brugernavn rigtigt. $_SESSION['login'] = "false"; header("Location: login.php"); } } else { //Brugernavnet eksisterer ikke $_SESSION['login'] = "false"; header("Location: login.php"); } ?>
18. februar 2005 - 01:05
#32
Virker det?
18. februar 2005 - 01:06
#33
Nej :( Man kan ikke komme ind på admin.php ligemeget hvad. Jeg prøvede at skifte "password" i query til uppercase (PASSWORD som den står i mysql) og straks fik jeg nogle fejl.. Det kan være at du har ret med at password er et fy-ord. Jeg prøver lige at ændre det.
18. februar 2005 - 01:07
#34
<? session_start(); mysql_connect("mysql5.wannafind.dk", "x_road_use", ""); mysql_select_db("x_road_user_dk_db"); $query = mysql_query("SELECT password FROM admin WHERE bruger = '".$_POST['user']."';"); //<-- Fejl her, undskyld while( $row = mysql_fetch_array($query)) { $apass = $row['password']; } if (mysql_num_rows($query) > 0) { if ($_POST['pass'] == $apass) { //Brugernavn og password er korrekt $_SESSION['login'] = "true"; $_SESSION['user_in'] = $_POST['user']; //<-- Fejl her, undskyld header("Location: admin.php"); } else { //Password er forkert - brugernavn rigtigt. $_SESSION['login'] = "false"; header("Location: login.php"); } } else { //Brugernavnet eksisterer ikke $_SESSION['login'] = "false"; header("Location: login.php"); } ?>
18. februar 2005 - 01:08
#35
Jeg har skrevet $_POST['bruger'] i scriptet du lige prøvede. Jeg postede lige et nyt - der burde faktisk stå: $_POST['user']! Min fejl - jeg kunne se det da jeg kiggede på html sourcen på din side.
18. februar 2005 - 01:10
#36
Yepsen - det lade jeg godt mærke til, og du gjordet også et andet sted men jeg har rettet det :D.. Vender lige tilbage 1 minut - tror næsten det virker nu.
18. februar 2005 - 01:12
#37
Det virker!! Måske var det den 'PASSWORD' i SQL der drillede lige start? Anyways det virker og nu kan jeg sove godt i nat :P.. Tusind tak for hjælpen (det er ikke nemt at være nybegynder :)).
18. februar 2005 - 01:13
#38
Det har du ret i - vi har alle været der :)
18. februar 2005 - 01:14
#39
;) - Giver jeg dig ikke poitn ved at trykke "Accepter"? Der sker intet, andet end at siden reloades?
18. februar 2005 - 01:14
#40
Du kan let implementere fejl-beskeder i det kode jeg har postet. Så ved brugeren at der er noget galt - og du kan let se forskel på om brugernavnet findes eller ej.
18. februar 2005 - 01:15
#41
Du skal vist først vælge mig i listen i siden :)
18. februar 2005 - 01:16
#42
Det kan jeg godt se nu du siger det - Så sparede du mig sørme også for en masse bøvl der :)
18. februar 2005 - 01:16
#43
Jep - tak for point :)
18. februar 2005 - 01:17
#44
Det er mig der takker :)
Vi tilbyder markedets bedste kurser inden for webudvikling