18. PHP and Cookies – Creating, Reading and Writing (குக்கீஸ் உருவாக்குதல், படித்தல் மற்றும் எழுதுதல்)
வலைப்பக்கம் வேண்டுமென்று யார் வேண்டுகோள் கொடுத்தாலும் எதைப்பற்றியும் கண்டுகொள்ளாமல் வலை சேவையங்கள், வலைப்பக்கங்களை கேட்டவர்களுக்கு அனுப்பி வைக்கும். வலைப்பக்கத்தைக் கேட்கும் நபர் இதற்கு முன்னர் வலைப்பக்கம் வேண்டி வேண்டுகோள் கொடுத்துள்ளாரா என்பதைப் பற்றிய எந்த விஷயத்தையும் கவனத்தில் எடுத்துக்கொள்ளாது. ஒவ்வொரு முறை வேண்டுகோள் வரும்போதும் அதை புதிய வேண்டுகோளாகவே கருதி வலைப்பக்கத்தை வேண்டுகோள் விடுத்தவருக்கு வலை சேவையகம் அனுப்பி வைக்கும்.
இதனால் பார்வையாளர் வலைப்பக்கத்துக்கு புதியவரா அல்லது ஏற்கனவே வலைப்பக்கத்தை பயன்படுத்திக் கொண்டு இருப்பவரா என்பதை கண்டுபிடிப்பதோ அல்லது பார்வையாளரை பின்தொடர்வதோ கடினமான ஒன்றாக ஆகி விடுகிறது.
இந்த பிரச்சனையை தீர்க்கும் விதமாகவும், வலையின்(web) நிலையற்ற தன்மையினைக் கண்காணிக்கவும், பார்வையாளரினை பின்தொடர்வதற்காகவும் உருவாக்கப்பட்ட ஒரு இயந்திரம்தான் Cookies.
குக்கீஸ்
நமது வலைப்பக்கத்துக்கு வருகை தரும் பார்வையாளர் பற்றிய விபரங்களை, பார்வையாளர்களின் கணினியிலேயே, சிறிதளவில் சேமித்து வைக்கும் வசதியினை Cookies வழங்குகிறது. இதனால் நமது வலைப்பக்கத்துக்கு வருகை தரும் பார்வையாளரினுடைய அனைத்து நிலைகளையும் வலைப்பக்கத்தின் மூலமாக பராமரித்து வர முடியும். அதோடு பார்வையாளர் ஒரு வலைப்பக்கத்தில் உள்ளிட்ட பயனரினுடைய பெயர், முகவரி, மின்னஞ்சல் முகவரி ஆகியவைகளை வேறொரு பக்கத்தில் உள்ளிட வேண்டிய நிலை வரும்போது மறுபடியும் உள்ளிட்டுக்கொண்டிருக்க வேண்டி அவசியமில்லை.
நமது வலைப்பக்கத்துக்கு Cookies வசதியினை ஏற்படுத்துவதற்கு முன்னர் சில விஷயங்களைக் கவனத்தில் கொள்ள வேண்டும். பயனரினுடைய இணைய உலாவியில் cookies வசதியினை பயனரால் நிறுத்தி வைக்க முடியும். இதனால் நம்முடைய cookies தொடர்பான செயல்பாடுகள் இயங்காமல் போக வாய்ப்பிருக்கிறது. இந்த காரணத்தினால் நம்முடைய வலைப்பக்கம் முழுவதும் cookies ஐயே நம்பி இருக்கும் விதத்தில் வடிவமைப்பதை தவிர்க்க வேண்டும்.
Cookies க்கு மாற்றாக வலைப்பக்கத்துக்கு வரும் பார்வையாளர்களின் நிலையை நிர்வகிக்க PHP யில் sessions இருக்கிறது. இதைப்பற்றி வரும் பகுதிகளில் நாம் விரிவாக பார்க்க இருக்கிறோம். Cookies மற்றும் Sessions களைப் வலைப்பக்கத்தில் பயன்படுத்துவது என்பது நம்முடைய தேவைகளைப் பொறுத்தது. தேவைகள் இல்லாத பட்சத்தில் இதை நாம் தவிர்த்துக்கொள்ளலாம்.
The Difference Between Cookies and Sessions (Cookies and Sessions இரண்டிற்குமான வேறுபாடு)
cookies மற்றும் sessions ஆகிய இரண்டுமே தகவல்களை சேமித்து வைத்து நம்முடை வலைதளத்தின் வெவ்வேறு பக்கங்கள் அந்த தகவல்களை அணுகுவதற்கு உதவுகிறது. அதே நேரத்தில் இரண்டினுடைய அணுகுமுறையிலும் வேறுபாடுகள் இருக்கிறது.
குக்கீஸ்
நம்முடைய வலைதளம் எந்த கணினியில் பார்க்கப்படுகிறதோ அந்த கணினியினுடைய வன் வட்டிலேயே(Hard Disk) Cookies கள் சேமிக்கப்படுகின்றன. நம்முடைய வலைதளத்தை பார்வையிட்டு மூடிவிட்ட பின்பும் Cookies வன் வட்டிலேயே சேமிக்கப்பட்டு இருக்கும். ஒரு Domain க்கு அதிகபட்சமாக 20 குக்கீஸ்கள் வரை அனுமதியுண்டு. ஒவ்வொரு குக்கீஸும் 4Kb அளவு கொண்டதாக இருக்கலாம்.
Sessions
Sessions கள் வலை சேவையகத்தில்(Web Server) சேமிக்கப்படுகின்றன. வலை சேவையகத்தில் சேமிக்கப்பட்டிருந்தாலும் அதே சேவையகத்தில் இருக்கும் மற்ற Domain கள் நம்முடைய தளத்திற்கான sessions உடைய தகவல்களை அணுக முடியாது. எவ்வளவு தகவல்களை வேண்டுமானாலும் session மூலமாக சேமித்துக்கொள்ளலாம். அதே நேரத்தில் சேமிக்கப்பட்ட தகவல்கள் பாதுகாப்பாகவும் இருக்கும். குக்கீஸைப் போன்று பயனரினுடைய உலாவிக்கு தகவல்கள் அனுப்பி வைக்கப்பட மாட்டாது.
குக்கீயினுடைய அமைப்பு (The Structure of Cookie)
name/value(பெயர்/மதிப்பு) எனும் வடிவத்தில் தகவல்களை சேமித்து வைக்க cookies அனுமதிக்கிறது. Name/value ஆகிய இரண்டையுமே நம்முடைய விருப்பத்திற்கு ஏற்றாற்போல கொடுத்துக்கொள்ளலாம். உதாரணமாக பயனரினுடைய பெயரை userName = Kathirvel Rajendran எனும் வடிவத்தில் சேமித்து வைப்பதை எடுத்து கொள்ளலாம். குக்கீஸ் எவ்வளவு நேரம் கணினியில் சேமித்து வைக்கப்பட்டிருக்க வேண்டும் அதாவது expiration date போன்ற கூடுதலான தகவல்களையும் cookies வைத்திருக்கும்.
குக்கீஸின் வடிவம் கீழ்காணும் வடிவத்தில் இருக்கும்:
name = Value; expires = expirationDateGMT; path=URLpath; domain=siteDomain
குக்கீஸ் காலாவதியாகும் நேரத்தை அமைத்தல்(Cookie Expiration Setting)
expires= எனும் விருப்பத் தேர்வு ஒரு குறிப்பிட்ட குக்கீ எப்பொழுது காலாவதியாக வேண்டும் என்பதை குறிப்பிடுகிறது. காலாவதியாகும் தேதியினை பெறுவதற்கு PHP யின் time() செயல்கூறு(function) பயன்படுத்தப்படுகிறது. இதைப் பற்றி வரும் பகுதிகளில் பார்க்க இருக்கிறோம்.
குக்கீயின் பாதை அமைப்பு(Cookie path Setting)
path= அமைப்பு குக்கீ எந்த URL க்குள் சேமிக்கப்பட வேண்டும் என்பதை முடிவு செய்கிறது. இயல்பாகவே, வலைப்பக்கம் எந்த அடைவிற்குள் இருக்கிறதோ அந்த அடைவிற்குள்தான் குக்கீஸ் சேமிக்கப்படும். உதாரணமாக, www.kaniyam/php/phpintamil.html எனும் பக்கத்திற்கான குக்கீ /php எனும் அடைவிற்குள் சேமித்து வைக்கப்பட்டிருக்கும்.
குக்கீ domain அமைப்பு(Cookie domain Setting)
path setting இல் உள்ளதைப் போன்று வலை சேவையகத்தில் இருக்கும் எந்த வலைதளம் குக்கீயை உருவாக்கியதோ, அந்த குக்கீயை அந்த தளம் மட்டுமே அணுக முடியும். மற்ற பக்கத்தினால் அதை அணுக முடியாது. அதே நேரத்தில் domain=domain name என்பதில் நாம் வேறொரு தளத்தினைய முகவரியைக் கொடுப்பதன் மூலம் மற்ற தளங்களும் குக்கீயை அணுகும் வகையில் செய்ய முடியும்.
உதாரணமாக, www.kaniyam.com ஒரு குக்கீயை உருவாக்கியிருந்தால், domain=www.gnutamil.blogspot.in என்று கொடுப்பதன் மூலம் அந்த குக்கீயை www.gnutamil.blogspot.in தளமும் அணுக முடியும்.
குக்கீயின் பாதுகாப்பு அமைப்பு(Cookie Security Setting)
குக்கீகள் பாதுகாப்பான HTTPS(Hyper Text Transfer Protocol Secure) பயன்படுத்தி அனுப்ப வேண்டுமா அல்லது பாதுகாப்பு இல்லாத HTTP யைப் பயன்படுத்தி அனுப்ப வேண்டுமா என்பதை முடிவு செய்கிறது.
குக்கீ உருவாக்குதல்(Creating a Cookie in PHP)
setcookie() செயல்கூறு(funtion) ஐப் பயன்படுத்தி குக்கீகள் உருவாக்கப்படுகின்றது. ஒரு குறிப்பிட்ட எண்ணிக்கையிலான arguments களை setcookie() function எடுத்துக்கொள்கிறது. முதல் argument குக்கீயின் பெயர், இரண்டாவது argument அந்த பெயருக்கான மதிப்பு. மூன்றாவது argument குக்கீ காலாவதியாகும் தேதி. நான்காவது argument குக்கீயினுடைய active path, ஐந்தாவது argument domain setting மற்றும் ஆறாவது argument security setting( 0 என்பது HTTP என்பதையும், 1 என்பது HTTPS என்பதையும் குறிக்கிறது.)
குக்கீயை உருவாக்குதல் உதாரண நிரல்
1
2
3
4
5
6
7
8
9
10
11
12
13
|
<?php //Creating Cookies echo "<b>Creating Cookies</b><br />" ; setcookie( 'userName' , 'Kathirvel Rajendran' , time() + 15); setcookie( 'emailid' , 'linuxkathirvel.info@gmail.com' , time() + 15); echo "<i>Cookies Created!</i><br />" ; ?> |
மேற்கண்ட நிரல் userName=Kathirvel Rajendran ஜோடி முறையில் குக்கீயை உருவாக்குகிறது. மேற்கண்ட குக்கீ உருவாக்கப்பட்ட நேரத்திலிருந்து 15 வினாடிகள் கழித்து காலாவதியாகிறது.
குக்கீயினைப் படித்தல்(Reading a Cookie in PHP)
மேலே நாம் உருவாக்கிய குக்கீயினை $_COOKIE array யின் மூலமாக அணுக முடியும். $_COOKIE array யானது ஒரு associative array ஆகும். $_COOKIE array யினுடைய index மதிப்பாக குக்கீயின் பெயரை கொடுப்பதன் மூலமாக அதன் மதிப்பை அணுக முடியும்.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<?php //Creating Cookies echo "<b>Creating Cookies</b><br />" ; setcookie( 'userName' , 'Kathirvel Rajendran' , time() + 15); setcookie( 'emailid' , 'linuxkathirvel.info@gmail.com' , time() + 15); echo "<i>Cookies Created!</i><br />" ; //Reading Cookies echo "<b>Reading Cookies</b><br />" ; echo "Username = " . $_COOKIE [ 'userName' ]. "<br />" ; echo "E-Mail Address = " . $_COOKIE [ 'emailid' ]. "<br />" ; ?> |
குக்கீயை அழித்தல்(Deleting a Cookie)
setcookie() செயல்கூறு(function) மூலமாக cookie ஐ அழிக்க முடியும். மறுபடியும் இங்கு time() function குக்கீ காலாவதியாகும் தேதியை கணக்கிட பயன்படுத்தப்படுகிறது. குக்கீயை உருவாக்குவதற்கும் setcookie() function ஐத் தான் பயன்படுத்தினோம். அழிக்கவும் setcookie() function ஐத் தான் பயன்படுத்துகிறோம். வி்த்தியாசம் என்னவென்றால் காலாவதியாகும் நேரத்தினை time() + seconds எனும் முறையில் கொடுத்தோம். இங்கு time() – seconds எனும் முறையில் கொடுத்துள்ளோம். – (கழித்தல் குறியீடு) கடந்த காலத்தை குறிக்கிறது.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
<?php //Creating Cookies echo "<b>Creating Cookies</b><br />" ; setcookie( 'userName' , 'Kathirvel Rajendran' , time() + 15); setcookie( 'emailid' , 'linuxkathirvel.info@gmail.com' , time() + 15); echo "<i>Cookies Created!</i><br />" ; //Deleting Cookie setcookie( 'userName' , '' , time() - 15); echo "UserName Cookie Deleted.<br />" ; //Reading Cookies echo "<b>Reading Cookies</b><br />" ; echo "Username = " . $_COOKIE [ 'userName' ]. "<br />" ; echo "E-Mail Address = " . $_COOKIE [ 'emailid' ]. "<br />" ; ?> |