Session érték ütközés elkerülése, ha az a login ID
Sziasztok,
A probléma a következő, készítettem egy programot be login stb.. a gond ott van hogy a session azonosító a login ID. Ha egy időben több gépen belépnek más és más loginnel akkor is a legutolsó ID lesz az aktív a többi usernél is..ami nem jó.
Hogy lehetne ezt kiküszöbölni?
■ A probléma a következő, készítettem egy programot be login stb.. a gond ott van hogy a session azonosító a login ID. Ha egy időben több gépen belépnek más és más loginnel akkor is a legutolsó ID lesz az aktív a többi usernél is..ami nem jó.
Hogy lehetne ezt kiküszöbölni?
kód?
kód
Loginben:
session_id ("temp"); // ezt nem tudom miért van benne
session_start();
$_SESSION['test'] = $_POST['username'];
következő php:
session_id ("temp");
session_start();
$TAX_ID=$_SESSION['test'];
akkor lehet hogy a session ID-t kell átírni a $_POST['username'] re? mindkettőben?
session_id
(PHP 4, PHP 5)
session_id -- Az aktuális munkamenet azonosító lekérdezése / beállítása
Leírás
string session_id ( [string id] )
A session_id() visszatér az aktuális munkamenet azonosítójával. Ha az id paramétert is megadod, akkor az az érték lesz az új munkamenet azonosító.
azaz amikor a session_id("temp") hívást végrehajtod, akkor garantálod, hogy csak egy darab session lesz az egész rendszerben.
Lehetőségek:
1) ne állítsd be a session elindítása előtt a session_id-t, azaz bízz meg a php-ban, hogy egyedi azonosítót generál a sessionökhöz
2) generálj olyan azonosítót, ami egyedi kliensenként. Több info: Munkamenet kezelés biztonsági kérdései
Köszi a választ
Tudnál egy egyszerű példát arra, hogy ezt hogyan tudom megvalósítani az én esetemben. Mert ha pl létrehozok egy microtime azonosítót ami valószinuleg egyedi arra hogy hivatkozok a következő PHP-k ban, ott ügy ezeket már nem kell definiálni csak hivatkozni rá, de hogyan?
minek példa?
ennek köze sincs a problémádhoz, nem olvastad el a válaszomat. Egyébként lehet PostgreSQL, Oracle adatbázisban is tárolni, vagy XML, ini, stb. fileban, vagy bármi egyéb.
A te problémád nem az, hogy hol tárolod a session id-t, hanem az, hogy minden session-nek UGYANAZT a sessin_id-t állítod be. Ha a linkelt cikk sem segít abban, hogy egyedi azonosítót generálj, ami megfelel a célodnak, akkor bízd a php-ra, azaz vedd ki a kódból azt a sort, hogy session_id("test"), s innentől kezdve minden session-nek egyedi azonosítója lesz. Ha a kódban valahol hivatkozol a session_id értékére, ott használd a session_id() függvényt, ami visszadja az azonosító sztringet.
példa:
login.php
nem értem a kérdést
"Ha egy időben több gépen belépnek "
Nem egy gépen többen? Több gép nem fog kapni azonos sessionid-t
temp vs test
A Session ID egy rekesz aminek az azonosítója a rekesz neve? és amit beleteszek az mindig az aktuális hasonló nevü rekeszbe kerül és ezért nem változik?