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()')
  1. //Bejelentkezik a felhasználó és ellenőrzöm a következőt:   
  2.    $sql1 = "SELECT * FROM users_session WHERE user_id='(felhasználóidje)' ";  
  3.    $query1 = mysqli_query($con,$sql1);  
  4.       
  5.     if(mysqli_num_rows($query1) !== 0)// ha a táblába létezik akkor  
  6.     {  
  7.       $row = mysqli_fetch_assoc($query1);  
  8.       $seid1=session_id($row['session_id']); // lekérdezzük az eddig generált kódot   
  9.       session_start($seid1); // és elindítjuk a munka menetet.  
  10.       $_SESSION['login'] = true; // bejelentkeztetjük  
  11.       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)  
  12.   }else// ha nincs  
  13.    $session_id = MD5((felhasználóidje).time());// csinálok sajátos session idet  
  14.    $seid=session_id($session_id);  
  15.    session_start($seid);  
  16.    $_SESSION['login'] = true;  
  17.    $sql2 = "INSERT INTO  `users_session` (id,user_id,session_id,time) VALUES ('','(felhasználóidje)','$session_id','".time()."')"// és felküldöm az adatokat  
  18.         mysqli_query($con,$sql2or die ("Valami baj van az adatbázissal.");  
  19.   }  

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???
  1. function mysql_save($string) {  
  2.     $string = trim($string);  
  3.     if (function_exists('mysql_escape_string')) {  
  4.         return mysql_escape_string($string);  
  5.     }  
  6.     return addslashes($string);        
  7. }  
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:)