What is Session in PHP – PHP सभी तरह की Cookies व Sessions को Handle व Manipulate करने हेतु Built-In Support Provide करने के लिए Persistent Variables देता है, जिन्हें विभिन्न Pages के बीच Same User द्वारा Multiple Visits को Identify करने के लिए Use किया जा सकता है।
Sessions हमें ये सुविधा देते हैं कि हम ऐसे Multipage Forms Create कर सकते हैं, जिनके Data एक से ज्यादा Pages के बीच Travel करते हैं। उदाहरण के लिए Shopping Cart, Authentication Information आदि।
जब PHP Session Create होता है तब हर First Time Visitor को PHP Session द्वारा एक Unique Session ID दिया जाता है। Default रूप से ये Session ID PHPSESSID नाम की एक Cookie में Save होता है। यदि User का Web Browser Cookies को Support नहीं करता या Web Browser में Cookies Disabled हैं, तो ये Session ID, Web Site के URL के साथ Associate होकर विभिन्न Pages के बीच Travel करता है।
हर Session के साथ एक Data Store Associated रहता है। हम इस Data Store के साथ कुछ Variables को Register कर सकते हैं। जब भी हम किसी Page को Start करते हैं, हमारे Data Store में Registered Variables को अपने Web Page में Load कर सकते हैं और जब भी हम हमारे Web Page से किसी दूसरे Web Page पर Move होते हैं, इन Variables के मानों को फिर से Data Store में Save कर सकते हैं।
Data Store में Registered Variables Web Site के विभिन्न Pages के बीच Persist रहते हैं यानी Available व Accessible रहते हैं और हम किसी एक Page पर इन Registered Persisted Variables में जो Changes करते हैं, वे Changes हमारी Web Site के अन्य Pages के बीच Visible रहते हैं।
उदाहरण के लिए जब हम किसी Page पर किसी Product को अपने Shopping Cart में Add करते हैं और किसी अन्य Product को अपने Shopping Cart में Add करने के लिए किसी दूसरे Page पर Move करते हैं, तो उस दूसरे Page पर भी पहले Page से Add किए गए Product की Information Data Store के माध्यम से Available रहती है। जिसके कारण हम Shopping Cart के विभिन्न Pages के बीच अपने Add किए गए विभिन्न Items को देख व Manipulate कर सकते हैं।
Session Basics
किसी Web Page के लिए Session को Start करने के लिए हमें PHP के session_start() Function को Call करना होता है। इस Function को हमेंशा अपने Document के Top पर ठीक Header की तरह Use करना होता है। यानी इस Function को Use करने से पहले हमारे Web Page के Body का कोई भी हिस्सा Create नहीं होना चाहिए। इसे हम निम्नानुसार Use कर सकते हैं:
<?php session_start() ?> <html> . . . </html>
किसी Variable को Session के साथ Register करने के लिए Variable के नाम को $_SESSION Super Global Array में Key के रूप में Specify करना होता है। जैसेः
<?php session_start( ); $_SESSION['hits'] = $_SESSION['hits'] + 1; ?> This page has been viewed <?= $_SESSION['hits'] ?> times.
session_start() Function $_SESSION Super Global Associative Array में सभी Registered Variables को Load करता है। इस Array में Variable का नाम Key के रूप में होता है।
उदाहरण के लिए उपरोक्त Code Segment में ‘hits’ वह Variable है, जो कि Session के Data Store साथ Register हो रहा है। इसलिए इसे $_SESSION Array में Key की तरह Represent किया गया है।
हम किसी भी Session Data Store में Registered Variable को session_unregister() Function का प्रयोग करके Unregister कर सकते हैं।
session_is_registered() Function का प्रयोग करके हम इस बात का पता लगा सकते हैं कि कोई Specify किया गया Variable Session के Data Store में Register हुआ या नहीं। यदि ये Function True Return करता है, तो इसका मतलब ये है कि Specified Variable Session में Register हो गया है।
यदि हम चाहें तो session_id() Function का प्रयोग करके Session ID का पता लगा सकते हैं। session_id() Function Current Session के Session ID को Return करता है।
किसी Session का End करने के लिए हमें session_destroy() Function को Use करना होता है। ये Function Current Session से Associated Data Store को Remove कर देता है लेकिन Web Browser के Cache में Stored Cookies और Global Variables को Delete नहीं करता।
इसका मतलब ये है कि यदि वही User फिर से Current Web Site में Login करता है, तो उसका Session ID वही रहता है, जो session_destroy() Function को Call करने से पहले था।
Session को पूरी तरह से समाप्त करने के लिए यानी Web Site से पूरी तरह से Logout करने के लिए Session ID का पूरी तरह से समाप्त होना जरूरी होता है। साथ ही यदि Session में Cookie का प्रयोग हुआ है, तो Cooke को भी Delete करना जरूरी होता है। इसलिए Session को पूरी तरह से समाप्त करने के लिए हम session_unset() Function को Use कर सकते हैं। ये Function Session से संबंधित सभी Variables को Destroy कर देता है।
हालांकि session_unset() Function Current Session से Associated सभी Session Variables को Delete कर देता है, लेकिन Storage Mechanism से सभी Session Related Data पूरी तरह से Delete नहीं होते। इसलिए हमें session_unset() व session_destroy() दोनों Functions को Use करके Session को Completely Remove करना होता है।
Session ID हमेंशा किसी एक Particular User के साथ Session Related सभी Data को Bind होता है। हालांकि PHP स्वयं ही Session ID को Create व Manipulate करता है, लेकिन कई बार ऐसी स्थिति होती है कि हमें Session ID को Manually Set या Retrieve करना होता है। इन दोनों जरूरतों को पूरा करने के लिए हमें PHP के session_id() Function को Use कर सकते हैं।
जब हम इस Function में कोई Parameter Pass नहीं करते हैं, तब ये Function Current Session ID Return करता है जबकि Parameter के रूप में यदि हम किसी String को Specify करते हैं, तो वह String Session ID के रूप में Current Session ID को Replace कर देता है। हम इस Function को निम्नानुसार Use कर सकते हैं:
<?php session_start(); echo "Your session identification number is ". session_id(); ?>
जब हम कोई Session Variable Create करते हैं, तो वह Session Variable Current Session के विभिन्न Pages के बीच Available रहता है। यदि हम किसी Session Variable को Delete करना चाहें, तो हम उस Variable को unset() Function का प्रयोग करके पूरी तरह से Current Session से Unregister कर सकते हैं।
PHP सभी Session Data को एक Standard Format में Store व Manage करता है, जो कि एक Single String के रूप में होता है। उदाहरण के लिए यदि हम username व password नाम के दो Session Variables Create करते हैं, तो ये Variables निम्न Format में PHP द्वारा Store व Handle किए जाते हैं:
name|s:length:”value”;
इस Format में
name उस Session Variable का नाम है, जिसे हमने Create किया है।
“s:” इस बात का Represent कर रहा है कि हमने जो Session Variable Create किया है, वह एक String है।
“length: उस Session Variable के नाम की Length को Specify करता है।
“value” उस Session Variable में Stored String को Represent करता है।
उदाहरण के लिए मानलो कि हम हमारे Username Session Variable में Value के रूप में “user” व Password Session Variable में Value के रूप में “password” Specify कर देते हैं, तो इन मानों के आधार पर PHP इन Data को निम्न Format में Store करेगाः
username|s:4:”user“;password|s:8:”password“
PHP हर Session Variable के Data को Store करते समय उन्हें अलग-अलग Identify करने के लिए उनके बीच Semicolon का प्रयोग करता है। हालांकि ये सभी काम PHP स्वयं अपने स्तर पर करता है, इसलिए हमें इनके बारे में चिन्ता की जरूरत नहीं होती है।
लेकिन फिर भी यदि कभी हमें Manually इन Encodings के साथ काम करना पडे, तो हम PHP कम session_encode() व session_decode() Functions का प्रयोग करके Session के Data को Manually Access कर सकते हैं।
session_encode() Function Argument के रूप में कोई Value Accept नहीं करता, लेकिन Return Value के रूप में एक String Return करता है, जिसमें Current Session का Data Encoded Form में Return होता है।
इस Encoded String को हम हमारी जरूरत व इच्छानुसार Database या File System में File के रूप में Store करके रख सकते हैं व जरूरत के अनुसार session_decode() Function का प्रयोग करके इस Session Data को फिर से Decode कर सकते हैं।
<?php session_start(); $_SESSION['username'] = "kuldeep"; $title = "Session Handling"; include_once('header.php'); $encodedSessionData = session_encode() . "<br>"; echo "Session Data: " . $encodedSessionData; include_once('footer.php'); ?>

