Jump to content
GSForum - Segélyvonal

Felhasználó nyomonkövetése mysgl adatbázisban tárolt session-el


Levmaster

Recommended Posts

Levmaster

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!

Link to comment
Share on other sites

Mezofi

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.

Link to comment
Share on other sites

Levmaster

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? :hááát:

Link to comment
Share on other sites

Mezofi

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?

 

Link to comment
Share on other sites

Levmaster

Biztonsági idõkorlátot akarok, illetve felsorolni az éppen online felhasználókat...

Link to comment
Share on other sites

Mezofi

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.

 

Link to comment
Share on other sites

Levmaster

Van egy ilyen kódom, de ez az ujabb PHP-val nem megy... :pislog:

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
    }
}
?>

Link to comment
Share on other sites

Mezofi

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.

Link to comment
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...