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:

<?php

    class SessionSaveHandler {
        protected $savePath;
        protected $sessionName;
    
        public function __construct() {
            session_set_save_handler(
                array($this, "open"),
                array($this, "close"),
                array($this, "read"),
                array($this, "write"),
                array($this, "destroy"),
                array($this, "gc")
            );
        }
    
        public function open($savePath, $sessionName) {
            $this->savePath = $savePath;
            $this->sessionName = $sessionName;
            return true;
        }
    
        public function close() { return true; }
        public function read($id) {}
        public function write($id, $data) { echo "<b>write function</b>: ".$data; }
        public function destroy($id) {}
        public function gc($maxlifetime) {}
    }
    
    new SessionSaveHandler();
    session_start();
    $_SESSION["string"] = "ok";
    $_SESSION["number"] = 100;
    echo "<b>serialized: </b>".serialize($_SESSION)."<br>";

?>
 
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? :)