session_decode() Function Parameter के रूप में Session Data के किसी Encoded String को Accept करता है और Session Data के रूप में Specified सभी Registered Variables को $_SESSION Global Array में Available करवाता है। जिसे हम $_SESSION Array द्वारा Access व Manipulate कर सकते हैं। इस Function को हम निम्नानुसार Use कर सकते हैं:
<?php session_start(); $title = "Session Handling"; include_once('header.php'); $encodedSessionData = 'hits|i:4;username|s:7:"kuldeep";'; $decodeSessionData = session_decode($encodedSessionData); echo "Username: ". $_SESSION['username']; include_once('footer.php'); ?>

session_decode() Function यदि Successfully Run होता है, तो True Return करता है अन्यथा False Return करता है। session_encode() Function केवल Registered Session Variables को ही Encode नहीं करता, बल्कि Session से सम्बंधित सभी Data को Encode करता है।
हालांकि Sessions का प्रयोग करके हम एक Professional Level का Login System Create कर सकते हैं, लेकिन जब हम Professional Level के Login System की बात करते हैं, तो हमें User के Registration की Information को Web Server पर किसी File में Store करना जरूरी होता है। फिर वह File कोई Text File हो सकती है अथवा कोई Database Table हो सकता है।
क्योंकि जब तक User की Information को किसी Flat File या Database Table में Store न किया जाए, तब तक हम Login System में Login करने वाले User द्वारा Specified Username व Password को Compare करके इस बात का पता नहीं लगा सकते कि जो User Login कर रहा है, वही User Registered है या नहीं।
इसलिए एक Professional Level का Login System बनाने से पहले हमें PHP के File Management System व Database Management System के बारे में थोडी बहुत जानकारी प्राप्त करना जरूरी है।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook PHP in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
PHP in Hindi | Page: 647 | Format: PDF