Levmaster Posted September 30, 2006 Posted September 30, 2006 Sziasztok! Szeretnék adatbázisban tárolt session-el csinálni beléptetõrendszert, biztonsági idõkorlátos kiléptetéssel. Egy beléptetõrendszert már sikerült írnom, de az csak egy egyszerû cookie-s megoldás volt. Segítséget szeretnék kérni hogy hogy is kezdjem el... ne kész progikat linkeljetek be légy szíves, hanem inkább csak kis progirészleteket meg leírásokat, mert én szeretném megcsinálni. Fontos kezdõkérdés: Milyen mezõk szükségesek a mysql adatbázisban? Gondolom valami ilyesmi kell: Session tábla: sessin_id, session_time, timestamp, stb. Elõre is köszi a segítséget!
Mezofi Posted September 30, 2006 Posted September 30, 2006 Legyen modjuk 2 oszlop. session_id, belepesi_ido Amikor belép egy kódgeneráló script segítségével adsz neki egy azonosítót, persze elötte megnézed nincs-e már ilyen azonosító a táblában. Aztán ezt és a belépési időt beírod a táblába. Minden oldal elején megnézed létezik-e a session és a hozzá tartozó idő és az aktuális idő különbsége nem-e több, mint a beállított engedélyezett idő. Ha több akkor törlöd a sessiont a táblából. Ekkor bármikor lekérdezed a táblát tudni fogod mennyien vannak az oldaladon, stb. Persze teljesen nem lesz pontos.
Levmaster Posted October 1, 2006 Author Posted October 1, 2006 hmmm.. hát lehet hogy egy kicsit bõvebb segítségre lenne szükségem Amikor belép a felhasználó indítok egy session-t. Generálok egy id-t és egy timestamp-el együtt elmentem... hogyan tovább? Lépésrõl lépésre: mit csináljak?
Mezofi Posted October 1, 2006 Posted October 1, 2006 A session tartalmazni fogja a belépés idejét és a session id-t is. Minden oldalon összehasonlítod az aktuális idõt és az eltárolt idõt. Ha a különbség egy elõre megadott intervallumba esik. Persze itt jön a kérdés, hogy mire akarod használni a sessiont, hogy megállapítsd mióta van az oldaladon, vagy mire?
Levmaster Posted October 1, 2006 Author Posted October 1, 2006 Biztonsági idõkorlátot akarok, illetve felsorolni az éppen online felhasználókat...
Mezofi Posted October 1, 2006 Posted October 1, 2006 Hát akkor össze hasonlítod amikor belépett és ami a pontos idõ. Minden lapon. És beírod a táblába, hogy jelen van. Amikor túl lépte az idõ korlátodat törlöd a táblából és törlöd a session-ját is. Minden oldal megnyításkor átnézeted a táblát, hogy nincs-e idõn túli mandarin a táblában, ha van törlöd a bejegyzést.
Levmaster Posted October 2, 2006 Author Posted October 2, 2006 Van egy ilyen kódom, de ez az ujabb PHP-val nem megy... Van valami ötleted? <?php session_start(); include("config.php"); class login { function login() { $this->rightlogin = false; $this->tried = false; $this->username = ""; if (isset($exit)) $this->logout(); } function logging_in() { if (isset($_POST['login'])) { $connection = mysql_connect(DBHOST, DBUSER, DBPASS) or die ("ERROR! Could not connect to MySQL host!"); mysql_select_db(DBNAME, $connection) or die ("ERROR! Could not open $DBNAME database: ".mysql_error()); $encrypted_pass = md5($_POST['upass']); $result = mysql_query("SELECT username FROM user WHERE pass=$encrypted_pass"); if (mysql_affected_rows() > 0) { $username = $uname; sessin_register("username"); $this->rightlogin = true; $this->tried = true; $this->username = $uname; $dat = getdate(); $date = $dat["year"]."-".$dat["mon"]."-".$dat["mday"]." ".$dat["hours"].":".$dat["minutes"].":".$dat["seconds"]; //belépés loggolása $order = "INSERT INTO log (login_user, login_time) VALUES ('$uname', '$date')"; $order2 = "INSERT INTO session (session_id, timestamp) VALUES ('$uname', '$date')"; $result2 = mysql_query($order) or die("Database ERROR:".mysql_error()); $result3 = mysql_query($order2) or die("Database ERROR:".mysql_error()); } else { $this->tried = true; } $this->tried = true; } elseif (isset($_SESSION["username"])) { $this->username = $_SESSION["username"]; $this->rightlogin = true; } if (!$this->rightlogin) { $this->login_sheet(); exit(); } } function logout() { global $PHP_SELF; session_unregister("username"); header("Location: $PHP_SELF"); } function login_sheet() { global $PHP_SELF; ?> <html> <head> <style type="text/css"> <!-- .style1 { color: #003A0A; font-family: "Lucida Sans Unicode"; } --> </style> </head> <?= ($this->voltProbalkozas ? "<font color=\"#FF0000\"><p align=\"center\"><b>Invaild username or password!</b></font>": "<font color=\"#003A0A\"><p align=\"center\"><b>Login</b></font>") ?> <div align="center" class="style1"> <table width="40" bgcolor="#6ae0ad"> <form action="<?=$PHP_SELF?>" method="POST"> <tr> <td>Username:</td> <td> <input type="text" name="uname"><br></td> </tr> <tr> <td>Password:</td> <td><input type="password" name="upass"><p></td> <td><input type="submit" name="uLogin" value="Login"></td> </tr> </form> </table> </div> </body> </html> <?php } } ?>
Mezofi Posted October 2, 2006 Posted October 2, 2006 Ez egy idézet tõled: mert én szeretném megcsinálni. Akkor ne más kódjából szemezgess, mert így nem fog menni.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now