ugrás a tartalomhoz

Custom session handler - hiba?

mahoo · 2013. Jún. 17. (H), 07.46
Segítsetek légy szíves mert nem értem a dolgot. Én azt hittem, hogy a custom session handler write metódusa ua. azt ez eredményt adja, mint a serialize($_SESSION). De nem... ez normális? Ha igen miért? Vagy csak én vagyok a béna?!

Teszt kód:
  1. <?php  
  2.   
  3.     class SessionSaveHandler {  
  4.         protected $savePath;  
  5.         protected $sessionName;  
  6.       
  7.         public function __construct() {  
  8.             session_set_save_handler(  
  9.                 array($this"open"),  
  10.                 array($this"close"),  
  11.                 array($this"read"),  
  12.                 array($this"write"),  
  13.                 array($this"destroy"),  
  14.                 array($this"gc")  
  15.             );  
  16.         }  
  17.       
  18.         public function open($savePath$sessionName) {  
  19.             $this->savePath = $savePath;  
  20.             $this->sessionName = $sessionName;  
  21.             return true;  
  22.         }  
  23.       
  24.         public function close() { return true; }  
  25.         public function read($id) {}  
  26.         public function write($id$data) { echo "<b>write function</b>: ".$data; }  
  27.         public function destroy($id) {}  
  28.         public function gc($maxlifetime) {}  
  29.     }  
  30.       
  31.     new SessionSaveHandler();  
  32.     session_start();  
  33.     $_SESSION["string"] = "ok";  
  34.     $_SESSION["number"] = 100;  
  35.     echo "<b>serialized: </b>".serialize($_SESSION)."<br>";  
  36.   
  37. ?>  
 
1

Igen, normális

complex857 · 2013. Jún. 17. (H), 09.26
Igen, a dolog normális, a sessionok számára php egy külön szerializációs formát használ, illetve konfigurálható (kiemelés tőlem):


session_data
The encoded session data. This data is the result of the PHP internally encoding the $_SESSION superglobal to a serialized string and passing it as this parameter. Please note sessions use an alternative serialization method.
2

Köszi az infót, segített!

mahoo · 2013. Jún. 17. (H), 20.50
Köszi az infót, segített!
3

Ebben csak az a siralmas,

inf · 2013. Jún. 18. (K), 06.51
Ebben csak az a siralmas, hogyha saját módon akarod letárolni az adatot, akkor hívhatsz rá unserialize-t, amit magadnak kell megírnod... Már vagy 10 éve itt lenne az ideje, hogy kiszórják a kukába az összes alap php libet, aztán újraírják nulláról... Egyedül még a PDO, amivel elégedett vagyok, nyilván az is kiterjesztés, nem része a core php-nek...
4

Nyílt forráskódú

Hidvégi Gábor · 2013. Jún. 18. (K), 08.26
Lehet nekik segíteni az ötletek megvalósításában.
5

Lehet, de nekem erre nincsen

inf · 2013. Jún. 18. (K), 12.15
Lehet, de nekem erre nincsen kapacitásom. API-ban tudnék tanácsot adni 1-2 helyen, hogy mit lehetne jobban, de C-hez - vagy tudomisén miben írták az interpretert - nem értek...
6

C

Hidvégi Gábor · 2013. Jún. 18. (K), 13.12
Scriptnyelvek után C-ben programozni kihívásokkal teli feladat : ) Egyébként szerintem érdemes kipróbálni, sosem lehet tudni, mikor lesz rá szükséged.
7

hát remélem soha :D haverom a

inf · 2013. Jún. 18. (K), 13.50
hát remélem soha :D haverom a go-t isteníti algoritmus íráshoz
11

Pedig szerethető nyelv :)

Joó Ádám · 2013. Jún. 21. (P), 00.35
Pedig szerethető nyelv :)
12

Ez is olyan, mint a nők,

inf · 2013. Jún. 21. (P), 02.10
Ez is olyan, mint a nők, mindegyik szerethető, de azért nem mindegyik passzol össze veled...
13

Eredetileg írtam egy második

Joó Ádám · 2013. Jún. 21. (P), 02.31
Eredetileg írtam egy második mondatot is, valahogy úgy, hogy "Már ha szereted a ? nőket", csak nem tudtam megállapodni benne, milyen jelző is kerüljön a paraméter helyére. WTF.
14

:D :D :D

inf · 2013. Jún. 21. (P), 03.36
:D :D :D
8

Namost önmagában szigorúan

complex857 · 2013. Jún. 18. (K), 14.33
Namost önmagában szigorúan vett "tároláshoz" nem kell dekódolni a kapott adatokat, csak ha bele is akarsz nyúlni / nézni, pl. ha más (nem php session lib) által is értelmezhető formában akarod őket elmenteni.
Dekódolást se muszáj saját magad megírnod, a session_decode() része a session libnek, bár roppant bosszantó módon a $_SESSION superglobal -ba rakosgatja be a dekódolt adatokat ahelyett, hogy simán visszaadná. php.net kommentek között található pár tisztán php implementáció (személy szerint nem volt még szükségem erre, nemtudom működnek-e).
9

Tisztában vagyok a

inf · 2013. Jún. 18. (K), 15.02
Tisztában vagyok a részletekkel, írtam már ilyent. Nyilván ha a session superglobal-ba rakja, akkor kapásból használhatatlan az a függvény...
10

Már megoldották a PHP-ban

MadBence · 2013. Jún. 18. (K), 15.38
Már megoldották a PHP-ban azt, hogy nem tudott |-t tartalmazó sztringet helyesen szerializálni? :)