Jump to content
GSForum - Segélyvonal

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


Recommended Posts

Posted

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!

Posted

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.

Posted

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:

Posted

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?

 

Posted

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

Posted

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.

 

Posted

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

Posted

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.

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...