ugrás a tartalomhoz

Session érték ütközés elkerülése, ha az a login ID

Petrusz · 2006. Szep. 18. (H), 16.43
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?
 
1

kód?

zsepi · 2006. Szep. 18. (H), 17.02
kódot - csak az idevonatkozó részt - mutatnál?
3

kód

Petrusz · 2006. Szep. 18. (H), 17.29
Bocs lemaradt:

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

session_id

zsepi · 2006. Szep. 19. (K), 08.41
a manual szerint:
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
6

Köszi a választ

Petrusz · 2006. Szep. 19. (K), 09.46
Ilyen esetben lehet a session ID-t nem mysql-ben letárolni?
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?
7

minek példa?

zsepi · 2006. Szep. 19. (K), 11.11
Ilyen esetben lehet a session ID-t nem mysql-ben letárolni?

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
if (isSubmit ) {
   session_start();
   $_SESSION['bejelentkezett'] = true;
   $_SESSION['bejel_juzer'] = 'bela';
   redir('content.php');
}
content.php:
session_start();
if(true !== $_SESSION['bejelentkezett']) {
error('nincs bejelentkezve');
}
$sess_id = session_id();
echo "bejelentkezett juzer: {$_SESSION['bejel_juzer']}, session id: \"$sess_id\"\n" ;
2

nem értem a kérdést

Anonymous · 2006. Szep. 18. (H), 17.29
Nem igazán értem:
"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
4

temp vs test

Petrusz · 2006. Szep. 18. (H), 17.39
Most akkor a Session ID az azonosító vagy a $Session ben hozzárendelt változó, változik a különböző bejelentkezők esetében.
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?