Levmaster
2006. szeptember 30. 11:09
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
2006. szeptember 30. 12:35
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
2006. október 1. 13:39
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
2006. október 1. 15:12
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
2006. október 1. 20:47
Biztonsági időkorlátot akarok, illetve felsorolni az éppen online felhasználókat...
Mezofi
2006. október 1. 21:13
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
2006. október 2. 18:13
Van egy ilyen kódom, de ez az ujabb PHP-val nem megy...
Van valami ötleted?
KÓD
<?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
2006. október 2. 20:16
Ez egy idézet tőled:
IDÉZET
mert én szeretném megcsinálni.
Akkor ne más kódjából szemezgess, mert így nem fog menni.
Ez a tartalom egy lebutítottváltozata. A teljes változat képekkel kiegészült megtekintéséhez kérünk,
kattints ide.