04. oktober 2003 - 00:11
Der er
27 kommentarer og 1 løsning
Simpelt PHP Login med MySQL
Jeg vil gerne have et login script. det skal kun være den del der tjekker. altså koden. og den skal bruge denne form til at tjekke: <form method="POST" action="login_tjek.php"> <input type="hidden" name="Login" value="yes"> <p align="center"><input type="text" name="Username" size="20"><br> <input type="Password" name="Password" size="20"><br> <input type="submit" value="Submit" name="B1"></p> </form> <?php if(isset($_SESSION['fail'])) { echo"Username or password not found"; unset($_SESSION['fail']); } ?> som i nok kan se skal den sætte SESSION['fail'] hvis er ikke kan logges ind. Der ud over skal den sætte session['adminlevel'] ud fra kolonnen "admin" <- et tal og session['logged'] til 1 Håber i forstod det :)
Annonceindlæg fra Axcess Nordic
04. oktober 2003 - 14:49
#1
if (isset($_POST['Username']) && isset($_POST['Password'])) { $q = "SELECT COUNT(*) AS `count` FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."' AND `Password`='".addslashes($_POST['Password'])."'"; $r = mysql_query($q) or die(mysql_error()); $row = mysql_fetch_row($r) or die(mysql_error()); if ($row['count'] == 1) { $_SESSION['logged'] = 1; $q = "SELECT * FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."'"; $row = mysql_fetch_row($r) or die(mysql_error()); $_SESSION['Username'] = $row['Username']; $_SESSION['adminlevel'] = $row['admin']; } else { $_SESSION['fail'] = true; } }
04. oktober 2003 - 15:33
#2
<?php if (isset($_POST['Username']) && isset($_POST['Password'])) { $conn = mysql_connect("localhost", "navn", "kode") or die (mysql_error()); mysql_select_db("db"); $q = "SELECT COUNT(*) AS `count` FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."' AND `Password`='".addslashes($_POST['Password'])."'"; $r = mysql_query($q) or die(mysql_error()); $row = mysql_fetch_row($r) or die(mysql_error()); if ($row['count'] == 1) { $_SESSION['logged'] = 1; $q = "SELECT * FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."'"; $row = mysql_fetch_row($r) or die(mysql_error()); $_SESSION['Username'] = $row['Username']; $_SESSION['adminlevel'] = $row['admin']; echo 'Hej'; } else { $_SESSION['fail'] = true; echo 'fejl'; } } ?> jeg har sat de navne ind der skal bruges. caps er tjekket, de passer ok, men jeg får echo 'fejl' hver gang. Password og Bruger er 100 % rigtigt.. hvor er fejlen
04. oktober 2003 - 16:40
#3
andre der kan lave fejlen ?
04. oktober 2003 - 16:45
#4
smid en session_start(); som første linie i dine scripts
04. oktober 2003 - 17:09
#5
<?php session_start(); if (isset($_POST['Username']) && isset($_POST['Password'])) { $conn = mysql_connect("localhost", "navn", "kode") or die (mysql_error()); mysql_select_db("db"); $q = "SELECT COUNT(*) AS `count` FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."' AND `Password`='".addslashes($_POST['Password'])."'"; $r = mysql_query($q) or die(mysql_error()); $row = mysql_fetch_row($r) or die(mysql_error()); if ($row['count'] == 1) { $_SESSION['logged'] = 1; $q = "SELECT * FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."'"; $row = mysql_fetch_row($r) or die(mysql_error()); $_SESSION['Username'] = $row['Username']; $_SESSION['adminlevel'] = $row['admin']; echo 'Hej'; } else { $_SESSION['fail'] = true; echo 'fejl'; } } ?> den melder stadig fejl.
05. oktober 2003 - 11:46
#6
prøv at vis hele dit script
05. oktober 2003 - 13:02
#7
det er det hele... :)
05. oktober 2003 - 13:44
#8
samlet
05. oktober 2003 - 13:45
#9
... jeg går ud fra at du _har_ oprettet en tabel "users", med felterne "Username", "Password", "admin" - og oprettet en række heri ?
05. oktober 2003 - 13:48
#10
self har jeg det, og caps, stavning osv er tjekket
05. oktober 2003 - 13:51
#11
har du msn, da det ville være nemmere at fejlfinde på den måde :)
05. oktober 2003 - 13:53
#12
hvad for en version af php bruger du ? ... hvis det er en ældre version, kan det være at du skal erstatte $_POST med $HTTP_SERVER_VARS osv.
05. oktober 2003 - 13:55
#13
Jeg kan ikk huske hvilken php vers jeg bruger, men jeg er hosted af 1go. Hmm.. altså bliver $_POST['Password'] til $HTTP_SERVER_VARS['Password'] ???
05. oktober 2003 - 14:23
#14
eh undskyld - til $_POST bliver til $HTTP_POST_VARS men jeg ved ikke om det er det, der går galt - jeg gætter bare prøv lige at smid hele dit script samlet, som det ser ud nu
05. oktober 2003 - 14:31
#15
login.php: <form method="POST" action="login_tjek.php"> <input type="hidden" name="Login" value="yes"> <p align="center"><input type="text" name="Username" size="20"><br> <input type="Password" name="Password" size="20"><br> <input type="submit" value="Submit" name="B1"></p> </form> <?php if(isset($_SESSION['Username_fail'])) { echo"Username not found"; unset($_SESSION['Username_fail']); } ?> Logintjek.php: <?php session_start(); if (isset($_POST['Username']) && isset($_POST['Password'])) { $conn = mysql_connect("localhost", "navn", "kode") or die (mysql_error()); mysql_select_db("db"); $q = "SELECT COUNT(*) AS `count` FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."' AND `Password`='".addslashes($_POST['Password'])."'"; $r = mysql_query($q) or die(mysql_error()); $row = mysql_fetch_row($r) or die(mysql_error()); if ($row['count'] == 1) { $_SESSION['logged'] = 1; $q = "SELECT * FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."'"; $row = mysql_fetch_row($r) or die(mysql_error()); $_SESSION['Username'] = $row['Username']; $_SESSION['adminlevel'] = $row['admin']; echo 'Hej'; } else { $_SESSION['fail'] = true; echo 'fejl'; } } ?>
05. oktober 2003 - 14:39
#16
for det første skal du starte session på alle dine sider - så login.php skal begynde med <?php session_start(); ?> for det andet - prøv at sætte dette ind i Logintjek.php, efter echo 'fejl'; echo "<pre>";var_dump(array($_POST, $_GET, $_SESSION));
05. oktober 2003 - 14:41
#17
jeg havde <?php session_start(); ?> på login.php :) prøver lige det andet.
05. oktober 2003 - 14:43
#18
array(3) { [0]=> array(4) { ["Login"]=> string(3) "yes" ["Username"]=> string(5) "PlazM" ["Password"]=> string(7) "koden er rigtig :)" ["B1"]=> string(6) "Submit" } [1]=> array(0) { } [2]=> array(1) { ["fail"]=> bool(true) } }
05. oktober 2003 - 14:50
#19
prøv at tilføje var_dump($row);
05. oktober 2003 - 14:52
#20
i øvrigt ... lige efter : $q = "SELECT * FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."'"; mangler denne linie : $r = mysql_query($q) or die(mysql_error());
05. oktober 2003 - 14:53
#21
array(3) { [0]=> array(4) { ["Login"]=> string(3) "yes" ["Username"]=> string(5) "PlazM" ["Password"]=> string(7) "koden er rigtig :)" ["B1"]=> string(6) "Submit" } [1]=> array(0) { } [2]=> array(1) { ["fail"]=> bool(true) } } array(1) { [0]=> string(1) "1" }
05. oktober 2003 - 14:54
#22
aha ... erstat denne linie : if ($row['count'] == 1) { med denne : if ($row[0] == 1) {
05. oktober 2003 - 14:58
#23
nu skriver den ikke fejl mere, MEN den skriver heller ikk hej
05. oktober 2003 - 15:01
#24
erstat allersidste linie med : } else { echo "fejl : data mangler"; }
05. oktober 2003 - 15:02
#25
stadig intet...
05. oktober 2003 - 15:04
#26
det kan jo ikke passe ?!? post din kode ...
05. oktober 2003 - 15:07
#27
jeg fandt fejlen :) if ($row['count'] == 1) { $_SESSION['logged'] = 1; $q = "SELECT * FROM `users` WHERE `Username`='".addslashes($_POST['Username'])."'"; $row = mysql_fetch_row($r) or die(mysql_error()); kan du se der mangler: $r = mysql_query($q) or die(mysql_error()); Tak for hjælpen :)
05. oktober 2003 - 15:08
#28
velbekomme
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.