ugrás a tartalomhoz

Mysql,Session,php Bejelentkezés

kriszrap · 2014. Nov. 1. (Szo), 01.04
Sziasztok:)
Meg akarom kérdezni az okosabbakat hogy biztonságilag jó e és ti is így csinálnátok e.
Van egy 'users_session' táblám így néz ki:
id (tábla adja AUTO_INCREMENT )
user_id (A felhasználó AUTO_INCREMENT je)
session_id(Saját magam generálom a kód sort)
time (utoljára használva 'time()')

 //Bejelentkezik a felhasználó és ellenőrzöm a következőt: 
    $sql1 = "SELECT * FROM users_session WHERE user_id='(felhasználóidje)' ";
    $query1 = mysqli_query($con,$sql1);
		
     if(mysqli_num_rows($query1) !== 0)// ha a táblába létezik akkor
     {
       $row = mysqli_fetch_assoc($query1);
       $seid1=session_id($row['session_id']); // lekérdezzük az eddig generált kódot 
       session_start($seid1); // és elindítjuk a munka menetet.
       $_SESSION['login'] = true; // bejelentkeztetjük
       mysqli_query($con,"UPDATE users_session SET time='".time()."' WHERE user_id='$id'"); // és updetoljuk az időt  (vagy a sessionba tároljam?? terv ha 5 perci nincs mozgás kijelentkezteti)
   }else{ // ha nincs
    $session_id = MD5((felhasználóidje).time());// csinálok sajátos session idet
    $seid=session_id($session_id);
    session_start($seid);
    $_SESSION['login'] = true;
    $sql2 = "INSERT INTO  `users_session` (id,user_id,session_id,time) VALUES ('','(felhasználóidje)','$session_id','".time()."')"; // és felküldöm az adatokat
			mysqli_query($con,$sql2) or die ("Valami baj van az adatbázissal.");
   }

Kérdésem ezzel az elvel ki is zártam azt hogy több munka menet legyen egy usernek???

Session_start() miként generál kódot?? Magam csináljak egy kódláncot ahogy fent látható vagy bízzam rá ?? (nem akarom hogy a munka menetek ütközzenek)

Time az arra lenne hogy ha 5 percig nincs mozgás akkor logout csak én mysql-be tárolom vagy ink sessionba??

Segítségeteket előre köszönöm:)
 
1

Off

Hidvégi Gábor · 2014. Nov. 1. (Szo), 09.25
Azt meg tudod mondani, miért használsz adatbázist? A php beépített függvényei a fent megírt funkcionalitást megvalósítják, azaz garantálják, hogy egy böngészőből egyszer lehet bejelentkezni, a munkamenetet párhuzamosan nem lehet írni, valamint a kijelenteztetést is, ráadásul gyorsabban.
2

Több szerver

Poetro · 2014. Nov. 1. (Szo), 10.46
Csak ha több szervered van, ami a PHP kódot futtatja, akkor nem működik.
4

Azért használok adatbázist

kriszrap · 2014. Nov. 1. (Szo), 12.10
Azért használok adatbázist mert session ideket tárolom ott hogy ha a felhasználó bejelentkezik akkor a tmp mappából kitudja a rendszer keresni. saját session idet kódolom vagy hogy mondjam generálok
3

OFF: SQL injection

Poetro · 2014. Nov. 1. (Szo), 10.49
A kódod nagyon érzékeny SQL injection-re. Ha már mysqli-t használsz, akkor használd a prepared statement-eket a változók beszúrására. Mondjuk azt nem tudom, hogy a kódod az eredeti célt eléri-e.
5

Ez a kódrészlet is

kriszrap · 2014. Nov. 1. (Szo), 12.24
Ez a kódrészlet is megfelel???

function mysql_save($string) {
    $string = trim($string);
    if (function_exists('mysql_escape_string')) {
        return mysql_escape_string($string);
    }
    return addslashes($string);      
}
6

Higgy neki, és csináld, amit

bamegakapa · 2014. Nov. 1. (Szo), 12.37
Higgy neki, és csináld, amit javasolt.

Ez a kódrészlet ezer sebből vérzik, számodra nem jó semmire.
7

hiszek neki:) csak gondoltam

kriszrap · 2014. Nov. 1. (Szo), 13.54
hiszek neki:)
csak gondoltam amit én használok az jó. Azt akartam tudni:)