ugrás a tartalomhoz

session_id() egyezik

vtsoftware · 2012. Feb. 18. (Szo), 17.08
Üdvözletem mindenkinek.

Írtam egy új statisztikai rendszert amit be is vezettem a tárhelyemen ami munkamenetazonosítókkal (session_id()) azonosítja hogy az adott ip visszatérő látogató-e.

Annak érdekében hogy gyorsuljon az egész és könyebb is legyen kezelni, elsődleges indexet adtam az adott oszlopnak ahol az azonosítót tárolom.

Mióta ez így működik a PHP elég furcsa dolgokat művel, mivel van olyan hibaüzenet a naplóban miszerint már van olyan kulcs.

Erre próbáltam valahogy "reagálni".
session_start();
if (!isset($_SESSION["init"])) {
  session_id(md5(time()));
  $_SESSION["init"] = true;
}
Sajnos evvel pedig valamilyen módon nem adódik át a munkamenet egy adott domainen belül fájloknak... nem tudok rájönni miért viszont más domainen gond nélkül működik csak kettőn nem.
A beállítások mindenütt rendben vannak, a működési elvük is egyezik, nincs olyan különbség ami ezt okozná... ezt jópárszor átnéztem.

Esetleg ha valaki összefutott ehhez hasonló problémával és talált rá megoldást vagy valakinek van ötlete hogy lehetne helyrehozni kérem írja meg.

Előre is köszönöm
 
1

idézet a php manualból

Raziel Anarki · 2012. Feb. 18. (Szo), 17.33
idézet a php manualból:

If id is specified, it will replace the current session id. session_id() needs to be called before session_start() for that purpose.


azaz a session_id()-t ilyen szándékkal (azaz új id paraméterrel) a session_start() előtt kell meghívni.

--

emellett szerintem ne a session_id-t használd erre a célra, hanem inkább küldj ki egy egyedi id-t (pl uniqid()-del + időbélyeggel) cookieban, és ellenőrizd a meglétét, így több paramétert is tudsz mérni. (gyakoriság pl)
2

Igen de...

vtsoftware · 2012. Feb. 19. (V), 02.25
Igen, de mi van akkor ha az így generált id is létezik már?

A cookie-s megoldást egy kicsit jobban körül tudod nekem írni?

Köszi.
4

Manual

Pepita · 2012. Feb. 19. (V), 14.35
Igen, de mi van akkor ha az így generált id is létezik már?
Eléggé valószínűtlen, mivel ehhez vissza kéne állítanod a szerver óráját pontosan a korábbi kérés idejére, microsec. pontossággal. uniqid()

Ajánlom még: setcookie() elolvasását.
3

Ezzel ugyan semmivel nem

tgr · 2012. Feb. 19. (V), 12.11
Ezzel ugyan semmivel nem jutottál közelebb az eredeti probléma megoldásához, de legalább triviálisan törhetővé tetted a session id-t.
5

+1

janoszen · 2012. Feb. 19. (V), 17.08
+1, ha nem ismered a titkosító kulcsok generálásának a biztonsági vonzatait, ne csinálj ilyeneket.