08. juni 2003 - 21:51
Der er
15 kommentarer og 1 løsning
Login med session !
Hej ! Jeg eri nu igang med at lave et login system. Jeg har en MySQL database, hvori jeg har en kolonne som heder "id", og jeg vil gerne have at da man logger ind skal der startes en SESSION, som får værdien "id" hos den som logger ind. Jeg har lavet det sådan: <?php session_start(); $sql = mysql_query("Select * from profiles where email = \"$_POST[email]\" && password = \"$_POST[pass\""); if (mysql_num_rows($sql)){ { $_SESSION['id'] = '$row[id]'; } elseif($_GET['logout'] == '1') { $_SESSION['id'] = ''; session_destroy(); } if(!$_SESSION['id']) { echo "<h2>Logga inn</h2>"; echo "<form method=\"post\" action=\"image.php\"><table> <tr><td>Brúkari:</td><td><input type=\"text\" size=\"10\" name=\"username\"></td></tr> <tr><td>Loyniorð:</td><td><input type=\"password\" size=\"10\" name=\"password\"></td></tr> <tr><td> </td><td><input type=\"submit\" value=\"Login\"></td></tr> </table></form>"; } else { header ("location: profile.php"); exit; } ?> Spørgsmålet er bare, om det er ret lavet, det der med { $_SESSION['id'] = '$row[id]'; } og hvordan jeg kalder det frem igen?
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.
du kan altid tjekke indholdet af din session echo $_SESSION[id];
Noget lignende dette: <?php session_start(); $sql = mysql_query("Select * from profiles where email = \"$_POST[email]\" && password = \"$_POST[pass\""); if (mysql_num_rows($sql) != 0) { $row = mysql_fetch_array($sql); $_SESSION['id'] = $row['id']; header ("location: profile.php"); exit; } if (!$_SESSION['id']) { echo "<h2>Logga inn</h2>"; echo "<form method=\"post\" action=\"image.php\"><table> <tr><td>Brúkari:</td><td><input type=\"text\" size=\"10\" name=\"username\"></td></tr> <tr><td>Loyniorð:</td><td><input type=\"password\" size=\"10\" name=\"password\"></td></tr> <tr><td> </td><td><input type=\"submit\" value=\"Login\"></td></tr> </table></form>"; ?>
Der er flere fejl, retter det lige til.
<?php session_start(); if (isset($_POST['login']) { $sql = mysql_query("SELECT * FROM profiles WHERE email = '$_POST[email]' AND password = '$_POST[pass]'"); if (mysql_num_rows($sql) != 0) { $row = mysql_fetch_array($sql); $_SESSION['id'] = $row['id']; header ("location: profile.php"); exit; } } if (!$_SESSION['id']) { echo "<h2>Logga inn</h2>"; echo "<form method='post' action='image.php'><table> <tr><td>Brúkari:</td><td><input type='text' size='10' name='username'></td></tr> <tr><td>Loyniorð:</td><td><input type='password' size='10' name='password'></td></tr> <tr><td> </td><td><input type='submit' value='Login' name='login'></td></tr> </table></form>"; } ?>
Jeg vil gerne hive data ud af databasen, hvor session er lige med "id", kan jeg så bare skrive i profile.php: $sql = mysql_query("Select * from profiles id = $_SESSION[id]"); ??
Ja, eller måske: $sql = mysql_query("SELECT * FROM profiles id = '$_SESSION[id]'");
Jeg har arbejdet lidt på det nu, det virker men jeg kan ikke få vist $_SESSION, hvad har jeg lavet galt ?? <?php if($_GET[mode] == 'login'){ $sql = mysql_query("Select * from users where user = \"$_POST[username]\" && password = \"$_POST[password]\""); if(mysql_num_rows($sql)) $row = mysql_fetch_array($sql){ $_SESSION['id'] = $row['id']; header ("location: profile.php"); exit; } elseif($_GET['logout'] == '1') { $_SESSION['id'] = ''; session_destroy(); } } if($_GET[mode] == 'register'){ $id = date('YmdHis'); $sql = mysql_query("Insert into users (id, user, password, nick, email) Values (\"$id\",\"$_POST[user]\",\"$_POST[password]\",\"$_POST[nick]\",\"$_POST[email]\")"); echo "Brúkari skrásettur"; }else{ echo "<h2>Logga inn</h2>"; echo "<form method=\"post\" action=\"index.php?mode=login\"><table> <tr><td>Brúkari:</td><td><input type=\"text\" size=\"10\" name=\"username\"></td></tr> <tr><td>Loyniorð:</td><td><input type=\"password\" size=\"10\" name=\"password\"></td></tr> <tr><td> </td><td><input type=\"submit\" value=\"Login\"></td></tr> </table></form><br> <h2>Skráset búkarar</h2><br> <form method=\"post\" action=\"index.php?mode=register\"><table> <tr><td>Eyðkennis navn:</td><td><input type=\"text\" size=\"10\" name=\"nick\"></td></tr> <tr><td>Brúkaranavn:</td><td><input type=\"text\" size=\"10\" name=\"user\"></td></tr> <tr><td>Loyniorð:</td><td><input type=\"password\" size=\"10\" name=\"password\"></td></tr> <tr><td>Teldupostur:</td><td><input type=\"text\" size=\"10\" name=\"email\"></td></tr> <tr><td> </td><td><input type=\"submit\" value=\"Skráset\"></td></tr> </table></form>"; } ?> Jeg har så bare skrevet <? echo "$_SESSION[id];" ?> på profile.php, men der kommer bare ; tegnet frem ??
Du mangler en session_start();
08. juni 2003 - 23:03
#10
<?php session_start(); if($_GET[mode] == 'login'){ $sql = mysql_query("Select * from users where user = \"$_POST[username]\" && password = \"$_POST[password]\""); if(mysql_num_rows($sql)) $row = mysql_fetch_array($sql){ $_SESSION['id'] = $row['id']; header ("location: profile.php"); exit; } elseif($_GET['logout'] == '1') { $_SESSION['id'] = ''; session_destroy(); } } if($_GET[mode] == 'register'){ $id = date('YmdHis'); $sql = mysql_query("Insert into users (id, user, password, nick, email) Values (\"$id\",\"$_POST[user]\",\"$_POST[password]\",\"$_POST[nick]\",\"$_POST[email]\")"); echo "Brúkari skrásettur"; }else{ echo "<h2>Logga inn</h2>"; echo "<form method=\"post\" action=\"index.php?mode=login\"><table> <tr><td>Brúkari:</td><td><input type=\"text\" size=\"10\" name=\"username\"></td></tr> <tr><td>Loyniorð:</td><td><input type=\"password\" size=\"10\" name=\"password\"></td></tr> <tr><td> </td><td><input type=\"submit\" value=\"Login\"></td></tr> </table></form><br> <h2>Skráset búkarar</h2><br> <form method=\"post\" action=\"index.php?mode=register\"><table> <tr><td>Eyðkennis navn:</td><td><input type=\"text\" size=\"10\" name=\"nick\"></td></tr> <tr><td>Brúkaranavn:</td><td><input type=\"text\" size=\"10\" name=\"user\"></td></tr> <tr><td>Loyniorð:</td><td><input type=\"password\" size=\"10\" name=\"password\"></td></tr> <tr><td>Teldupostur:</td><td><input type=\"text\" size=\"10\" name=\"email\"></td></tr> <tr><td> </td><td><input type=\"submit\" value=\"Skráset\"></td></tr> </table></form>"; } ?>
08. juni 2003 - 23:04
#11
og på profile.php skal du have: <?php session_start(); echo $_SESSION['id']; ?>
08. juni 2003 - 23:13
#12
OK ! fino, nu virker det... ;) Men nu er det bare problemet at logge ud igen! jeg har skrevet en: elseif($_GET['logout'] == '1') { $_SESSION['id'] = ''; session_destroy(); } men den logger ikke ud?
08. juni 2003 - 23:15
#13
elseif($_GET['logout'] == '1') { session_destroy(); header("Location: enside.php"); exit; } Burde logge dig ud.
08. juni 2003 - 23:16
#14
elseif($_GET['logout'] == 1) { session_destroy(); header("Location: enside.php"); exit; }
08. juni 2003 - 23:22
#15
--> ahv Takk for hjælpen Jeg går .. ;)
08. juni 2003 - 23:23
#16
Ups sådan, nu fik du point ;)
Vi tilbyder markedets bedste kurser inden for webudvikling