PHP Lesson 08 - Sessions

P_Namal

Active member
  • Oct 19, 2007
    862
    224
    43
    Previous Posts ....

    Lesson 01 - PHP අට්ටාලය ගහගමු

    Lesson 02 - Form එකක තියෙන data, Database එකකට දාමු

    Lesson 03 - Database එකේ තියන data view කරගමු

    Lesson 04 - මෙන්න update delete

    Lesson 05 - Arrays

    Lesson 06 - empty(), isset()

    Lesson 07 - php with linux


    sessions කියන්නේ site එකකට log වෙන තනි user කෙනෙක්ගේ Data තියාගන්න පුලුවන් සහ site එකේ ඕනම තැනකදි ඒ data Access කරන්න පුලුවන් PHP වල තියෙන සරල විදියක්. මේකේදි log වෙන userටම සුවිශේෂ වූ (Unique) session ID එකක් generate කරලා ඒ ID එකෙන් අදාල user ව හදුනාගනු ලබනවා. Site එකේ කොතනකදි හරි session එකක් start කරන කොට දැනට generate කරපු ID එකක් නැත්තම් අලුතෙන් ID එකක් හදාගන්නවා. තියෙනවා නම ඒ ID එකම පාවිච්චි කරනවා.

    සාමාන්‍යයෙන් PHP variable store වෙන්නේ RAM එකේ නිසා ඒවායේ ආයු කාලය එ් ඒ variable type එක අනුව පොඩි කාලයක්. නමුත් session variable වල වෙනස, එම data වෙනම temporary file එකක save කිරිමයි. ඒ නිසා ඒ Data access කරන්න පුලුවන් පරාසය වැඩියි. ඒකයි $_SESSION variable එක ‘super global variable’ එකක් කියන්නේ. $_COOKIE කියන්නෙත් ඒ වගේ එකක්. (ඒ data save වෙන්නේ userගේ browser එකේ.)

    සාමාන්‍යයෙන් generate කරපු session ID එක store වෙලා තියෙන්නේ user browser එකේ cookies වල. නමුත් session data store වෙන්නේ server එකේ temporary file එකක encrypt වෙලා. ඒ data, $_SESSION කියන super global variable (Array එකක්) එකෙන් access කරන්න පුලුවන්.

    PHP:
    <?php session_start(); ?>

    මේ function එකෙන් තමයි unique session ID එකක් generate වෙලා ඒක user browser එකේ save වෙන්නේ.

    අපි දැන් $_COOKIE variable එකේ මොනාද තියෙන්නේ කියලා බැලුවොත්,

    cookies.jpg


    PHP:
    <?php
    session_start();
    
    var_dump($_COOKIE);
     ?>

    PHP:
    OUTPUT :
    array(3) { ["background_style"]=> string(15) "boxed pattern-1" ["__atuvc"]=> string(26) "33|13,0|14,0|15,0|16,20|17" ["PHPSESSID"]=> string(26) "j50s67099impujpsqlgmv3bvp3" }


    මේ array එකේ තියෙන values ඔයාලගේ වෙනස් වෙන්න පුලුවන්. නමුත් PHPSESSID කියලා array key එකක් අනිවා තියෙන්න ඕනි. ඒ key එකට අදාල value එකේ generate වෙච්ච session ID එක save වෙලා තියෙනවා.

    PHP:
    ["PHPSESSID"]=> string(26) "j50s67099impujpsqlgmv3bvp3" }

    $_SESSION varible එකේ මොනාද තියෙන්නේ කියලා බලමු.

    PHP:
    <?php
    session_start();
    
    var_dump($_SESSION);
     ?>

    PHP:
    OUTPUT:
    array(0) { }

    මේ array එක හිස් එකක්. මේකට හේතුව අපි තාම session variable එකට data දාපු නැති නිසා. session variable එකට data දැමීම normal array එකකට data assign කරනවා වගේ කරන්න පුලුවන්.

    PHP:
    Ex:
    $_SESSION[‘user_name’] = ‘Gama Raala’;
    $_SESSION[‘user_id’] = ‘1823’;

    දැන් මේ variable අපේ domain එකේ ඕනම page එකකදී access කරන්න පුලුවන්.

    PHP:
    echo $_SESSION[‘user_name’];
    
    OUTPUT:
    Gama Raala;

    user කෙනෙක් site එකකට log වුනාම මූලිකවම session array එක userගේ registered data වලින් පුරවනවා. site එකේ functions run වෙන්න ඒ data යොදාගෙන user logout වුනාම ඒ data remove කරනවා. Browser එක ‘close කරොත් ඉබේ ඒ data අයින් වෙලා යනවා.

    session එකක් manually remove කරන්න නම් session_destroy() හෝ session_unset() use කරලා මුලු session data ටිකම remove කරන්න පුලුවන්.

    session data save වෙන path එක linux OS වල නම් normally /tmp folder එකේ. අපේ OS එකේ කොහෙද save වෙන්නේ කියලා බලාගන්න php.ini file එකේ session.save_path parameter එක බලන්න.

    Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /customers/b/2/5/edited.com/httpd.www/beta/login.php:1) in /customers/b/2/5/edited.com/httpd.www/beta/inc/sessions.inc.php on line 11

    sessions වලදි එන පොදු error එකක් තමයි මේ. මේකට හේතුව session_start එකට කලින් මොනා හරි content එකක් තිබීම. ඒක space එකක් විතරක් වෙන්නත් පුලුවන්. <?php tag එකට පස්සේ මුලින්ම තියෙන code එක session_start වෙන්න ඕනිි.

    PHP:
    <?php
    session_start();
    ?>