PHP-യിലെ സെഷനുകളുടെ സംവിധാനം. എല്ലാ അഭ്യർത്ഥനകളിലും PHP session_id() അപ്ഡേറ്റ് ചെയ്യപ്പെടുന്നു, $_COOKIE ശൂന്യമാണ്. സെഷൻ യുക്തി

ക്ലയൻ്റ് കമ്പ്യൂട്ടറിനെക്കുറിച്ചുള്ള വിവരങ്ങൾ സെർവർ വശത്ത് സൂക്ഷിക്കുന്നതിനുള്ള ഒരു സംവിധാനമാണ് PHP-യിലെ സെഷനുകൾ. വാസ്തവത്തിൽ, PHP-യിലെ സെഷനുകൾ അത്ര സങ്കീർണ്ണമായ വിഷയമല്ല, എന്നാൽ അത് മനസിലാക്കാൻ PHP-യിൽ കുക്കികൾ എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് നിങ്ങൾ അറിയേണ്ടതുണ്ട്. അതിനാൽ, പിഎച്ച്പിയിൽ കുക്കികൾ എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്ന് നിങ്ങൾക്ക് അറിയില്ലെങ്കിൽ, ആദ്യം പ്രസക്തമായ ലേഖനം വായിക്കുക, തുടർന്ന് ഇവിടെ തിരികെ വരിക.

സെഷൻ എന്ന വാക്ക് ഇംഗ്ലീഷിൽ നിന്ന് സെഷൻ ആയി വിവർത്തനം ചെയ്തിട്ടുണ്ട്, അതിനാൽ PHP-യിലെ സെഷനുകളുടെ അർത്ഥം കൂടുതൽ വ്യക്തമാകും, പക്ഷേ പ്രോഗ്രാമർമാർ "സെഷനുകൾ" എന്ന പദം സ്വീകരിച്ചു, ഈ ലേഖനത്തിൽ ഞങ്ങൾ അത് ഉപയോഗിക്കും.

പിഎച്ച്‌പിയിലെ സെഷനുകൾ കുക്കി മെക്കാനിസവുമായി വളരെ സാമ്യമുള്ളതാണ്, അതേ കീ => മൂല്യമുള്ള ജോഡികൾ, അവ സെർവർ വശത്ത് മാത്രമേ സംഭരിച്ചിട്ടുള്ളൂ.

സെഷൻ_സ്റ്റാർട്ട്() ഫംഗ്‌ഷൻ

നമുക്ക് സെഷൻ ആരംഭിക്കേണ്ടതുണ്ട്, ഇതിനായി സെഷൻ_സ്റ്റാർട്ട്() ഫംഗ്ഷൻ ഉണ്ട്. ഈ ഫംഗ്‌ഷൻ ഒരു സെഷൻ അല്ലെങ്കിൽ സെഷൻ ആരംഭിക്കുന്നു, നിങ്ങൾ അതിനെ വിളിക്കാൻ ആഗ്രഹിക്കുന്നതെന്തും.

പേജിൻ്റെ തുടക്കത്തിൽ തന്നെ സെഷൻ_സ്റ്റാർട്ട് () ഫംഗ്‌ഷൻ വിളിക്കുന്നത് ഉചിതമാണ്, പക്ഷേ എൻ്റെ ഉദാഹരണങ്ങളിൽ ഞാൻ ഇത് ചെയ്യുന്നില്ല.

$_SESSION അറേ

സെർവറിൽ സംഭരിച്ചിരിക്കുന്നതും എന്നാൽ ഒരു അദ്വിതീയ സന്ദർശകനുമായി ബന്ധപ്പെട്ടതുമായ വേരിയബിളുകളുടെ ഗ്രൂപ്പുകളാണ് സെഷനുകൾ. വീണ്ടും, ഇതാണ് പ്രധാന കാര്യം: സെഷനുകൾ സെർവറിൽ സംഭരിച്ചിരിക്കുന്നു.

ഓരോ സന്ദർശകനും അവൻ്റെ സെഷനിൽ നിന്നുള്ള അവൻ്റെ ഡാറ്റയുമായി സംവദിക്കുന്നുവെന്ന് ഉറപ്പാക്കാൻ, ഒരു കുക്കി ഉപയോഗിക്കുന്നു, ഏത് PHP സ്വയം നൽകുന്നു എന്നത് സൃഷ്ടിക്കുന്നതിനുള്ള കമാൻഡ്, നിങ്ങൾ അതിനെക്കുറിച്ച് വിഷമിക്കേണ്ടതില്ല. ഈ കുക്കി സെർവറിന് മാത്രം പ്രസക്തമാണ്, ഉപയോക്തൃ ഡാറ്റ നേടുന്നതിന് ഉപയോഗിക്കാൻ കഴിയില്ല.

സെർവറിൽ, സെഷൻ ഡാറ്റ ഒരു ടെക്സ്റ്റ് ഫയലിൽ സംഭരിക്കുകയും $_SESSION അറേയിലെ PHP പ്രോഗ്രാമിൽ ലഭ്യമാണ്. ഒരു സെഷനിൽ ഒരു വേരിയബിൾ സംരക്ഷിക്കുന്നതിന്, ഈ അറേയിൽ അതിന് ഒരു മൂല്യം നൽകേണ്ടതുണ്ട്.

അവസാനമായി നമുക്ക് ഉദാഹരണങ്ങൾ ഉപയോഗിക്കാൻ തുടങ്ങാം. ഇത് വളരെ ലളിതമാണ്.

PHP-യിലെ സെഷനുകൾ അർത്ഥം."; ?>

ഇനി മറ്റൊരു ഉദാഹരണത്തിൽ $_SESSION അറേയിൽ നിന്ന് മൂല്യം നേടാൻ ശ്രമിക്കാം.

PHP-യിലെ സെഷനുകൾ

രണ്ടാമത്തെ ഉദാഹരണത്തിൽ ഞങ്ങൾ സെഷൻ_സ്റ്റാർട്ട്() ഫംഗ്‌ഷൻ നീക്കം ചെയ്‌താൽ $_SESSION അറേയിലെ ഡാറ്റയിലേക്ക് ഞങ്ങൾക്ക് ആക്‌സസ് ഉണ്ടാകില്ല എന്നത് ശ്രദ്ധിക്കുക.

session_id() ഫംഗ്‌ഷൻ

ഒരു സെഷൻ സൃഷ്ടിച്ചുകഴിഞ്ഞാൽ, നിങ്ങൾക്ക് സെഷൻ_ഐഡി() ഫംഗ്‌ഷൻ ഉപയോഗിച്ച് സെഷൻ്റെ അദ്വിതീയ ഐഡൻ്റിഫയറിലേക്ക് സ്വയമേവ ആക്‌സസ് ലഭിക്കും. സെഷൻ ഐഡി മൂല്യം സജ്ജീകരിക്കാനും നേടാനും ഈ ഫംഗ്ഷൻ നിങ്ങളെ അനുവദിക്കുന്നു.

PHP-യിലെ സെഷനുകൾ

നിങ്ങൾക്ക് നിങ്ങളുടെ ബ്രൗസറിൻ്റെ ഡെവലപ്പർ ടൂൾബാറിൽ നോക്കാം (Chrome-ൽ Ctrl + Shift + I അമർത്തുക, തുടർന്ന് റിസോഴ്‌സുകൾ അമർത്തുക, നിങ്ങൾ അവിടെ ഒരു കുക്കി കണ്ടെത്തും), ഈ ഡൊമെയ്ൻ നിങ്ങളുടെ ബ്രൗസറിനായി PHPSESSID എന്ന പേരിലും ഏകദേശം ഇനിപ്പറയുന്നവയിലും ഒരു കുക്കി സജ്ജീകരിച്ചിരിക്കുന്നു. മൂല്യം: "7g5df9rkd1hhvr33lq1k6c72p7".

PHPSESSID മൂല്യം അനുസരിച്ചാണ് സെർവർ നിങ്ങളുടെ ബ്രൗസർ നിർണ്ണയിക്കുന്നത്, മുമ്പ് എഴുതിയതുപോലെ $_SESSION അറേ വഴി സ്ക്രിപ്റ്റിന് ലഭ്യമാകുന്ന അനുബന്ധ വേരിയബിളുകൾക്കൊപ്പം പ്രവർത്തിക്കും.

session_name() ഫംഗ്‌ഷൻ

സെഷൻ ഐഡി മൂല്യം ലഭിക്കാൻ സെഷൻ_ഐഡി() ഫംഗ്ഷൻ നിങ്ങളെ അനുവദിക്കുമ്പോൾ, സെഷൻ നാമം ലഭിക്കാൻ സെഷൻ_നെയിം() ഫംഗ്ഷൻ നിങ്ങളെ അനുവദിക്കുന്നു.

PHP-യിലെ സെഷനുകൾ

സെഷൻ_സ്റ്റാർട്ട്() ഫംഗ്ഷനെ കുറിച്ച് ഒരിക്കൽ കൂടി

പിഎച്ച്‌പിയിൽ സെഷനുകൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിനെക്കുറിച്ച് ഇപ്പോൾ ഞങ്ങൾക്ക് കൂടുതലറിയാം, ഞങ്ങൾ വീണ്ടും സെഷൻ_സ്റ്റാർട്ട്() ഫംഗ്‌ഷനിലേക്ക് മടങ്ങേണ്ടതുണ്ട്. ഈ ഫംഗ്‌ഷൻ നിലവിലെ ഉപയോക്താവിനുള്ള സെഷൻ മെക്കാനിസം ആരംഭിക്കുന്നു. ഇത് കൃത്യമായി എങ്ങനെ സംഭവിക്കുന്നു:

  • ഉപയോക്താവ് ആദ്യമായി സൈറ്റ് സമാരംഭിക്കുകയാണെങ്കിൽ, സെഷൻ_സ്റ്റാർട്ട്() ക്ലയൻ്റിൽ ഒരു കുക്കി സജ്ജീകരിക്കുകയും ഉപയോക്തൃ ഐഡിയുമായി ബന്ധപ്പെട്ട സെർവറിൽ താൽക്കാലിക സംഭരണം സൃഷ്ടിക്കുകയും ചെയ്യുന്നു.
  • കൈമാറിയ നിലവിലെ ഐഡിയുമായി ബന്ധപ്പെട്ട സ്റ്റോർ വ്യക്തമാക്കുന്നു.
  • സെർവറിലെ സ്റ്റോറേജിൽ ഡാറ്റ ഉണ്ടെങ്കിൽ, അത് $_SESSION അറേയിൽ സ്ഥാപിക്കും.
  • php.ini ഫയലിൽ നിന്നുള്ള register_globals ഓണാണെങ്കിൽ, $_SESSION അറേയുടെ എല്ലാ ഘടകങ്ങളും ഗ്ലോബൽ വേരിയബിളുകളായി മാറുന്നു.

സെഷൻ ഉപയോഗ ഉദാഹരണം

ഇപ്പോൾ ഞങ്ങൾ സെഷനുകൾ ഉപയോഗിച്ച് ചെറിയ പരീക്ഷണങ്ങൾ നടത്താൻ അനുവദിക്കുന്ന ഒരു ഉദാഹരണം നോക്കും.

PHP-യിലെ സെഷനുകൾ

കൗണ്ടർ

നിലവിലെ സെഷനിൽ നിങ്ങൾ ഒരു പേജ് തുറന്നിരിക്കുന്നുഒരിക്കൽ.

">ഈ ടാബിൽ ഉദാഹരണം തുറക്കുക.

എല്ലാ സെഷൻ ജോലികളും $_SESSION അറേയെ അടിസ്ഥാനമാക്കിയുള്ളതാണ്, ഇത് ഈ ഉദാഹരണത്തിൽ വ്യക്തമായി കാണാം.

നിങ്ങൾ ബ്രൗസർ വിൻഡോ അടയ്ക്കുകയാണെങ്കിൽ, സെഷൻ അവസാനിക്കുകയും ഞങ്ങളുടെ കൌണ്ടർ പൂജ്യത്തിലേക്ക് പുനഃസജ്ജമാക്കുകയും ചെയ്യും. PHP-യിലെ സെഷനുകളുടെ ഈ സ്വഭാവം മാറ്റാവുന്നതാണ്;

ഒരു സെഷൻ അവസാനിപ്പിക്കുന്നു

സെഷൻ അവസാനിപ്പിക്കാൻ ഞങ്ങൾക്ക് ഇത് ആവശ്യമാണ്:

  1. $_SESSION അറേ മായ്‌ക്കുക.
  2. സെർവറിലെ താൽക്കാലിക സംഭരണം ഇല്ലാതാക്കുക.
  3. സെഷൻ കുക്കികൾ ഇല്ലാതാക്കുക.

നിങ്ങൾക്ക് session_unset() ഫംഗ്‌ഷൻ ഉപയോഗിച്ച് $_SESSION അറേ മായ്‌ക്കാൻ കഴിയും.

സെഷൻ_ഡെസ്ട്രോയ്() ഫംഗ്ഷൻ സെർവറിലെ താൽക്കാലിക സംഭരണം ഇല്ലാതാക്കുന്നു. വഴിയിൽ, അവൾ മറ്റൊന്നും ചെയ്യുന്നില്ല.

PHP-യിലെ കുക്കികളുമായി പ്രവർത്തിക്കുന്നത് സംബന്ധിച്ച പാഠത്തിൽ ഞങ്ങൾ പഠിച്ച setcookie() ഫംഗ്ഷൻ ഉപയോഗിച്ച് നിങ്ങൾ ഒരു സെഷൻ കുക്കി ഇല്ലാതാക്കേണ്ടതുണ്ട്.

ഒരു സെഷൻ അവസാനിപ്പിക്കുന്നതിനുള്ള ഉദാഹരണം:

ഒരു സെഷൻ അവസാനിപ്പിക്കുന്നു

സെഷൻ അവസാനിച്ചു.

ഇപ്പോൾ നിങ്ങൾക്ക് ഒരു പരീക്ഷണം നടത്താം: ഒരു വിൻഡോയിൽ ഒരു കൗണ്ടർ ഉപയോഗിച്ച് ഒരു ഉദാഹരണം പ്രവർത്തിപ്പിക്കുക, കൌണ്ടർ വർദ്ധിപ്പിക്കുക, തുടർന്ന് സെഷൻ ഇല്ലാതാക്കിക്കൊണ്ട് ഉദാഹരണം പ്രവർത്തിപ്പിക്കുക, കൗണ്ടർ ഉപയോഗിച്ച് പേജ് വീണ്ടും പുതുക്കുക.

നിങ്ങൾക്ക് ഇതുപോലുള്ള ഒരു കുക്കി ഫയൽ ഇല്ലാതാക്കാൻ കഴിയും:

setcookie(session_name(), "", time() - 60*60*24*32, "/")

സെഷൻ_നെയിം(), സെഷൻ_ഐഡി() ഫംഗ്‌ഷനുകളെക്കുറിച്ച് ഒരിക്കൽ കൂടി

സെഷൻ_നെയിം(), സെഷൻ_ഐഡി() ഫംഗ്‌ഷനുകൾ പ്രായോഗികമായി വളരെ അപൂർവമായി മാത്രമേ ഉപയോഗിക്കാറുള്ളൂ, പക്ഷേ പിഎച്ച്പിയിൽ സെഷനുകൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിൻ്റെ മെക്കാനിസം ലേഖനം വെളിപ്പെടുത്തേണ്ടതായതിനാൽ ഞാൻ അവയെക്കുറിച്ചാണ് എഴുതുന്നത്.

നിങ്ങളുടെ സ്വന്തം സെഷൻ പേരുകളും ഐഡികളും നിർവചിക്കുന്നതിന് നിങ്ങൾക്ക് ഈ ഫംഗ്ഷനുകൾ ഉപയോഗിക്കാം, എന്നാൽ ഇത് ശുപാർശ ചെയ്യുന്നില്ല. നിങ്ങൾക്ക് അവ സജ്ജീകരിക്കണമെങ്കിൽ, താഴെയുള്ള ഉദാഹരണത്തിലെന്നപോലെ, session_start() ഫംഗ്‌ഷന് മുമ്പായി ഈ ഫംഗ്‌ഷനുകൾ ആർഗ്യുമെൻ്റുകൾ ഉപയോഗിച്ച് എഴുതുക:

PHP-യിലെ സെഷനുകൾ

ഈ ഉദാഹരണം ഉപയോഗിച്ച്, എല്ലാ ഉപയോക്താക്കൾക്കും ഒരേ സെഷൻ ഐഡി നൽകും.

നമുക്ക് ഇവിടെ സൂക്ഷ്മമായി നോക്കാം: നിങ്ങൾ സെഷൻ_നെയിം() ഫംഗ്‌ഷനെക്കുറിച്ചുള്ള വിഭാഗത്തിൽ നിന്നുള്ള ഉദാഹരണം (ലിങ്ക് ഇതാ) വ്യത്യസ്ത ബ്രൗസറുകളിൽ (ഉദാഹരണത്തിന്, Chrome, Internet Explorer) പ്രവർത്തിപ്പിക്കുകയാണെങ്കിൽ, ഓരോ ബ്രൗസറിനും അതിൻ്റേതായ തനതായ സെഷൻ ഐഡൻ്റിഫയർ ഉണ്ടായിരിക്കും. . ബ്രൗസറുകൾ ഓരോന്നും കുക്കികൾ അവരുടെ സ്വന്തം ഫോൾഡറിൽ സംഭരിക്കുന്നു, അതിനാൽ സെഷൻ_സ്റ്റാർട്ട്() ഫംഗ്ഷൻ ഓരോ ബ്രൗസറിനും അതിൻ്റേതായ അദ്വിതീയ ഐഡൻ്റിഫയർ സൃഷ്ടിക്കാൻ അനുവദിക്കും, അതനുസരിച്ച്, സെർവറിലെ ഓരോ ബ്രൗസറിനും ഒരു അദ്വിതീയ സംഭരണം സൃഷ്ടിക്കപ്പെടും. അതിനാൽ, കൌണ്ടർ ഉദാഹരണം (ഇത്) ഓരോ ബ്രൗസറിലും സ്വതന്ത്രമായി പ്രവർത്തിക്കും.

എല്ലാ ഉപയോക്താക്കൾക്കും ഒരേ സെഷൻ ഐഡി നിങ്ങൾ സജ്ജീകരിക്കുകയാണെങ്കിൽ, അവർ സെർവറിൽ ഒരേ സ്റ്റോറേജിൽ പ്രവർത്തിക്കും. വ്യത്യസ്ത ബ്രൗസറുകളിൽ നിന്നുള്ള സന്ദർശനങ്ങൾ കണക്കാക്കുന്ന ഒരു കൗണ്ടറിൻ്റെ ഒരു ഉദാഹരണം ഇതാ:

100) ( session_unset(); session_destroy(); ) ?> PHP-യിലെ സെഷനുകൾ

കൗണ്ടർ നമ്പർ 2

വ്യത്യസ്ത ബ്രൗസറുകളിൽ പേജ് തുറന്നുഒരിക്കൽ.

">ഈ ടാബിൽ ഉദാഹരണം തുറക്കുക.

നിങ്ങൾ ഈ ഉദാഹരണം പ്രവർത്തിപ്പിക്കുകയാണെങ്കിൽ, നിങ്ങൾ അവിടെ ഒന്ന് കാണുമെന്നത് ഒരു വസ്തുതയല്ല. മറ്റ് സന്ദർശകർ സെർവറിലെ സെഷൻ സ്റ്റോറിലെ മൂല്യങ്ങൾ ഇതിനകം മാറ്റിയിരിക്കാം. ഈ സാഹചര്യത്തിൽ സെർവർ എപ്പോഴാണ് സംഭരണം ഇല്ലാതാക്കുന്നതെന്ന് എനിക്കറിയില്ല, അതിനാൽ കൌണ്ടർ 100 കവിഞ്ഞാൽ, ഞാൻ സെഷൻ അവസാനിപ്പിക്കും.

കാത്തിരിപ്പ് സമയം ക്രമീകരിക്കുന്നു

സ്ഥിരസ്ഥിതിയായി, സന്ദർശകൻ ബ്രൗസർ വിൻഡോ അടയ്ക്കുന്നത് വരെ സെഷൻ "ലൈവ്". സെഷൻ_സ്റ്റാർട്ട്() ഫംഗ്‌ഷൻ അത്തരത്തിലുള്ള ഒരു കുക്കി ക്ലയൻ്റിൽ സ്ഥാപിക്കുന്നു എന്നതാണ് ഇതിന് കാരണം.

session_set_cookie_params() ഫംഗ്‌ഷൻ ഉപയോഗിച്ച് സെഷൻ ലൈഫ് ടൈം മാറ്റാവുന്നതാണ്, അതിൻ്റെ വാക്യഘടന ഇതാ.

session_set_cookie_params (int lifetime [, string path [, string domain [, bool Security]]])

പ്രായോഗികമായി, ആദ്യ പാരാമീറ്റർ (ആയുഷ്കാലം) മാത്രം ഉപയോഗിച്ചാൽ മതിയാകും, ഇവിടെ നിങ്ങൾ നിമിഷങ്ങൾക്കുള്ളിൽ സമയം എഴുതുന്നു, ഇത് ബ്രൗസർ അടച്ചതിനുശേഷം സെർവർ എത്രത്തോളം സെഷൻ നില ഓർക്കണമെന്ന് നിർണ്ണയിക്കുന്നു.

session_set_cookie_params() ഫംഗ്‌ഷൻ്റെ പ്രഭാവം സ്‌ക്രിപ്റ്റ് പ്രവർത്തിക്കുന്ന കാലയളവിന് മാത്രമേ ബാധകമാകൂ.

ഈ ഫംഗ്ഷൻ ഉപയോഗിക്കുന്നതിനുള്ള ഒരു ഉദാഹരണം ഇതാ:

PHP-യിലെ സെഷനുകൾ

കൗണ്ടർ നമ്പർ 3

കൌണ്ടർ മൂല്യം:.

">ഈ ടാബിൽ കൗണ്ടർ തുറക്കുക.

കൗണ്ടർ അടച്ച് ബ്രൗസർ അടയ്ക്കുക, 30 സെക്കൻഡിനുശേഷം ഈ ഉദാഹരണം വീണ്ടും തുറക്കുക. നിങ്ങളുടെ സെഷൻ സംരക്ഷിക്കപ്പെടും.

7.7K

ഒരു PHP സെഷൻ ഉപയോഗിച്ച്, സെർവർ നിങ്ങളെ തിരിച്ചറിയുകയും ആവശ്യമായ പ്രവർത്തനങ്ങൾ നടത്താൻ നിങ്ങളെ അനുവദിക്കുകയും ചെയ്യുന്നു: വിവിധ വെബ് പേജുകളിലെ വിവരങ്ങൾ മാറ്റുക, പുതിയ വിവരങ്ങൾ ചേർക്കുക തുടങ്ങിയവ. സൈറ്റിലെ ജോലി പൂർത്തിയാക്കിയ ശേഷം, "ലോഗൗട്ട്" ബട്ടണിൽ ക്ലിക്കുചെയ്ത് നിങ്ങൾ നിലവിലെ സെഷൻ ഇല്ലാതാക്കുന്നു:

എന്താണ് ഒരു PHP സെഷൻ?

ഒന്നിലധികം വെബ് പേജുകളിലുടനീളം പ്രാമാണീകരണത്തിനായി ഉപയോഗിക്കാവുന്ന സെഷൻ വേരിയബിളുകളിൽ വിവരങ്ങൾ സംഭരിക്കുന്നതിനുള്ള ഒരു മാർഗമാണ് PHP സെഷൻ. കുക്കികളിൽ നിന്ന് വ്യത്യസ്തമായി, സെഷൻ വിവരങ്ങൾ ഉപയോക്താവിൻ്റെ കമ്പ്യൂട്ടറിൽ സൂക്ഷിക്കില്ല. പകരം, സെഷൻ ഒരു താൽക്കാലിക ഡയറക്ടറിയിൽ സെർവറിൽ ഒരു ഫയൽ സൃഷ്ടിക്കുന്നു.

സെഷനിലുടനീളം സംഭരിച്ചിരിക്കുന്ന ഈ വിവരങ്ങൾ റിസോഴ്സിൻ്റെ എല്ലാ വെബ് പേജുകൾക്കും ലഭ്യമാണ്. സെർവറിൽ, താൽക്കാലിക ഫയലിൻ്റെ സ്ഥാനം നിർണ്ണയിക്കുന്നത് php.ini കോൺഫിഗറേഷൻ ഫയലിലെ session.save_path പാരാമീറ്റർ ആണ്.

ഒരു PHP സെഷൻ സൃഷ്ടിക്കുമ്പോൾ, ഇനിപ്പറയുന്ന മൂന്ന് ഘട്ടങ്ങൾ നടപ്പിലാക്കുന്നു:

  • ഒരു സെഷൻ സൃഷ്ടിക്കുമ്പോൾ, PHP ഒരു അദ്വിതീയ ഐഡൻ്റിഫയർ സൃഷ്ടിക്കുന്നു, അത് 32 ഹെക്സാഡെസിമൽ സംഖ്യകളുടെ ക്രമരഹിതമായ സ്ട്രിംഗ് ആണ്. PHP സെഷൻ ലൈഫ് ടൈം ഐഡി ഇതുപോലെയാണ് കാണപ്പെടുന്നത്: 9c8foj87c3jj973actop1re472e8774;
  • ഒരു അദ്വിതീയ സെഷൻ ഐഡൻ്റിഫയർ സ്ട്രിംഗ് സംഭരിക്കുന്നതിന് സെർവർ ഉപയോക്താവിൻ്റെ കമ്പ്യൂട്ടറിലേക്ക് PHPSESSID എന്ന കുക്കി അയയ്ക്കുന്നു;
  • സെർവർ നിർദ്ദിഷ്ട താൽക്കാലിക ഡയറക്‌ടറിയിൽ ഒരു ഫയൽ ജനറേറ്റ് ചെയ്യുന്നു, അതിൽ പ്രിഫിക്‌സിനൊപ്പം അദ്വിതീയ സെഷൻ ഐഡൻ്റിഫയറിൻ്റെ പേര് അടങ്ങിയിരിക്കുന്നു. സെഷൻ_ജി. sess_9c8foj87c3jj973actop1re472e8774.

ഫയലിൽ നിന്ന് സെഷൻ വേരിയബിൾ മൂല്യങ്ങൾ വീണ്ടെടുക്കാൻ ഈ ക്രമീകരണങ്ങൾ PHP സ്ക്രിപ്റ്റിനെ സഹായിക്കുന്നു. ക്ലയൻ്റ് ഭാഗത്ത്, PHPSESSID സെഷൻ ഐഡൻ്റിഫയർ ഉൾക്കൊള്ളുന്നു. സെർവർ വശത്തുള്ള ഒരു പ്രത്യേക ഡയറക്ടറിയിൽ തിരയേണ്ട ഫയലിൻ്റെ പേര് ഇത് സ്ഥിരീകരിക്കുന്നു, അതിൽ നിന്ന് സെഷൻ വേരിയബിളുകൾ എക്‌സ്‌ട്രാക്‌റ്റ് ചെയ്യാനും സ്ഥിരീകരണത്തിനായി ഉപയോഗിക്കാനും കഴിയും.

സെഷൻ_ഡിസ്ട്രോയ്() ഫംഗ്‌ഷനെ വിളിക്കുന്ന ലോഗ്ഔട്ട് ബട്ടണിൽ ക്ലിക്കുചെയ്‌ത് ഉപയോക്താവിന് സെഷൻ അവസാനിപ്പിക്കാനാകും. ഉപയോക്താവ് ബ്രൗസർ അടയ്ക്കുമ്പോൾ, PHP സെഷൻ സ്വയമേവ അടയുന്നു. അല്ലെങ്കിൽ, നിർദ്ദിഷ്ട സമയത്തിന് ശേഷം സെർവർ സെഷൻ അവസാനിപ്പിക്കും.

PHP-യിലെ സെഷൻ വാക്യഘടന

ഒരു സെഷനിലൂടെ PHP അംഗീകാരം നൽകുമ്പോൾ, അത് session_start() ഫംഗ്‌ഷൻ ഉപയോഗിച്ച് സൃഷ്‌ടിക്കുകയും session_destroy() ഫംഗ്‌ഷൻ ഉപയോഗിച്ച് ഇല്ലാതാക്കുകയും ചെയ്യുന്നു. സെഷൻ വേരിയബിളുകളുടെ മൂല്യങ്ങൾ സജ്ജമാക്കാൻ $_SESSION എന്നറിയപ്പെടുന്ന ഒരു PHP ആഗോള വേരിയബിൾ ഉപയോഗിക്കുന്നു. നിങ്ങൾക്ക് session_unset() ഫംഗ്‌ഷൻ ഉപയോഗിച്ച് സെഷൻ വേരിയബിളുകൾക്കായി സജ്ജമാക്കിയ എല്ലാ മൂല്യങ്ങളും പുനഃസജ്ജമാക്കാൻ കഴിയും.

സെഷൻ പ്രവർത്തനങ്ങൾ

ഒരു PHP സെഷൻ ഉപയോഗിച്ച് ഇനിപ്പറയുന്ന പ്രവർത്തനങ്ങളും അവയുടെ ഉദാഹരണങ്ങളും ഞങ്ങൾ പരിശോധിക്കും.

  • ഒരു PHP സെഷൻ ആരംഭിക്കുകയും അതിൻ്റെ സെഷൻ വേരിയബിളുകൾ ക്രമീകരിക്കുകയും ചെയ്യുന്നു:സെഷൻ_സ്റ്റാർട്ട്() ഫംഗ്‌ഷൻ ഉപയോഗിച്ച് ഒരു പുതിയ PHP സെഷൻ ആരംഭിച്ചു. ഒരു സെഷൻ സൃഷ്ടിച്ചുകഴിഞ്ഞാൽ, അതിൻ്റെ സെഷൻ വേരിയബിളുകൾ $_SESSION ഉപയോഗിച്ച് സജ്ജമാക്കാൻ കഴിയും. വേരിയബിളുകൾക്കായി ഞങ്ങൾ മൂല്യങ്ങൾ സജ്ജമാക്കി " ഉപയോക്തൃ ഐഡി” — “php_user"ഒപ്പം" പാസ്വേഡ്” — “ട്യൂട്ടോറിയലുകൾ”:

PHP സെഷനുകൾ - സൃഷ്ടിക്കൽ ഒരു PHP സെഷൻ ആരംഭിക്കുകയും സെഷൻ വേരിയബിളുകൾ സജ്ജമാക്കുകയും ചെയ്തു!"; ?>

ഫലം: സെർവറിൽ മുകളിലുള്ള PHP കോഡ് പ്രവർത്തിപ്പിക്കുന്നത് ഇനിപ്പറയുന്ന സന്ദേശം നൽകും:

  • PHP സെഷൻ വേരിയബിൾ മൂല്യങ്ങൾ നേടുന്നു: കഴിഞ്ഞ PHP ലോഗിൻ സെഷനിൽ ഞങ്ങൾ സജ്ജമാക്കിയ വേരിയബിളുകളുടെ മൂല്യങ്ങൾ നേടാനാകും. ഓരോ പേജിൻ്റെയും തുടക്കത്തിൽ ഞങ്ങൾ ഒരു PHP സെഷൻ തുറക്കുമ്പോൾ ( സെഷൻ_ആരംഭം()), ചുവടെയുള്ള കോഡ് വ്യക്തമാക്കിയിരിക്കണം. $_SESSION ഗ്ലോബൽ വേരിയബിൾ ഉപയോഗിച്ച് ഞങ്ങൾ ഈ മൂല്യങ്ങൾ വീണ്ടെടുക്കുകയും പ്രദർശിപ്പിക്കുകയും ചെയ്യുന്നു:

PHP സെഷൻ - മൂല്യങ്ങൾ നേടുന്നു
"; പ്രതിധ്വനി "പാസ്‌വേഡ് - " . $_SESSION["പാസ്‌വേഡ്"] . "."; ?>

ഫലം: ഞങ്ങൾ സെർവറിൽ മുകളിലുള്ള PHP കോഡ് പ്രവർത്തിപ്പിക്കുമ്പോൾ, നമുക്ക് ഇനിപ്പറയുന്ന സന്ദേശം ലഭിക്കും. PHP സെഷൻ സൃഷ്ടിച്ചതിന് ശേഷം ഞങ്ങൾ നേരത്തെ സജ്ജമാക്കിയ സെഷൻ വേരിയബിളുകളുടെ മൂല്യങ്ങൾ പ്രദർശിപ്പിക്കും.

  • PHP സെഷൻ വേരിയബിൾ മൂല്യങ്ങൾ അപ്ഡേറ്റ് ചെയ്യുന്നു: ഒരു സെഷനിൽ, നിങ്ങൾക്ക് അതിൻ്റെ വേരിയബിളുകളുടെ മൂല്യങ്ങൾ അപ്ഡേറ്റ് ചെയ്യാൻ കഴിയും. ആദ്യം നമ്മൾ ഓരോ പേജിൻ്റെയും തുടക്കത്തിൽ ഒരു PHP സെഷൻ തുറക്കേണ്ടതുണ്ട് ( സെഷൻ_ആരംഭം()). ചുവടെയുള്ള കോഡിൽ, ഞങ്ങൾ വേരിയബിളുകളുടെ മൂല്യങ്ങൾ അപ്ഡേറ്റ് ചെയ്യുന്നു " ഉപയോക്തൃ ഐഡി” — “new_php_user"ഒപ്പം" പാസ്വേഡ്” — “വിദ്യാഭ്യാസം”.

നിങ്ങൾക്ക് പ്രിൻ്റ്_ആർ ($ _SESSION) ഫംഗ്‌ഷൻ ഉപയോഗിച്ച് സെഷൻ വേരിയബിളുകളുടെ ഒരു നിരയും അവയുടെ മൂല്യങ്ങളും പ്രിൻ്റ് ചെയ്യാൻ കഴിയും, ചുവടെ കാണിച്ചിരിക്കുന്നത് പോലെ:

PHP സെഷൻ - മൂല്യങ്ങൾ മാറ്റുന്നു
"; print_r($_SESSION); ?>

ഫലം: ഞങ്ങൾ സെർവറിൽ മുകളിലുള്ള PHP കോഡ് പ്രവർത്തിപ്പിക്കുമ്പോൾ, ഞങ്ങൾക്ക് ഇനിപ്പറയുന്ന സന്ദേശം ലഭിക്കും. പുതിയ മൂല്യങ്ങളുള്ള സെഷൻ വേരിയബിളുകളുടെ ഒരു നിര ഇതിൽ അടങ്ങിയിരിക്കും.

സെഷനുകൾ യഥാർത്ഥത്തിൽ വളരെ ലളിതമാണ്. എന്തുകൊണ്ടാണ് അവ ആവശ്യമുള്ളതെന്നും അവ എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്നും നിങ്ങൾ മനസ്സിലാക്കേണ്ടതുണ്ട്. ആദ്യം ആദ്യത്തെ ചോദ്യത്തിന് ഉത്തരം നൽകാം.
വെബ് സെർവർ ക്ലയൻ്റുമായി സ്ഥിരമായ ഒരു കണക്ഷൻ നിലനിർത്തുന്നില്ലെന്നും ഓരോ അഭ്യർത്ഥനയും മുമ്പത്തെവയുമായി ബന്ധമില്ലാതെ തന്നെ പുതിയതായി പ്രോസസ്സ് ചെയ്യുമെന്നും നിങ്ങൾക്കറിയാം.

അതായത്, നിങ്ങൾക്ക് ഒരേ സന്ദർശകനിൽ നിന്നുള്ള അഭ്യർത്ഥനകൾ ട്രാക്ക് ചെയ്യാനോ വ്യക്തിഗത പേജുകളുടെ കാഴ്ചകൾക്കിടയിൽ വേരിയബിളുകൾ സംരക്ഷിക്കാനോ കഴിയില്ല. ഈ രണ്ട് പ്രശ്നങ്ങൾ പരിഹരിക്കാനാണ് സെഷനുകൾ കണ്ടുപിടിച്ചത്.
യഥാർത്ഥത്തിൽ, സെഷനുകൾ, ചുരുക്കത്തിൽ, ഒരു ബ്രൗസർ അദ്വിതീയമായി തിരിച്ചറിയാനും സെഷൻ വേരിയബിളുകൾ സംഭരിച്ചിരിക്കുന്ന സെർവറിൽ ഈ ബ്രൗസറിനായി ഒരു ഫയൽ സൃഷ്ടിക്കാനും നിങ്ങളെ അനുവദിക്കുന്ന ഒരു സംവിധാനമാണ്.

അത്തരമൊരു സംവിധാനത്തിൻ്റെ ആവശ്യകത ഞാൻ വിശദമായി വിവരിക്കുന്നില്ല. ഒരു ഓൺലൈൻ സ്റ്റോറിലെ ഒരു ഷോപ്പിംഗ് കാർട്ട്, അംഗീകാരം, അതുപോലെ തന്നെ സ്പാമിൽ നിന്ന് ഒരു സൈറ്റിൻ്റെ സംവേദനാത്മക ഭാഗങ്ങൾ സംരക്ഷിക്കുന്നത് പോലെയുള്ള തീർത്തും നിസ്സാര പ്രശ്‌നങ്ങളല്ല ഇവ.

തത്വത്തിൽ, സെഷനുകളുടെ നിങ്ങളുടെ സ്വന്തം അനലോഗ് നിർമ്മിക്കുന്നത് വളരെ എളുപ്പമാണ്, PHP-യിൽ നിർമ്മിച്ചിരിക്കുന്നതുപോലെ പ്രവർത്തനക്ഷമമല്ല, എന്നാൽ സാരാംശത്തിൽ സമാനമാണ്. കുക്കികളും ഡാറ്റാബേസും അടിസ്ഥാനമാക്കി.

ഒരു സ്ക്രിപ്റ്റ് അഭ്യർത്ഥിക്കുമ്പോൾ, ഒരു പ്രത്യേക പേരുള്ള ഒരു കുക്കി വന്നിട്ടുണ്ടോ എന്ന് ഞങ്ങൾ നോക്കുന്നു.

കുക്കികൾ ഇല്ലെങ്കിൽ, അവ സജ്ജീകരിച്ച് ഡാറ്റാബേസിലേക്ക് ഉപയോക്തൃ ഡാറ്റ ഉപയോഗിച്ച് ഒരു പുതിയ വരി എഴുതുക. കുക്കികൾ ഉണ്ടെങ്കിൽ, ഞങ്ങൾ ഡാറ്റാബേസിൽ നിന്നുള്ള ഡാറ്റ വായിക്കുന്നു. മറ്റൊരു അഭ്യർത്ഥനയോടെ ഞങ്ങൾ ഡാറ്റാബേസിൽ നിന്ന് പഴയ റെക്കോർഡുകൾ ഇല്ലാതാക്കുന്നു, ഇപ്പോൾ ഞങ്ങൾക്ക് ഒരു സെഷൻ സംവിധാനം തയ്യാറാണ്. ഇത് ഒട്ടും ബുദ്ധിമുട്ടുള്ള കാര്യമല്ല. എന്നാൽ ബിൽറ്റ്-ഇൻ സെഷൻ മെക്കാനിസം ഉപയോഗിക്കുന്നത് അഭികാമ്യമാക്കുന്ന ചില സൂക്ഷ്മതകളുണ്ട്.

ആദ്യം, നിങ്ങൾ എങ്ങനെയെങ്കിലും ബ്രൗസർ തിരിച്ചറിയേണ്ടതുണ്ട്. ഇത് ചെയ്യുന്നതിന്, നിങ്ങൾ അതിന് ഒരു അദ്വിതീയ ഐഡൻ്റിഫയർ നൽകുകയും ഓരോ അഭ്യർത്ഥനയ്‌ക്കൊപ്പം അത് കൈമാറാൻ ആവശ്യപ്പെടുകയും വേണം. സമ്മതിക്കുന്നതിൽ ഞാൻ ലജ്ജിക്കുന്നു, പക്ഷേ സെഷനുകളെക്കുറിച്ച് ഞാൻ ആദ്യമായി പഠിച്ചപ്പോൾ, ഇത് ഒരുതരം പ്രത്യേക സംവിധാനമാണെന്നും ബ്രൗസറും സെർവറും തമ്മിലുള്ള ആശയവിനിമയത്തിനുള്ള ചില പുതിയ മാർഗങ്ങളാണെന്നും ഞാൻ കരുതി - “സെഷനുകൾ”. സെഷൻ ഐഡൻ്റിഫയർ ചില പ്രത്യേക രീതിയിൽ കൈമാറ്റം ചെയ്യപ്പെടുന്നു. പക്ഷേ നിരാശ കഠിനമായിരുന്നു...
സെഷനുകൾ സ്റ്റാൻഡേർഡ്, അറിയപ്പെടുന്ന ഡാറ്റാ ട്രാൻസ്ഫർ രീതികൾ ഉപയോഗിക്കുന്നു. യഥാർത്ഥത്തിൽ, മറ്റുള്ളവരൊന്നും ഇല്ല.
ഒരു ഐഡൻ്റിഫയർ ഒരു സാധാരണ വേരിയബിളാണ്. സ്ഥിരസ്ഥിതിയായി അതിൻ്റെ പേര് PHPSESSID എന്നാണ്.
PHP യുടെ ജോലി അത് ബ്രൗസറിലേക്ക് അയയ്‌ക്കുക എന്നതാണ്, അതുവഴി അടുത്ത അഭ്യർത്ഥനയ്‌ക്കൊപ്പം അത് തിരികെ നൽകും. ഇതിനകം സൂചിപ്പിച്ച FAQ വിഭാഗത്തിൽ നിന്ന്, ഒരു വേരിയബിൾ രണ്ട് തരത്തിൽ മാത്രമേ കൈമാറാൻ കഴിയൂ എന്ന് വ്യക്തമാണ്: കുക്കികളിലോ ഒരു POST/GET അഭ്യർത്ഥനയിലോ.

PHP രണ്ട് ഓപ്ഷനുകളും ഉപയോഗിക്കുന്നു.

php.ini-ലെ രണ്ട് ക്രമീകരണങ്ങൾ ഇതിന് ഉത്തരവാദികളാണ്:
session.use_cookies - 1 ന് തുല്യമാണെങ്കിൽ, PHP ഐഡൻ്റിഫയർ കുക്കികളിലേക്ക് കൈമാറുന്നു, 0 ആണെങ്കിൽ അല്ല.

session.use_trans_sid 1 ന് തുല്യമാണെങ്കിൽ, PHP അത് ട്രാൻസ്മിറ്റ് ചെയ്യുന്നു, അത് URL-കളിലേക്കും ഫോമുകളിലേക്കും ചേർക്കുന്നു, 0 ആണെങ്കിൽ അല്ല.

നിങ്ങൾക്ക് ഇവയും മറ്റ് സെഷൻ പാരാമീറ്ററുകളും മറ്റ് PHP ക്രമീകരണങ്ങൾ പോലെ തന്നെ മാറ്റാൻ കഴിയും - php.ini ഫയലിൽ, അതുപോലെ ini_set() കമാൻഡ് അല്ലെങ്കിൽ വെബ് സെർവർ കോൺഫിഗറേഷൻ ഫയലുകളിൽ ആദ്യത്തേത് മാത്രമേ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുള്ളൂവെങ്കിൽ, സെഷൻ്റെ തുടക്കത്തിൽ (ഓരോ കോളുംസെഷൻ_ആരംഭം()

രണ്ടാമത്തേത് മാത്രമേ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുള്ളൂ എങ്കിൽ, കുക്കികൾ സജ്ജീകരിക്കില്ല. ഇതാണ് സംഭവിക്കുന്നത്, അതിനായി, വാസ്തവത്തിൽ, അന്തർനിർമ്മിത സെഷൻ സംവിധാനം ഉപയോഗിക്കുന്നത് മൂല്യവത്താണ്. സ്‌ക്രിപ്റ്റ് അതിൻ്റെ ജോലി ചെയ്‌ത് പേജ് പൂർണ്ണമായും രൂപീകരിച്ച ശേഷം, PHP മുഴുവൻ പേജും സ്കാൻ ചെയ്യുകയും ഓരോ ലിങ്കിലേക്കും ഓരോ ഫോമിലേക്കും ഒരു സെഷൻ ഐഡൻ്റിഫയർ ചേർക്കുന്നു. ഇത് ഇതുപോലെ തോന്നുന്നു:

സൂചിക

ആയി മാറുന്നു

സൂചിക

കൂടാതെ ഒരു മറഞ്ഞിരിക്കുന്ന ഫീൽഡ് ഫോമുകളിൽ ചേർക്കുന്നു

സൈദ്ധാന്തികമായി, കുക്കികളിലും ഡാറ്റാബേസിലും ഉള്ള ഞങ്ങളുടെ വീട്ടിലുണ്ടാക്കിയ സെഷനുകളിൽ, നിങ്ങൾക്ക് എല്ലാ ലിങ്കുകളിലേക്കും ഐഡി കൈമാറ്റം സ്വമേധയാ അസൈൻ ചെയ്യാൻ കഴിയും - തുടർന്ന് കുക്കികൾ പരിഗണിക്കാതെ തന്നെ ഞങ്ങളുടെ സ്വന്തം സെഷനുകൾ പ്രവർത്തിക്കും. എന്നാൽ നിങ്ങൾ സമ്മതിക്കുമോ - മറ്റൊരാൾ ഈ ജോലി ചെയ്യുമ്പോൾ അത് കൂടുതൽ സന്തോഷകരമാണോ? ;-)

സ്ഥിരസ്ഥിതിയായി, PHP-യുടെ സമീപകാല പതിപ്പുകളിൽ രണ്ട് ഓപ്ഷനുകളും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു. PHP എങ്ങനെയാണ് ഇത് കൈകാര്യം ചെയ്യുന്നത്? കുക്ക് എപ്പോഴും പ്രദർശിപ്പിച്ചിരിക്കുന്നു. ഒരു സെഷൻ ഐഡൻ്റിഫയർ ഉപയോഗിച്ച് PHP കുക്കികൾ കണ്ടെത്തിയില്ലെങ്കിൽ മാത്രമേ ലിങ്കുകൾ സ്വയമേവ പൂർത്തീകരിക്കപ്പെടുകയുള്ളൂ. ഈ സെഷനിൽ ഒരു ഉപയോക്താവ് ആദ്യമായി സൈറ്റ് സന്ദർശിക്കുമ്പോൾ, കുക്കികൾ സജ്ജീകരിക്കുകയും ലിങ്കുകൾ പൂർത്തിയാക്കുകയും ചെയ്യും. അടുത്ത അഭ്യർത്ഥനയിൽ, കുക്കികൾ പിന്തുണയ്ക്കുന്നുവെങ്കിൽ, PHP കുക്കികൾ കാണുകയും ലിങ്കുകൾ പൂർത്തിയാക്കുന്നത് നിർത്തുകയും ചെയ്യുന്നു. കുക്കികൾ പ്രവർത്തിക്കുന്നില്ലെങ്കിൽ, ലിങ്കുകളിലേക്ക് ഐഡി ശരിയായി ചേർക്കുന്നത് PHP തുടരുന്നു, കൂടാതെ സെഷൻ നഷ്ടപ്പെടില്ല.
കുക്കികൾ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുള്ള ഉപയോക്താക്കൾക്ക് ഐഡിയുമായുള്ള ദീർഘമായ ലിങ്ക് ഒരിക്കൽ മാത്രമേ കാണൂ.

ഐഡി കൈമാറ്റം പൂർത്തിയായി. സെർവർ വശത്ത് ഡാറ്റ ഫയൽ ബൈൻഡ് ചെയ്യുക മാത്രമാണ് ഇപ്പോൾ അവശേഷിക്കുന്നത്. PHP ഞങ്ങൾക്കായി ഇത് ചെയ്യും. ലളിതമായി എഴുതുക:

സെഷൻ_ആരംഭം();
$_SESSION [ "ടെസ്റ്റ്" ]= "ഹലോ വേൾഡ്!" ;

ഈ സെഷനുമായി ബന്ധപ്പെട്ട ഫയലിലേക്ക് PHP ടെസ്റ്റ് വേരിയബിൾ എഴുതും.

ഇവിടെ വളരെ പ്രധാനപ്പെട്ട ഒരു കുറിപ്പുണ്ട്.

അറേ $_SESSION- പ്രത്യേക.
വാസ്തവത്തിൽ, വിവിധ സ്ക്രിപ്റ്റുകളിൽ നാം ലഭ്യമാക്കാൻ ആഗ്രഹിക്കുന്ന വേരിയബിളുകൾ ഇതിൽ അടങ്ങിയിരിക്കുന്നു.
ഒരു സെഷനിൽ ഒരു വേരിയബിൾ സ്ഥാപിക്കാൻ, അത് $_SESSION അറേ എലമെൻ്റിലേക്ക് അസൈൻ ചെയ്യുക.
അതിൻ്റെ മൂല്യം ലഭിക്കാൻ, അതേ ഘടകം ആക്സസ് ചെയ്യുക. ഒരു ഉദാഹരണം താഴെ ആയിരിക്കും.

PHP മാലിന്യ ശേഖരണവും കൈകാര്യം ചെയ്യുന്നു - കാലഹരണപ്പെട്ട ഫയലുകൾ നീക്കംചെയ്യുന്നു. ഡാറ്റ എൻകോഡിംഗും മറ്റ് ആവശ്യമായ കാര്യങ്ങളുടെ ഒരു കൂട്ടവും. ഈ പരിചരണത്തിൻ്റെ ഫലമായി, സെഷനുകൾക്കൊപ്പം പ്രവർത്തിക്കുന്നത് വളരെ ലളിതമാണ്.
സെഷനുകൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിൻ്റെ ഉദാഹരണത്തിലേക്ക് ഞങ്ങൾ ഇവിടെ വരുന്നു.
വളരെ ചെറിയ ഒരു ഉദാഹരണം:

സെഷൻ_ആരംഭം();

പ്രതിധ്വനി "നിങ്ങൾ ഈ പേജ് അപ്ഡേറ്റ് ചെയ്തു". $_SESSION["കൗണ്ടർ"]++. "ഒരിക്കൽ.";
പ്രതിധ്വനി "
അപ്ഡേറ്റ്" ;
?>

സെഷനിൽ നമുക്ക് ഒരു കൌണ്ടർ വേരിയബിൾ ഉണ്ടോ എന്ന് ഞങ്ങൾ പരിശോധിക്കുന്നു, ഇല്ലെങ്കിൽ, ഞങ്ങൾ അത് 0 എന്ന മൂല്യം ഉപയോഗിച്ച് സൃഷ്ടിക്കുന്നു, തുടർന്ന് അതിൻ്റെ മൂല്യം പ്രദർശിപ്പിച്ച് ഒന്നായി വർദ്ധിപ്പിക്കുക. വർദ്ധിച്ച മൂല്യം സെഷനിൽ എഴുതപ്പെടും, അടുത്ത തവണ സ്ക്രിപ്റ്റ് വിളിക്കുമ്പോൾ, വേരിയബിളിന് മൂല്യം 1 ഉണ്ടായിരിക്കും. ഇത് വളരെ ലളിതമാണ്.

സൈറ്റിൻ്റെ ഏത് പേജിലും സെഷൻ വേരിയബിളുകളിലേക്ക് ആക്‌സസ് ലഭിക്കുന്നതിന്, ഞങ്ങൾക്ക് സെഷനുകൾ ആവശ്യമുള്ള ഓരോ ഫയലിൻ്റെയും തുടക്കത്തിൽ നിങ്ങൾ ഒരു (!) വരി മാത്രം എഴുതേണ്ടതുണ്ട്:

സെഷൻ_ആരംഭം();

സെഷൻ_ആരംഭം();
എങ്കിൽ ($_SESSION [ "അംഗീകൃതം" ]<> 1 ) {
തലക്കെട്ട്("ലൊക്കേഷൻ: /auth.php" );
പുറത്ത്;
}

ഒരു സെഷനിൽ നിന്ന് വേരിയബിളുകൾ നീക്കംചെയ്യുന്നു. നിങ്ങൾക്ക് register_globals=off ഉണ്ടെങ്കിൽ, എഴുതുക

അൺസെറ്റ് ($_SESSION [ "var" ]);

ഇല്ലെങ്കിൽ പിന്നെ സമീപംഅതിനൊപ്പം നിങ്ങൾ എഴുതേണ്ടതുണ്ട്:

session_unregister("var");

ഏതൊക്കെ സെഷനുകൾ ഉപയോഗിക്കണം, എന്തിനുവേണ്ടി ഉപയോഗിക്കരുതെന്ന് മനസ്സിലാക്കേണ്ടത് വളരെ പ്രധാനമാണ്.

ആദ്യം, ഉപയോക്താവിന് ആവശ്യമുള്ളപ്പോൾ മാത്രമേ സെഷനുകൾ ഉപയോഗിക്കാൻ കഴിയൂ, അല്ലാതെ അവനെ തടസ്സപ്പെടുത്തരുതെന്ന് ഓർമ്മിക്കുക. എല്ലാത്തിനുമുപരി, അയാൾക്ക് എപ്പോൾ വേണമെങ്കിലും ഐഡൻ്റിഫയർ ഒഴിവാക്കാനാകും!
ഒരു വ്യക്തി, ഒരു സ്ക്രിപ്റ്റ് അല്ല ഫോം പൂരിപ്പിക്കുന്നത് എന്ന് പരിശോധിക്കുമ്പോൾ, ഉപയോക്താവിന് സെഷൻ പ്രവർത്തിക്കുന്നതിൽ താൽപ്പര്യമുണ്ട് - അല്ലാത്തപക്ഷം അയാൾക്ക് ഫോം സമർപ്പിക്കാൻ കഴിയില്ല! എന്നാൽ ഒരു സ്ക്രിപ്റ്റിലേക്ക് അഭ്യർത്ഥനകളുടെ എണ്ണം പരിമിതപ്പെടുത്തുന്നതിന് ഒരു സെഷൻ ഇനി അനുയോജ്യമല്ല - ക്ഷുദ്രകരമായ ഒരു സ്ക്രിപ്റ്റ് ഒരു ഐഡൻ്റിഫയർ നൽകില്ല.

രണ്ടാമതായി. ഒരു സെഷൻ എന്നത് ഒരു വ്യക്തി മനസ്സിലാക്കുന്നതുപോലെ, സൈറ്റിനൊപ്പം പ്രവർത്തിക്കുന്ന ഒരു സെഷനാണെന്ന വസ്തുത വ്യക്തമായി മനസ്സിലാക്കേണ്ടത് പ്രധാനമാണ്. ഞാൻ വന്നു, ജോലി ചെയ്തു, ബ്രൗസർ അടച്ചു - സെഷൻ അവസാനിച്ചു. ഒരു സിനിമാ സെഷൻ പോലെ. നിങ്ങൾക്ക് മറ്റൊന്ന് കാണണമെങ്കിൽ, പുതിയ ടിക്കറ്റ് വാങ്ങുക. ഒരു പുതിയ സെഷൻ ആരംഭിക്കുക. ഇതിന് സാങ്കേതിക വിശദീകരണവുമുണ്ട്. ബ്രൗസർ അടയ്ക്കുന്നത് വരെ മാത്രമേ സെഷൻ മെക്കാനിസം പ്രവർത്തിക്കൂ എന്ന് ഉറപ്പുനൽകുന്നു. എല്ലാത്തിനുമുപരി, കുക്കികൾ ക്ലയൻ്റിനായി പ്രവർത്തിച്ചേക്കില്ല, ഈ സാഹചര്യത്തിൽ, സ്വാഭാവികമായും, ഐഡൻ്റിഫയറിന് അനുബന്ധമായി നൽകിയിട്ടുള്ള എല്ലാ ലിങ്കുകളും അത് അടയ്ക്കുമ്പോൾ അപ്രത്യക്ഷമാകും.

ശരിയാണ്, ബ്രൗസർ അടയ്ക്കാതെ സെഷൻ അപ്രത്യക്ഷമായേക്കാം. ഈ ലേഖനത്തിൽ ചർച്ച ചെയ്ത പരിമിതികൾ കാരണം, ഉപയോക്താവ് ബ്രൗസർ അടച്ച നിമിഷം സെഷൻ മെക്കാനിസത്തിന് നിർണ്ണയിക്കാൻ കഴിയില്ല. ഇതിനായി, ഒരു ടൈംഔട്ട് ഉപയോഗിക്കുന്നു - മുൻകൂട്ടി നിശ്ചയിച്ച സമയം, അതിനുശേഷം ഉപയോക്താവ് സൈറ്റ് വിട്ടുവെന്ന് ഞങ്ങൾ കരുതുന്നു. സ്ഥിരസ്ഥിതിയായി, ഈ ക്രമീകരണം 24 മിനിറ്റാണ്.

നിങ്ങൾക്ക് ഉപയോക്തൃ വിവരങ്ങൾ ദീർഘകാലത്തേക്ക് സംരക്ഷിക്കണമെങ്കിൽ, കുക്കികളും ആവശ്യമെങ്കിൽ സെർവറിൽ ഒരു ഡാറ്റാബേസും ഉപയോഗിക്കുക. പ്രത്യേകിച്ചും, എല്ലാ ജനപ്രിയ അംഗീകാര സംവിധാനങ്ങളും പ്രവർത്തിക്കുന്നത് ഇങ്ങനെയാണ്:

ഉപയോക്താവിനെ തിരിച്ചറിയുമ്പോൾ, ഒരു സെഷൻ ആരംഭിക്കുകയും അംഗീകാരത്തിൻ്റെ അടയാളം അതിൽ കൈമാറുകയും ചെയ്യുന്നു.
- നിങ്ങൾക്ക് ഒരു ഉപയോക്താവിനെ "ഓർമ്മിക്കണമെങ്കിൽ", അവനെ തിരിച്ചറിയാൻ ഒരു കുക്കി സജ്ജീകരിച്ചിരിക്കുന്നു.
- അടുത്ത തവണ ഉപയോക്താവ് സൈറ്റ് സന്ദർശിക്കുമ്പോൾ, ലോഗിൻ ചെയ്യുന്നതിനായി, അവൻ ഒന്നുകിൽ ഒരു പാസ്‌വേഡ് നൽകണം, അല്ലെങ്കിൽ മുമ്പ് സജ്ജമാക്കിയ കുക്കികൾ ഉപയോഗിച്ച് സിസ്റ്റം തന്നെ അത് തിരിച്ചറിയുകയും സെഷൻ ആരംഭിക്കുകയും ചെയ്യും. പഴയത് തുടരുന്നതിനുപകരം ഒരു പുതിയ സെഷൻ.

മൂന്നാമതായി, സൈറ്റിൽ പ്രവേശിക്കുന്ന എല്ലാവർക്കും നിങ്ങൾ വിവേചനരഹിതമായി സെഷനുകൾ ആരംഭിക്കരുത്. ഇത് തികച്ചും അനാവശ്യമായ ഒരു ഭാരം സൃഷ്ടിക്കും. നിസ്സാരകാര്യങ്ങൾക്കായി സെഷനുകൾ ഉപയോഗിക്കരുത് - ഉദാഹരണത്തിന്, കൗണ്ടറുകളിൽ. സ്‌പൈലോഗ് സെഷനുകളെ വിളിക്കുന്നത്, തീർച്ചയായും, ലോഗിൻ സ്ഥിതിവിവരക്കണക്കുകളുടെ അടിസ്ഥാനത്തിലാണ് കണക്കാക്കുന്നത്, കൂടാതെ പിഎച്ച്‌പിക്ക് സമാനമായ ഒരു സെഷൻ മെക്കാനിസം ഉപയോഗിക്കുന്നില്ല.

കൂടാതെ, നിങ്ങളുടെ സൈറ്റിനെ സൂചികയിലാക്കുന്ന ഒരു തിരയൽ എഞ്ചിൻ എടുക്കാം. തിരയൽ റോബോട്ട് കുക്കികളെ പിന്തുണയ്‌ക്കുന്നില്ലെങ്കിൽ, PHP സ്ഥിരസ്ഥിതിയായി ലിങ്കുകളിലേക്ക് PHPSESSID നൽകും, അത് തിരയൽ എഞ്ചിന് വളരെ സുഖകരമല്ലായിരിക്കാം, കിംവദന്തികൾ അനുസരിച്ച്, എന്തായാലും ഡൈനാമിക് ലിങ്കുകളെ അനുകൂലിക്കുന്നില്ല, പക്ഷേ ഇവിടെ പൊതുവെ - a നിങ്ങൾ സന്ദർശിക്കുമ്പോഴെല്ലാം പുതിയ വിലാസം!

സൈറ്റിൻ്റെ അടച്ച വിഭാഗത്തിലേക്കുള്ള ആക്‌സസ് നിയന്ത്രിക്കാൻ സെഷനുകൾ ഉപയോഗിക്കുകയാണെങ്കിൽ, എല്ലാം ഒരു തിരയൽ എഞ്ചിൻ മാത്രമാണ്, അത് സൂചികയിലാക്കരുത്. അംഗീകൃതവും അനധികൃതവുമായ ഉപയോക്താക്കൾക്ക് ഒരേ പേജ് കാണിക്കണമെങ്കിൽ, ഈ ട്രിക്ക് സഹായിക്കും - പാസ്‌വേഡ് നൽകിയവർക്കോ അല്ലെങ്കിൽ ഇതിനകം സെഷൻ ആരംഭിച്ചവർക്കോ മാത്രം സെഷൻ ആരംഭിക്കുക.

ഇത് ചെയ്യുന്നതിന്, വെറുതെ എന്നതിന് പകരം ഓരോ പേജിൻ്റെയും തുടക്കത്തിലേക്ക് പോകുക ആദ്യത്തേത് മാത്രമേ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുള്ളൂവെങ്കിൽ, സെഷൻ്റെ തുടക്കത്തിൽ (ഓരോ കോളുംഞങ്ങൾ എഴുതുന്നു:

എങ്കിൽ (ഇസെറ്റ്($_REQUEST [സെഷൻ_നാമം ()])) സെഷൻ_ആരംഭിക്കുക ();

അതിനാൽ, ഐഡൻ്റിഫയർ അയച്ചവർക്കായി മാത്രമാണ് ഞങ്ങൾ സെഷൻ ആരംഭിക്കുന്നത്.
അതനുസരിച്ച്, ഇത് ആദ്യമായി ഉപയോക്താവിന് അയയ്ക്കണം - അംഗീകാര സമയത്ത്.

പേരും ഐഡൻ്റിറ്റിയും ശരിയാണെങ്കിൽ ഞങ്ങൾ എഴുതുന്നു ആദ്യത്തേത് മാത്രമേ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുള്ളൂവെങ്കിൽ, സെഷൻ്റെ തുടക്കത്തിൽ (ഓരോ കോളും !

സെഷനുകളിൽ പ്രവർത്തിക്കാൻ ശ്രമിക്കുമ്പോൾ PHP ഉണ്ടാക്കുന്ന ഏറ്റവും സാധാരണമായ പിശകുകൾ ഇനിപ്പറയുന്നവയാണ്:
അതിൽ രണ്ടെണ്ണം

മുന്നറിയിപ്പ്: സെഷൻ കുക്കി അയയ്ക്കാൻ കഴിയില്ല - തലക്കെട്ടുകൾ ഇതിനകം അയച്ചു
മുന്നറിയിപ്പ്: സെഷൻ കാഷെ ലിമിറ്റർ അയയ്ക്കാൻ കഴിയില്ല - തലക്കെട്ടുകൾ ഇതിനകം അയച്ചു

ഇതേ കാരണത്താൽ ഉണ്ടാകുന്ന, പരിഹാരം ഈ ത്രെഡിൽ വിവരിച്ചിരിക്കുന്നു

മുന്നറിയിപ്പ്: open(/tmp\sess_SID, O_RDWR) പരാജയപ്പെട്ടു: ലൈൻ നമ്പറിൽ full_script_path-ൽ അത്തരം ഫയലോ ഡയറക്‌ടറിയോ (2) ഇല്ല

പണ്ട് അവൾ അങ്ങനെയായിരുന്നു

മുന്നറിയിപ്പ്: സെഷൻ ഡാറ്റ (ഫയലുകൾ) എഴുതുന്നതിൽ പരാജയപ്പെട്ടു. session.save_path ൻ്റെ നിലവിലെ ക്രമീകരണം ശരിയാണോ എന്ന് പരിശോധിക്കുക (/tmp) ,

ഇംഗ്ലീഷിൽ നിന്ന് വിവർത്തനം ചെയ്‌താൽ, അത് പ്രശ്‌നം വിശദമായി വിശദീകരിക്കുന്നു: സെഷൻ ഫയലുകൾ എഴുതിയിരിക്കുന്ന php.ini-ൽ വ്യക്തമാക്കിയ ഡയറക്‌ടറിയിലേക്കുള്ള പാത ലഭ്യമല്ല. ഈ പിശക് പരിഹരിക്കാൻ ഏറ്റവും എളുപ്പമുള്ളതാണ്. നിലവിലുള്ളതും എഴുതാവുന്നതുമായ ഒരു ഡയറക്ടറി രജിസ്റ്റർ ചെയ്യുക, ഉദാഹരണത്തിന്,

session.save_path = c:\windows\temp

ഇതിന് ശേഷം അപ്പാച്ചെ റീസ്റ്റാർട്ട് ചെയ്യാൻ മറക്കരുത്.

അത് മാറുന്നതുപോലെ, മനുഷ്യൻ്റെ ബുദ്ധിക്ക് പരിധികളില്ല, അതിനാൽ ഞാൻ വിശദീകരിക്കാൻ നിർബന്ധിതനാകുന്നു:
മൂന്നാമത്തെ പിശകിനെക്കുറിച്ചുള്ള ഒരു സന്ദേശം (ഡയറക്‌ടറി കണ്ടെത്താൻ കഴിയില്ല) ആദ്യത്തെ രണ്ടെണ്ണം പ്രത്യക്ഷപ്പെടുന്നതിലേക്ക് അനിവാര്യമായും നയിക്കും, കാരണം പിശക് സന്ദേശം ബ്രൗസറിലേക്കും ഹെഡറുകളിലേക്കും ഔട്ട്‌പുട്ട് ആയതിനാൽ അത് ഉപയോഗിക്കാൻ കഴിയില്ല. അതിനാൽ, ഒരു അകാല നിഗമനത്തിനായി തിരക്കുകൂട്ടരുത്, എന്നാൽ ആദ്യം ശരിയായ പാത എഴുതുക!

സെഷനുകളിൽ പ്രവർത്തിക്കുമ്പോൾ അടുത്ത ഏറ്റവും സാധാരണമായ പ്രശ്നം register_globals-ൻ്റെ കനത്ത പാരമ്പര്യമാണ്. $_SESSION അറേയുടെ സൂചികകളുമായി പൊരുത്തപ്പെടുന്ന സ്ക്രിപ്റ്റ് വേരിയബിളുകളുടെ പേരുകൾ നൽകരുത്!

Register_globals=നൊപ്പം മൂല്യങ്ങൾ പരസ്പരം തിരുത്തിയെഴുതുകയും നിങ്ങൾ ആശയക്കുഴപ്പത്തിലാകുകയും ചെയ്യും.

ഇത് പ്രവർത്തിക്കുന്നില്ലെങ്കിൽ, പക്ഷേ സന്ദേശങ്ങളൊന്നും ദൃശ്യമാകുന്നില്ലെങ്കിൽ, സ്ക്രീനിൽ എല്ലാ പിശകുകളും പ്രദർശിപ്പിക്കുന്നതിന് ഉത്തരവാദിയായ സ്ക്രിപ്റ്റിൻ്റെ തുടക്കത്തിൽ തന്നെ രണ്ട് വരികൾ ചേർക്കുക - പിശകുകൾ ഉണ്ടാകാൻ സാധ്യതയുണ്ട്, പക്ഷേ നിങ്ങൾ അവ കാണുന്നില്ല.

ini_set("display_errors" , 1 );
പിശക്_റിപ്പോർട്ടിംഗ് (E_ALL);

അല്ലെങ്കിൽ error_log-ൽ പിശകുകൾ കാണുക. പൊതുവേ, പിശക് സന്ദേശങ്ങൾ പ്രദർശിപ്പിക്കുന്ന വിഷയം ഈ ലേഖനത്തിൻ്റെ പരിധിക്കപ്പുറമാണ്, അതിനാൽ നിങ്ങൾക്ക് അവ കുറഞ്ഞത് കാണാനാകുമെന്ന് ഉറപ്പാക്കുക.

ഈ വിഭാഗത്തിൽ പിശകുകൾ കണ്ടെത്തുന്നതിനെക്കുറിച്ച് നിങ്ങൾക്ക് കുറച്ചുകൂടി വായിക്കാം. പിശകുകളൊന്നുമില്ലെന്ന് നിങ്ങൾക്ക് ഉറപ്പുണ്ടെങ്കിൽ, നൽകിയിരിക്കുന്ന ഉദാഹരണം എന്തായാലും പ്രവർത്തിക്കുന്നില്ല, ഒരുപക്ഷേ PHP URL വഴി ഐഡി കൈമാറുന്നത് പ്രവർത്തനക്ഷമമാക്കുന്നില്ല,.
ചില കാരണങ്ങളാൽ കുക്കികളും പ്രവർത്തിക്കുന്നില്ല

നിങ്ങളുടെ കുക്കികളിൽ എന്താണ് സംഭവിക്കുന്നതെന്ന് കാണുക.

സെഷൻ_ആരംഭം();
പൊതുവേ, നിങ്ങളുടെ സെഷനുകൾ പ്രവർത്തിക്കുന്നില്ലെങ്കിൽ, ആദ്യം സെഷൻ ഐഡൻ്റിഫയർ സ്വമേധയാ കൈമാറാൻ ശ്രമിക്കുക, അതായത്, ഒരു ലിങ്ക് ഉണ്ടാക്കി അതിലേക്ക് ഒരു ഐഡൻ്റിഫയർ നൽകുക:
പ്രതിധ്വനി "നിങ്ങൾ ഈ പേജ് അപ്ഡേറ്റ് ചെയ്തു"എങ്കിൽ (!isset($_SESSION [ "counter" ])) $_SESSION [ "counter" ]= 0 ;

അപ്ഡേറ്റ്" ;
?>

. $_SESSION["കൗണ്ടർ"]++. "ഒരിക്കൽ.

ഈ സാഹചര്യത്തിൽ, സെഷൻ.use_only_cookies നിർദ്ദേശം പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ലെന്ന് നിങ്ങൾ ഉറപ്പാക്കണം, ഇത് URL വഴിയാണ് സെഷൻ ഐഡൻ്റിഫയർ സ്വീകരിക്കുന്നതെങ്കിൽ അത് സ്വീകരിക്കുന്നതിൽ നിന്ന് PHP-യെ തടയുന്നു. ഈ ഉദാഹരണം പ്രവർത്തിക്കുന്നില്ലെങ്കിൽ, പ്രശ്നം ഒന്നുകിൽ നിസ്സാരമാണ്അക്ഷരത്തെറ്റുകൾ $_SESSION(സെഷനുകളിലെ "പ്രശ്നങ്ങളിൽ" പകുതിയും അക്ഷരത്തെറ്റുള്ള വേരിയബിൾ നാമത്തിൽ നിന്നാണ് വന്നത്), അല്ലെങ്കിൽ PHP-യുടെ വളരെ പഴയ പതിപ്പിൽ: സെഷനുകൾക്കുള്ള പിന്തുണ പതിപ്പ് 4.0-ലും അറേയിലും ദൃശ്യമാകുന്നു. - 4.1 ൽ (ഇതിന് മുമ്പ് ഇത് ഉപയോഗിച്ചിരുന്നു).

ഇത് പ്രവർത്തിക്കുന്നുവെങ്കിൽ, പ്രശ്നം കുക്കികളിലാണ്. ഏത് തരത്തിലുള്ള കുക്കികളാണ് സെർവർ ബ്രൗസറിലേക്ക് സജ്ജീകരിക്കുന്നത്, ബ്രൗസർ അവ തിരികെ നൽകുന്നുണ്ടോ എന്ന് നിരീക്ഷിക്കുക. ബ്രൗസറിനും സെർവറിനുമിടയിൽ എച്ച്ടിടിപി തലക്കെട്ടുകളുടെ കൈമാറ്റം നോക്കി തിരയുന്നത് വളരെ ഉപയോഗപ്രദമാണ്.

കുക്കികൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിൻ്റെ ഒരു വിശദീകരണം ഇതിനകം തന്നെ ദൈർഘ്യമേറിയ ഈ വാചകത്തിൻ്റെ പരിധിക്കപ്പുറമാണ്, എന്നാൽ സെർവർ ഒരു ഐഡൻ്റിഫയർ ഉപയോഗിച്ച് കുക്കികൾ അയയ്‌ക്കുന്നുവെന്നും ബ്രൗസർ അവ തിരികെ നൽകുമെന്നും ഉറപ്പാക്കുക. അതേ സമയം ഐഡൻ്റിഫയറുകൾ പരസ്പരം യോജിക്കുന്നു =)
കുക്കികൾ ക്രമീകരണം ഇതുപോലെ ആയിരിക്കണം

സെറ്റ്-കുക്കി: PHPSESSID=prlgdfbvlg5fbsbshch6hj0cq6;

സെറ്റ്-കുക്കി: PHPSESSID=prlgdfbvlg5fbsbshch6hj0cq6;

പാത =/
(നിങ്ങൾ സ്ക്രിപ്റ്റ് ആവശ്യപ്പെടുന്നത് റൂട്ട് ഡയറക്ടറിയിൽ നിന്നല്ലെങ്കിൽ)

സെർവർ പ്രതികരണം ഇതുപോലെ ആയിരിക്കണം

കുക്കി: PHPSESSID=prlgdfbvlg5fbsbshch6hj0cq6

കുക്കി: PHPSESSID=prlgdfbvlg5fbsbshch6hj0cq6;

b=b

സെഷൻ ഐഡി ഒഴികെയുള്ള കുക്കികൾ ബ്രൗസർ തിരികെ നൽകിയാൽ.
ഇവിടെ നിന്നുള്ള ഉദാഹരണം പ്രവർത്തിക്കുന്നുണ്ടെങ്കിലും നിങ്ങളുടെ സ്വന്തം കോഡ് ഇല്ലെങ്കിൽ, പ്രശ്നം സെഷനുകളിലല്ല, അൽഗോരിതത്തിലാണ്. നിങ്ങൾക്ക് വേരിയബിൾ എവിടെയാണ് നഷ്ടപ്പെട്ടതെന്ന് നോക്കുക, ഉദാഹരണം ഇവിടെ നിന്ന് ഘട്ടം ഘട്ടമായി കൈമാറുക, നിങ്ങളുടെ സ്ക്രിപ്റ്റ് ഡീബഗ് ചെയ്യുക.
നിങ്ങൾ ഹെഡർ റീഡയറക്ഷനോ JavaScript നാവിഗേഷനോ ഉപയോഗിക്കുകയാണെങ്കിൽ മറ്റൊരു പ്രശ്നം ഉണ്ടാകാം.

പോലുള്ള ലിങ്കുകളിലേക്ക് മാത്രം സെഷൻ ഐഡൻ്റിഫയർ PHP യാന്ത്രികമായി ചേർക്കുന്നു എന്നതാണ് വസ്തുത

, എന്നാൽ തലക്കെട്ടുകൾ, ജാവാസ്ക്രിപ്റ്റ്, മെറ്റാ ടാഗുകൾ എന്നിവയ്ക്കായി ഇത് ചെയ്യുന്നില്ല.

അതിനാൽ, നിങ്ങൾ ഐഡൻ്റിഫയർ സ്വമേധയാ ചേർക്കേണ്ടതുണ്ട്, ഉദാഹരണത്തിന്, ഇതുപോലെ:

  • തലക്കെട്ട്("ലൊക്കേഷൻ: /script.php?" . session_name(). "=" . session_id());
    കൂടാതെ, വളരെ അപൂർവമായ ഒരു പ്രശ്നം, അത് എവിടെ നിന്നാണ് വരുന്നത് എന്നത് പൂർണ്ണമായും വ്യക്തമല്ല, സെഷൻ.save_handler ക്രമീകരണത്തിന് ഫയലുകളിൽ നിന്ന് വ്യത്യസ്തമായ ഒരു മൂല്യമുണ്ട്.
    ഇത് അങ്ങനെയല്ലെങ്കിൽ, അത് ശരിയാക്കുക.
  • കുക്കികൾക്ക് പുറമേ, സെഷൻ മെക്കാനിസം പേജ് കാഷെ ചെയ്യുന്നതിനെ നിരോധിക്കുന്ന തലക്കെട്ടുകളും അയയ്ക്കുന്നു (അതേ കാഷെ ലിമിറ്റർ). html-ന് ഇത് ശരിയും ആവശ്യവുമാണ്. എന്നാൽ നിങ്ങൾ അംഗീകാരം പരിശോധിക്കുന്ന ഒരു സ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് ഒരു ഫയൽ അയയ്ക്കാൻ ശ്രമിക്കുമ്പോൾ, Internet Explorer അത് ഡൗൺലോഡ് ചെയ്യാൻ വിസമ്മതിക്കുന്നു. ഈ തലക്കെട്ടാണ് കാരണം. വിളിക്കൂ $_SESSION session_cache_limiter("സ്വകാര്യം"); സെഷൻ ആരംഭിക്കുന്നതിന് മുമ്പ് പ്രശ്നം പരിഹരിക്കണം.വിചിത്രമായി തോന്നിയേക്കാം, പക്ഷേ അറേയിൽ
  • നിങ്ങൾക്ക് സംഖ്യാ സൂചികകൾ ഉപയോഗിക്കാൻ കഴിയില്ല - $_SESSION [ 1 ], $_SESSION [ "10" ]- സെഷനുകൾ പ്രവർത്തിക്കില്ല.
  • പതിപ്പ് 4.3.3 കുക്കികൾക്ക് മുമ്പ്, സെഷൻ ആരംഭിക്കുമ്പോൾ അഭ്യർത്ഥനയിൽ ഐഡൻ്റിഫയർ ഇല്ലെങ്കിൽ മാത്രമേ PHP കുക്കികൾ അയച്ചിട്ടുള്ളൂ. ഇപ്പോൾ എല്ലാ കോളുകളിലും കുക്കികൾ അയയ്ക്കുന്നു സെഷൻ_ആരംഭം

    നിങ്ങൾക്ക് മറ്റെന്തെങ്കിലും ചോദ്യങ്ങളുണ്ടെങ്കിൽ അല്ലെങ്കിൽ എന്തെങ്കിലും വ്യക്തമല്ലെങ്കിൽ - ഞങ്ങളുടെതിലേക്ക് സ്വാഗതം

എന്തുകൊണ്ടെന്ന് എനിക്ക് മനസ്സിലാകുന്നില്ല, പക്ഷേ എല്ലാ ഉത്തരങ്ങളും/ഗൂഗിൾ പരീക്ഷിച്ചു.. ഒന്നും കണ്ടെത്തിയില്ല. സാഹചര്യം ഇതാ:

ലോക്കൽ ഹോസ്റ്റ് കോഡ്

ഫലം:

പേജ് ആപ്ലിക്കേഷനിലൂടെയും പേജ് പുതുക്കുമ്പോൾ സ്ഥിരമായ സെഷൻ_ഐഡി(). $_COOKIE["PHPSESSID"] സെഷൻ_ഐഡി()യുമായി പൊരുത്തപ്പെടുന്നു

നേരിട്ടുള്ള സെർവർ

Session_start();

ഫലം:

എക്കോ സെഷൻ_ഐഡി();

print_r($_COOKIE["PHPSESSID"]);

ഓരോ അഭ്യർത്ഥനയിലും സെഷൻ_ഐഡി() മാറ്റങ്ങൾ, പേജ് റീലോഡ് ചെയ്യുക അല്ലെങ്കിൽ മറ്റൊരു പേജ് സന്ദർശിക്കുക. $_COOKIE["PHPSESSID"] NULL/ശൂന്യമാണ്. പേജിൻ്റെ മുകളിൽ അതേ കോഡ് ഉപയോഗിക്കുന്നു. മറ്റ് ഉള്ളടക്കമില്ല.

ഈ പ്രശ്നം എനിക്ക് ശരിക്കും തലവേദന സൃഷ്ടിച്ചു, കൃത്യമായ സെർവർ കോൺഫിഗറേഷനോ പിശകോ ഇതിന് കാരണമാകാം? എന്തുകൊണ്ടാണ് PHPSESSID കുക്കി ശൂന്യമായത്, എല്ലാ അഭ്യർത്ഥനയിലും ബന്ധപ്പെട്ട സെഷൻ_ഐഡി() പുനഃസജ്ജമാക്കിയതിനാലാണിത് എന്ന് ഞാൻ വിശ്വസിക്കുന്നു?

എന്തെങ്കിലും സഹായം ദയവായി സുഹൃത്തുക്കളെ!

എഡിറ്റ്: ഞാൻ ഒരു ലോക്കൽ റിമോട്ട് സെർവറിൽ മൂന്ന് ലൈനുകളുള്ള ഒരു ലളിതമായ ടെസ്റ്റ് ഫയൽ ഉണ്ടാക്കി. ഇത് എൻ്റെ കോഡുമായി ബന്ധപ്പെട്ടതല്ല. $_COOKIE["PHPSESSID"] ഇപ്പോഴും ശൂന്യമാണ്, പുതിയ സെഷൻ_ഐഡി() അത് അപ്‌ഡേറ്റ് ചെയ്യുമ്പോഴെല്ലാം യഥാർത്ഥ ഹോസ്റ്റിൽ സംഭവിക്കുന്നു.

error_reporting എല്ലാത്തിനും സജ്ജമാക്കി എനിക്ക് ഇത് ഒരു തത്സമയ ഹോസ്റ്റിൽ ലഭിക്കും:

അറിയിപ്പ്: നിർവചിക്കാത്ത സൂചിക: PHPSESSID /home/vivaplug/public_html/dev/wp-content/plugins/test.php 5 വരിയിൽ

Google Chrome തലക്കെട്ടുകൾ

ലോക്കൽഹോസ്റ്റ്

അഭ്യർത്ഥന URL:http://vivaplugins.com/dev/wp-content/plugins/test.php അഭ്യർത്ഥന രീതി:GET സ്റ്റാറ്റസ് കോഡ്:200 ശരി അഭ്യർത്ഥന തലക്കെട്ട് കാഴ്ച ഉറവിടം സ്വീകരിക്കുക:text/html,application/xhtml+xml,application/xml; q=0.9,image/webp,*/*;q=0.8 Accept-Encoding:gzip,deflate,sdch Accept-Language:en-US,en;q=0.8 Cache-Control:max-age=0 Connection:keep- alive Host:vivaplugins.com ഉപയോക്താവ്-ഏജൻ്റ്:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, Gecko പോലെ) Chrome/30.0.1599.101 Safari/537.36 Response Headersview no-CachenoreControl Age: -കാഷെ, വീണ്ടും മൂല്യനിർണ്ണയം ചെയ്യണം, പോസ്റ്റ്-ചെക്ക്=0, പ്രീ-ചെക്ക്=0 ഉള്ളടക്കം-എൻകോഡിംഗ്:ജിസിപ്പ് ഉള്ളടക്കം-തരം:ടെക്സ്റ്റ്/എച്ച്ടിഎംഎൽ തീയതി:ചൊവ്വ, 05 നവംബർ 2013 07:07:49 ജിഎംടി പ്രാഗ്മ:നോ-കാഷെ സെർവർ: http://www.unixy.net/varnish Transfer-Encoding:chunked Vary:Accept-Encoding വഴി:1.1 varnish X-Cache:HIT X-Cache-Hits:2 X-Cacheable:YES X-Powered-By-ൻ്റെ വിപുലമായ ഹോസ്റ്റിംഗ് :PHP/5.4.20 X-വാർണിഷ്:1984840969 1984839805

വെബ് സെർവർ ക്ലയൻ്റുമായി ഒരു സ്ഥിരമായ കണക്ഷൻ നിലനിർത്തുന്നില്ല, കൂടാതെ ഓരോ അഭ്യർത്ഥനയും മുമ്പത്തെവയുമായി യാതൊരു ബന്ധവുമില്ലാതെ പുതിയതായി പ്രോസസ്സ് ചെയ്യുന്നു.
അതായത്, നിങ്ങൾക്ക് ഒരേ സന്ദർശകനിൽ നിന്നുള്ള അഭ്യർത്ഥനകൾ ട്രാക്കുചെയ്യാനോ വ്യക്തിഗത പേജുകളുടെ കാഴ്‌ചകൾക്കിടയിൽ അവനുവേണ്ടി വേരിയബിളുകൾ സംരക്ഷിക്കാനോ കഴിയില്ല. ഈ രണ്ട് പ്രശ്നങ്ങൾ പരിഹരിക്കാനാണ് സെഷനുകൾ കണ്ടുപിടിച്ചത്.
യഥാർത്ഥത്തിൽ, സെഷനുകൾ, ചുരുക്കത്തിൽ, ഒരു ബ്രൗസർ അദ്വിതീയമായി തിരിച്ചറിയാനും സെഷൻ വേരിയബിളുകൾ സംഭരിച്ചിരിക്കുന്ന സെർവറിൽ ഈ ബ്രൗസറിനായി ഒരു ഫയൽ സൃഷ്ടിക്കാനും നിങ്ങളെ അനുവദിക്കുന്ന ഒരു സംവിധാനമാണ്.

അത്തരമൊരു സംവിധാനത്തിൻ്റെ ആവശ്യകത ഞാൻ വിശദമായി വിവരിക്കുന്നില്ല. ഒരു ഇ-സ്റ്റോറിലെ ഒരു ഷോപ്പിംഗ് കാർട്ട്, അംഗീകാരം, അതുപോലെ തന്നെ ഒരു സൈറ്റിൻ്റെ സംവേദനാത്മക ഭാഗങ്ങൾ സ്പാമിൽ നിന്ന് സംരക്ഷിക്കുന്നത് പോലെയുള്ള തീർത്തും നിസ്സാര പ്രശ്‌നങ്ങൾ എന്നിവ പോലുള്ള പാഠപുസ്തക കേസുകളാണിത്.

തത്വത്തിൽ, സെഷനുകളുടെ നിങ്ങളുടെ സ്വന്തം അനലോഗ് ഉണ്ടാക്കുന്നത് വളരെ എളുപ്പമാണ്, PHP-യിൽ നിർമ്മിച്ചിരിക്കുന്നത് പോലെ പ്രവർത്തനക്ഷമമല്ല, എന്നാൽ സാരാംശത്തിൽ സമാനമാണ്. കുക്കികളിലും ഡാറ്റാബേസിലും.
ഒരു സ്‌ക്രിപ്റ്റ് അഭ്യർത്ഥിക്കുമ്പോൾ, ഒരു പ്രത്യേക പേരുള്ള ഒരു കുക്കി ലഭിച്ചോ എന്ന് ഞങ്ങൾ നോക്കുന്നു. കുക്കി ഇല്ലെങ്കിൽ, അത് സജ്ജീകരിച്ച് ഡാറ്റാബേസിലേക്ക് ഉപയോക്തൃ ഡാറ്റ ഉപയോഗിച്ച് ഒരു പുതിയ വരി എഴുതുക. ഒരു കുക്കി ഉണ്ടെങ്കിൽ, ഞങ്ങൾ ഡാറ്റാബേസിൽ നിന്നുള്ള ഡാറ്റ വായിക്കുന്നു. മറ്റൊരു അഭ്യർത്ഥനയോടെ ഞങ്ങൾ ഡാറ്റാബേസിൽ നിന്ന് പഴയ റെക്കോർഡുകൾ ഇല്ലാതാക്കുന്നു, ഇപ്പോൾ ഞങ്ങൾക്ക് ഒരു സെഷൻ സംവിധാനം തയ്യാറാണ്. ഇത് ഒട്ടും ബുദ്ധിമുട്ടുള്ള കാര്യമല്ല. എന്നാൽ ബിൽറ്റ്-ഇൻ സെഷൻ മെക്കാനിസം ഉപയോഗിക്കുന്നത് അഭികാമ്യമാക്കുന്ന ചില സൂക്ഷ്മതകളുണ്ട്.

ആദ്യത്തേത് മാത്രമേ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുള്ളൂവെങ്കിൽ, സെഷൻ്റെ തുടക്കത്തിൽ (ഓരോ കോളും ആദ്യത്തേത് മാത്രമേ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുള്ളൂവെങ്കിൽ, സെഷൻ്റെ തുടക്കത്തിൽ (ഓരോ കോളും) ക്ലയൻ്റിനായി ഒരു കുക്കി സജ്ജീകരിച്ചിരിക്കുന്നു. തുടർന്നുള്ള ഓരോ അഭ്യർത്ഥനയ്‌ക്കൊപ്പവും ബ്രൗസർ ഈ കുക്കി കൃത്യമായി നൽകുന്നു, കൂടാതെ PHP-ക്ക് ഒരു സെഷൻ ഐഡൻ്റിഫയർ ഉണ്ട്. ബ്രൗസർ കുക്കികൾ തിരികെ നൽകുന്നില്ലെങ്കിൽ പ്രശ്നങ്ങൾ ആരംഭിക്കുന്നു. ഈ സാഹചര്യത്തിൽ, ഒരു ഐഡൻ്റിഫയർ ഉള്ള ഒരു കുക്കി ലഭിക്കാതെ, PHP എപ്പോഴും ഒരു പുതിയ സെഷൻ ആരംഭിക്കും, മെക്കാനിസം പ്രവർത്തിക്കില്ല.

രണ്ടാമത്തേത് മാത്രമേ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുള്ളൂ എങ്കിൽ, കുക്കി സജ്ജമാക്കിയിട്ടില്ല. ഇതാണ് സംഭവിക്കുന്നത്, അതിനായി, വാസ്തവത്തിൽ, അന്തർനിർമ്മിത സെഷൻ സംവിധാനം ഉപയോഗിക്കുന്നത് മൂല്യവത്താണ്. സ്‌ക്രിപ്റ്റ് അതിൻ്റെ ജോലി ചെയ്‌ത് പേജ് പൂർണ്ണമായും രൂപീകരിച്ച ശേഷം, PHP മുഴുവൻ പേജും സ്കാൻ ചെയ്യുകയും ഓരോ ലിങ്കിലേക്കും ഓരോ ഫോമിലേക്കും ഒരു സെഷൻ ഐഡൻ്റിഫയർ ചേർക്കുന്നു. ഇത് ഇതുപോലെ തോന്നുന്നു:
സൂചികആയി മാറുന്നു
സൂചിക
കൂടാതെ ഒരു മറഞ്ഞിരിക്കുന്ന ഫീൽഡ് ഫോമുകളിൽ ചേർക്കുന്നു

ബ്രൗസർ, നിങ്ങൾ ഏതെങ്കിലും ലിങ്കിൽ ക്ലിക്ക് ചെയ്യുമ്പോൾ, അല്ലെങ്കിൽ ഫോമിലെ ഒരു ബട്ടണിൽ ക്ലിക്ക് ചെയ്യുമ്പോൾ, അഭ്യർത്ഥനയിൽ ഞങ്ങൾക്ക് ആവശ്യമായ വേരിയബിൾ അയയ്ക്കും - സെഷൻ ഐഡൻ്റിഫയർ!
വ്യക്തമായ കാരണങ്ങളാൽ, ആപേക്ഷിക ലിങ്കുകളിലേക്ക് മാത്രമേ ഐഡൻ്റിഫയർ ചേർക്കൂ.

സൈദ്ധാന്തികമായി, കുക്കികളിലും ഡാറ്റാബേസിലും ഉള്ള ഞങ്ങളുടെ വീട്ടിലുണ്ടാക്കിയ സെഷനുകളിൽ, എല്ലാ ലിങ്കുകളിലേക്കും ഐഡി കൈമാറ്റം ഞങ്ങൾക്ക് സ്വമേധയാ അസൈൻ ചെയ്യാൻ കഴിയും - തുടർന്ന് കുക്കികൾ പരിഗണിക്കാതെ തന്നെ ഞങ്ങളുടെ സ്വന്തം സെഷനുകൾ പ്രവർത്തിക്കും. എന്നാൽ നിങ്ങൾ സമ്മതിക്കുമോ - മറ്റൊരാൾ ഈ ജോലി ചെയ്യുമ്പോൾ അത് കൂടുതൽ സന്തോഷകരമാണോ? ;-)

സ്ഥിരസ്ഥിതിയായി, PHP-യുടെ സമീപകാല പതിപ്പുകളിൽ രണ്ട് ഓപ്ഷനുകളും പ്രവർത്തനക്ഷമമാക്കിയിരിക്കുന്നു. PHP എങ്ങനെയാണ് ഇത് കൈകാര്യം ചെയ്യുന്നത്? കുക്ക് എപ്പോഴും പ്രദർശിപ്പിച്ചിരിക്കുന്നു. സെഷൻ ഐഡൻ്റിഫയർ ഉള്ള ഒരു കുക്കി PHP കണ്ടെത്തിയില്ലെങ്കിൽ മാത്രമേ ലിങ്കുകൾ സ്വയമേവ പൂർത്തീകരിക്കപ്പെടുകയുള്ളൂ. ഈ സെഷനിൽ ഒരു ഉപയോക്താവ് ആദ്യമായി സൈറ്റ് സന്ദർശിക്കുമ്പോൾ, ഒരു കുക്കി സ്ഥാപിക്കുകയും ലിങ്കുകൾ പൂർത്തിയാക്കുകയും ചെയ്യും. അടുത്ത അഭ്യർത്ഥനയിൽ, കുക്കികൾ പിന്തുണയ്ക്കുന്നുവെങ്കിൽ, PHP കുക്കി കാണുകയും ലിങ്കുകൾ പൂർത്തിയാക്കുന്നത് നിർത്തുകയും ചെയ്യുന്നു. കുക്കികൾ പ്രവർത്തിക്കുന്നില്ലെങ്കിൽ, ലിങ്കുകളിലേക്ക് ഐഡി ശരിയായി ചേർക്കുന്നത് PHP തുടരുന്നു, കൂടാതെ സെഷൻ നഷ്ടപ്പെടില്ല.
കുക്കികൾ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുള്ള ഉപയോക്താക്കൾക്ക് ഐഡിയുമായുള്ള ദീർഘമായ ലിങ്ക് ഒരിക്കൽ മാത്രമേ കാണൂ.

വാ. ഐഡി കൈമാറ്റം പൂർത്തിയായി.
സെർവർ വശത്ത് ഡാറ്റ ഫയൽ ബൈൻഡ് ചെയ്യുക മാത്രമാണ് ഇപ്പോൾ അവശേഷിക്കുന്നത്.
PHP ഞങ്ങൾക്കായി ഇത് ചെയ്യും. എഴുതിയാൽ മാത്രം മതി
സെഷൻ_ആരംഭം();
$_SESSION [ "ടെസ്റ്റ്" ]= "ഹലോ വേൾഡ്!" ;

ഈ സെഷനുമായി ബന്ധപ്പെട്ട ഫയലിലേക്ക് PHP ടെസ്റ്റ് വേരിയബിൾ എഴുതും.
ഇവിടെ വളരെ പ്രധാനപ്പെട്ട ഒരു കുറിപ്പുണ്ട്.
അറേ $_SESSION- പ്രത്യേക.
വാസ്തവത്തിൽ, വിവിധ സ്ക്രിപ്റ്റുകളിൽ നാം ലഭ്യമാക്കാൻ ആഗ്രഹിക്കുന്ന വേരിയബിളുകൾ ഇതിൽ അടങ്ങിയിരിക്കുന്നു.
ഒരു സെഷനിൽ ഒരു വേരിയബിൾ സ്ഥാപിക്കാൻ, അത് $_SESSION അറേ എലമെൻ്റിലേക്ക് അസൈൻ ചെയ്യുക.
അതിൻ്റെ മൂല്യം ലഭിക്കാൻ, അതേ ഘടകം ആക്സസ് ചെയ്യുക. ഒരു ഉദാഹരണം താഴെ ആയിരിക്കും.

PHP മാലിന്യ ശേഖരണവും കൈകാര്യം ചെയ്യുന്നു - കാലഹരണപ്പെട്ട ഫയലുകൾ നീക്കംചെയ്യുന്നു. അതുപോലെ ഡാറ്റ എൻകോഡിംഗും മറ്റ് ആവശ്യമായ കാര്യങ്ങളുടെ ഒരു കൂട്ടവും. ഈ പരിചരണത്തിൻ്റെ ഫലമായി, സെഷനുകൾക്കൊപ്പം പ്രവർത്തിക്കുന്നത് വളരെ ലളിതമാണ്.
സെഷനുകൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിൻ്റെ ഉദാഹരണത്തിലേക്ക് ഞങ്ങൾ ഇവിടെ വരുന്നു.
വളരെ ചെറിയ ഒരു ഉദാഹരണം:
സെഷൻ_ആരംഭം();

പ്രതിധ്വനി "നിങ്ങൾ ഈ പേജ് അപ്ഡേറ്റ് ചെയ്തു". $_SESSION["കൗണ്ടർ"]++. "ഒരിക്കൽ.";
പ്രതിധ്വനി "
അപ്ഡേറ്റ്" ;
?>
സെഷനിൽ നമുക്ക് ഒരു കൌണ്ടർ വേരിയബിൾ ഉണ്ടോ എന്ന് ഞങ്ങൾ പരിശോധിക്കുന്നു, ഇല്ലെങ്കിൽ, ഞങ്ങൾ അത് 0 എന്ന മൂല്യം ഉപയോഗിച്ച് സൃഷ്ടിക്കുന്നു, തുടർന്ന് അതിൻ്റെ മൂല്യം പ്രദർശിപ്പിച്ച് ഒന്നായി വർദ്ധിപ്പിക്കുക. വർദ്ധിച്ച മൂല്യം സെഷനിൽ എഴുതപ്പെടും, അടുത്ത തവണ സ്ക്രിപ്റ്റ് വിളിക്കുമ്പോൾ, വേരിയബിളിന് മൂല്യം 1 ഉണ്ടായിരിക്കും.
ഇത് വളരെ ലളിതമാണ്.

സൈറ്റിൻ്റെ ഏത് പേജിലും സെഷൻ വേരിയബിളുകളിലേക്ക് ആക്‌സസ് ലഭിക്കുന്നതിന്, ഞങ്ങൾക്ക് സെഷനുകൾ ആവശ്യമുള്ള ഓരോ ഫയലിൻ്റെയും തുടക്കത്തിൽ നിങ്ങൾ ഒരു (!) വരി മാത്രം എഴുതേണ്ടതുണ്ട്:
സെഷൻ_ആരംഭം();
തുടർന്ന് $_SESSION അറേയുടെ ഘടകങ്ങൾ ആക്സസ് ചെയ്യുക. ഉദാഹരണത്തിന്, ഒരു അംഗീകാര പരിശോധന ഇതുപോലെ കാണപ്പെടും:
സെഷൻ_ആരംഭം();
എങ്കിൽ ($_SESSION [ "അംഗീകൃതം" ]<> 1 ) {
തലക്കെട്ട്("ലൊക്കേഷൻ: /auth.php" );
പുറത്ത്;
}

ഒരു സെഷനിൽ നിന്ന് വേരിയബിളുകൾ നീക്കംചെയ്യുന്നു.
നിങ്ങൾക്ക് register_globals=off ഉണ്ടെങ്കിൽ, എഴുതുക
അൺസെറ്റ് ($_SESSION [ "var" ]);
ഇല്ലെങ്കിൽ പിന്നെ സമീപംഎനിക്ക് അവളോടൊപ്പം എഴുതണം
session_unregister("var");

സെഷനുകളിൽ പ്രവർത്തിക്കാൻ ശ്രമിക്കുമ്പോൾ PHP ഉണ്ടാക്കുന്ന ഏറ്റവും സാധാരണമായ പിശകുകൾ ഇനിപ്പറയുന്നവയാണ്:
അതിൽ രണ്ടെണ്ണം
മുന്നറിയിപ്പ്: സെഷൻ കുക്കി അയയ്ക്കാൻ കഴിയില്ല - തലക്കെട്ടുകൾ ഇതിനകം അയച്ചു
മുന്നറിയിപ്പ്: സെഷൻ കാഷെ ലിമിറ്റർ അയയ്ക്കാൻ കഴിയില്ല - തലക്കെട്ടുകൾ ഇതിനകം അയച്ചു

ഇതേ കാരണത്താൽ ഉണ്ടാകുന്ന, പരിഹാരം ഈ ത്രെഡിൽ വിവരിച്ചിരിക്കുന്നു
മൂന്നാമത്,
മുന്നറിയിപ്പ്: open(/tmp\sess_SID, O_RDWR) പരാജയപ്പെട്ടു: ലൈൻ നമ്പറിൽ full_script_path-ൽ അത്തരം ഫയലോ ഡയറക്‌ടറിയോ (2) ഇല്ല(മുമ്പ് അവൾ ഇങ്ങനെയായിരുന്നു മുന്നറിയിപ്പ്: സെഷൻ ഡാറ്റ (ഫയലുകൾ) എഴുതുന്നതിൽ പരാജയപ്പെട്ടു. session.save_path ൻ്റെ നിലവിലെ ക്രമീകരണം ശരിയാണോ എന്ന് പരിശോധിക്കുക (/tmp)),
ഇംഗ്ലീഷിൽ നിന്ന് വിവർത്തനം ചെയ്‌താൽ, അത് പ്രശ്‌നം വിശദമായി വിശദീകരിക്കുന്നു: സെഷൻ ഫയലുകൾ എഴുതിയിരിക്കുന്ന php.ini-ൽ വ്യക്തമാക്കിയ ഡയറക്‌ടറിയിലേക്കുള്ള പാത ലഭ്യമല്ല. ഈ പിശക് പരിഹരിക്കാൻ ഏറ്റവും എളുപ്പമുള്ളതാണ്. നിലവിലുള്ളതും എഴുതാവുന്നതുമായ ഒരു ഡയറക്ടറി രജിസ്റ്റർ ചെയ്യുക, ഉദാഹരണത്തിന്,
session.save_path = c:\windows\temp
ഇതിന് ശേഷം അപ്പാച്ചെ റീസ്റ്റാർട്ട് ചെയ്യാൻ മറക്കരുത്.

അത് മാറുന്നതുപോലെ, മനുഷ്യൻ്റെ ബുദ്ധിക്ക് പരിധികളില്ല, അതിനാൽ ഞാൻ വിശദീകരിക്കാൻ നിർബന്ധിതനാകുന്നു:
മൂന്നാമത്തെ പിശകിനെക്കുറിച്ചുള്ള ഒരു സന്ദേശം (ഡയറക്‌ടറി കണ്ടെത്താൻ കഴിയില്ല) ആദ്യത്തെ രണ്ടെണ്ണം പ്രത്യക്ഷപ്പെടുന്നതിലേക്ക് അനിവാര്യമായും നയിക്കും, കാരണം പിശക് സന്ദേശം ബ്രൗസറിലേക്കും ഹെഡറുകളിലേക്കും ഔട്ട്‌പുട്ട് ആയതിനാൽ അത് ഉപയോഗിക്കാൻ കഴിയില്ല. അതിനാൽ, ഒരു അകാല നിഗമനത്തിനായി തിരക്കുകൂട്ടരുത്, എന്നാൽ ആദ്യം ശരിയായ പാത എഴുതുക!

സെഷനുകളിൽ പ്രവർത്തിക്കുമ്പോൾ അടുത്ത ഏറ്റവും സാധാരണമായ പ്രശ്നം register_globals-ൻ്റെ കനത്ത പാരമ്പര്യമാണ്. $_SESSION അറേയുടെ സൂചികകളുമായി പൊരുത്തപ്പെടുന്ന സ്ക്രിപ്റ്റ് വേരിയബിളുകളുടെ പേരുകൾ നൽകരുത്!
Register_globals=നൊപ്പം മൂല്യങ്ങൾ പരസ്പരം തിരുത്തിയെഴുതുകയും നിങ്ങൾ ആശയക്കുഴപ്പത്തിലാകുകയും ചെയ്യും.
കൂടാതെ register_globals=off എന്നതിനൊപ്പം, മറ്റൊരു പിശക് ദൃശ്യമാകും: “നിങ്ങളുടെ സ്ക്രിപ്റ്റ് ഒരുപക്ഷേ PHP 4.2.3 വരെ നിലനിന്നിരുന്ന ഒരു സെഷൻ സൈഡ്-എഫക്റ്റിനെ ആശ്രയിച്ചിരിക്കും.”, സ്ക്രിപ്റ്റിന് മൂല്യമില്ലാത്ത ഒരു സെഷൻ വേരിയബിളും കൂടാതെ ഒരു ആഗോള വേരിയബിളും ഉണ്ടെങ്കിൽ അതേ പേര്. അതിൽ നിന്ന് മുക്തി നേടുന്നതിന്, ഉപയോഗിക്കുന്നതിന് മുമ്പ് നിങ്ങൾ എല്ലായ്പ്പോഴും വേരിയബിളുകൾ ആരംഭിക്കണം (അല്ലെങ്കിൽ കുറഞ്ഞത് നിലവിലുണ്ടോ എന്ന് പരിശോധിക്കുക) കൂടാതെ $_SESSION അറേയുടെ സൂചികകളുമായി പൊരുത്തപ്പെടുന്ന ആഗോള വേരിയബിളുകൾക്ക് പേരുകൾ നൽകരുത്.

ഇത് പ്രവർത്തിക്കുന്നില്ലെങ്കിൽ, പക്ഷേ സന്ദേശങ്ങളൊന്നും ദൃശ്യമാകുന്നില്ലെങ്കിൽ, സ്ക്രീനിൽ എല്ലാ പിശകുകളും പ്രദർശിപ്പിക്കുന്നതിന് ഉത്തരവാദിയായ സ്ക്രിപ്റ്റിൻ്റെ തുടക്കത്തിൽ തന്നെ രണ്ട് വരികൾ ചേർക്കുക - പിശകുകൾ ഉണ്ടാകാൻ സാധ്യതയുണ്ട്, പക്ഷേ നിങ്ങൾ അവ കാണുന്നില്ല.
ini_set("display_errors" , 1 );
പിശക്_റിപ്പോർട്ടിംഗ് (E_ALL);

അല്ലെങ്കിൽ error_log-ൽ പിശകുകൾ കാണുക. പൊതുവേ, പിശക് സന്ദേശങ്ങൾ പ്രദർശിപ്പിക്കുന്ന വിഷയം ഈ ലേഖനത്തിൻ്റെ പരിധിക്കപ്പുറമാണ്, അതിനാൽ നിങ്ങൾക്ക് അവ കുറഞ്ഞത് കാണാനാകുമെന്ന് ഉറപ്പാക്കുക. ഈ വിഭാഗത്തിൽ പിശകുകൾ കണ്ടെത്തുന്നതിനെക്കുറിച്ച് നിങ്ങൾക്ക് കുറച്ചുകൂടി വായിക്കാം.

പിശകുകളൊന്നുമില്ലെന്ന് നിങ്ങൾക്ക് ഉറപ്പുണ്ടെങ്കിൽ, നൽകിയിരിക്കുന്ന ഉദാഹരണം എന്തായാലും പ്രവർത്തിക്കുന്നില്ലെങ്കിൽ, URL വഴി ഐഡി പാസ്സുചെയ്യുന്നത് PHP പ്രാപ്തമാക്കില്ല, ചില കാരണങ്ങളാൽ കുക്കികളും പ്രവർത്തിക്കുന്നില്ല.
നിങ്ങളുടെ കുക്കികൾക്ക് എന്താണ് കുഴപ്പം എന്ന് നോക്കൂ.
പൊതുവേ, നിങ്ങളുടെ സെഷനുകൾ പ്രവർത്തിക്കുന്നില്ലെങ്കിൽ, ആദ്യം സെഷൻ ഐഡൻ്റിഫയർ സ്വമേധയാ കൈമാറാൻ ശ്രമിക്കുക, അതായത്, ഒരു ലിങ്ക് ഉണ്ടാക്കി അതിലേക്ക് ഒരു ഐഡൻ്റിഫയർ നൽകുക:
സെഷൻ_ആരംഭം();
എങ്കിൽ (!isset($_SESSION [ "counter" ])) $_SESSION [ "counter" ]= 0 ;
പ്രതിധ്വനി "നിങ്ങൾ ഈ പേജ് അപ്ഡേറ്റ് ചെയ്തു"എങ്കിൽ (!isset($_SESSION [ "counter" ])) $_SESSION [ "counter" ]= 0 ;

അപ്ഡേറ്റ്" ;
?>

എന്നിരുന്നാലും, സെഷൻ.use_only_cookies നിർദ്ദേശം പ്രവർത്തനക്ഷമമാക്കിയിട്ടില്ലെന്ന് നിങ്ങൾ ഉറപ്പാക്കണം, ഇത് URL വഴിയാണ് സെഷൻ ഐഡി സ്വീകരിക്കുന്നതെങ്കിൽ അത് സ്വീകരിക്കുന്നതിൽ നിന്ന് PHP-യെ തടയുന്നു.

ഈ ഉദാഹരണം പ്രവർത്തിക്കുന്നില്ലെങ്കിൽ, പ്രശ്നം ഒന്നുകിൽ നിസ്സാരമാണ് ഈ ഉദാഹരണം പ്രവർത്തിക്കുന്നില്ലെങ്കിൽ, പ്രശ്നം ഒന്നുകിൽ നിസ്സാരമാണ്(സെഷനുകളിലെ "പ്രശ്നങ്ങളിൽ" പകുതിയും അക്ഷരത്തെറ്റുള്ള വേരിയബിൾ നാമത്തിൽ നിന്നാണ് വന്നത്), അല്ലെങ്കിൽ PHP-യുടെ വളരെ പഴയ പതിപ്പിൽ: സെഷനുകൾക്കുള്ള പിന്തുണ പതിപ്പ് 4.0-ലും അറേയിലും ദൃശ്യമാകുന്നു. $_SESSION(സെഷനുകളിലെ "പ്രശ്നങ്ങളിൽ" പകുതിയും അക്ഷരത്തെറ്റുള്ള വേരിയബിൾ നാമത്തിൽ നിന്നാണ് വന്നത്), അല്ലെങ്കിൽ PHP-യുടെ വളരെ പഴയ പതിപ്പിൽ: സെഷനുകൾക്കുള്ള പിന്തുണ പതിപ്പ് 4.0-ലും അറേയിലും ദൃശ്യമാകുന്നു. - 4.1 ൽ (ഇതിന് മുമ്പ് ഇത് ഉപയോഗിച്ചിരുന്നു).
ഇത് പ്രവർത്തിക്കുന്നുവെങ്കിൽ, പ്രശ്നം കുക്കികളിലാണ്. ഏത് തരത്തിലുള്ള കുക്കിയാണ് സെർവർ ബ്രൗസറിലേക്ക് സജ്ജീകരിക്കുന്നത്, ബ്രൗസർ അത് തിരികെ നൽകുന്നുണ്ടോ എന്ന് നിരീക്ഷിക്കുക. ബ്രൗസറിനും സെർവറിനുമിടയിൽ എച്ച്ടിടിപി തലക്കെട്ടുകളുടെ കൈമാറ്റം നോക്കി തിരയുന്നത് വളരെ ഉപയോഗപ്രദമാണ്.
കുക്കികൾ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിൻ്റെ ഒരു വിശദീകരണം ഇതിനകം തന്നെ ദൈർഘ്യമേറിയ ഈ ടെക്‌സ്‌റ്റിൻ്റെ പരിധിക്കപ്പുറമാണ്, എന്നാൽ സെർവർ ഒരു ഐഡൻ്റിഫയർ ഉള്ള ഒരു കുക്കി അയയ്‌ക്കുന്നുവെന്നും ബ്രൗസർ അത് തിരികെ നൽകുമെന്നും ഉറപ്പാക്കുക. അതേ സമയം ഐഡൻ്റിഫയറുകൾ പരസ്പരം യോജിക്കുന്നു =)
കുക്കി ക്രമീകരണം ഇതുപോലെ ആയിരിക്കണം
സെറ്റ്-കുക്കി: PHPSESSID=prlgdfbvlg5fbsbshch6hj0cq6;
അല്ലെങ്കിൽ എങ്ങനെ
സെറ്റ്-കുക്കി: PHPSESSID=prlgdfbvlg5fbsbshch6hj0cq6; പാത =/
(നിങ്ങൾ സ്ക്രിപ്റ്റ് ആവശ്യപ്പെടുന്നത് റൂട്ട് ഡയറക്ടറിയിൽ നിന്നല്ലെങ്കിൽ)
സെർവർ പ്രതികരണം ഇതുപോലെ ആയിരിക്കണം
കുക്കി: PHPSESSID=prlgdfbvlg5fbsbshch6hj0cq6
അല്ലെങ്കിൽ
കുക്കി: PHPSESSID=prlgdfbvlg5fbsbshch6hj0cq6; b=b
സെഷൻ ഐഡി ഒഴികെയുള്ള കുക്കികൾ ബ്രൗസർ തിരികെ നൽകിയാൽ.

ബ്രൗസർ കുക്കികൾ തിരികെ നൽകുന്നില്ലെങ്കിൽ, കുക്കികൾ പ്രവർത്തിക്കുന്നുണ്ടോയെന്ന് പരിശോധിക്കുക.
നിങ്ങൾ ആക്‌സസ് ചെയ്യുന്ന ഡൊമെയ്‌നിന് ഒരു സാധാരണ നാമം ഉണ്ടെന്ന് ഉറപ്പുവരുത്തുക (കുറഞ്ഞത് ഒരു ഡോട്ടെങ്കിലും അടിവരകൾ പോലുള്ള നിയമവിരുദ്ധ പ്രതീകങ്ങളൊന്നുമില്ലാതെ) നിങ്ങളുടെ ബ്രൗസർ കാഷെ മായ്‌ക്കുക - കുക്കികൾ പ്രവർത്തിക്കാതിരിക്കാനുള്ള രണ്ട് പ്രധാന കാരണങ്ങൾ ഇവയാണ്.

ഇവിടെ നിന്നുള്ള ഉദാഹരണം പ്രവർത്തിക്കുന്നുണ്ടെങ്കിലും നിങ്ങളുടെ സ്വന്തം കോഡ് ഇല്ലെങ്കിൽ, പ്രശ്നം സെഷനുകളിലല്ല, അൽഗോരിതത്തിലാണ്. നിങ്ങൾക്ക് വേരിയബിൾ എവിടെയാണ് നഷ്ടപ്പെട്ടതെന്ന് നോക്കുക, ഉദാഹരണം ഇവിടെ നിന്ന് ഘട്ടം ഘട്ടമായി കൈമാറുക, നിങ്ങളുടെ സ്ക്രിപ്റ്റ് ഡീബഗ് ചെയ്യുക.

നിങ്ങൾ ഹെഡർ റീഡയറക്‌ഷനോ JavaScript നാവിഗേഷനോ ഉപയോഗിക്കുകയാണെങ്കിൽ മറ്റൊരു പ്രശ്‌നം ഉണ്ടാകാം.
പോലുള്ള ലിങ്കുകളിലേക്ക് മാത്രം പിഎച്ച്പി സെഷൻ ഐഡൻ്റിഫയർ സ്വയമേവ ചേർക്കുന്നു എന്നതാണ് വസ്തുത
, എന്നാൽ തലക്കെട്ടുകൾ, ജാവാസ്ക്രിപ്റ്റ്, മെറ്റാ ടാഗുകൾ എന്നിവയ്ക്കായി ഇത് ചെയ്യുന്നില്ല.
അതിനാൽ, നിങ്ങൾ ഐഡൻ്റിഫയർ സ്വമേധയാ ചേർക്കേണ്ടതുണ്ട്, ഉദാഹരണത്തിന്, ഇതുപോലെ:
, എന്നാൽ തലക്കെട്ടുകൾ, ജാവാസ്ക്രിപ്റ്റ്, മെറ്റാ ടാഗുകൾ എന്നിവയ്ക്കായി ഇത് ചെയ്യുന്നില്ല.

കൂടാതെ, വളരെ അപൂർവമായ ഒരു പ്രശ്നം, അത് എവിടെ നിന്നാണ് വരുന്നത് എന്നത് പൂർണ്ണമായും വ്യക്തമല്ല, സെഷൻ.save_handler ക്രമീകരണത്തിന് ഫയലുകളിൽ നിന്ന് വ്യത്യസ്തമായ ഒരു മൂല്യമുണ്ട്. ഇത് അങ്ങനെയല്ലെങ്കിൽ, അത് ശരിയാക്കുക.

സുരക്ഷ
സെഷൻ സുരക്ഷ ഒരു വിശാലമായ വിഷയമാണ്. അതിനാൽ, ഞാൻ ചില പ്രധാന പോയിൻ്റുകളിൽ ശ്രദ്ധ കേന്ദ്രീകരിക്കും.
അഡ്രസ് ബാറിലൂടെ ഐഡൻ്റിഫയർ കൈമാറരുത് എന്നതാണ് ഏറ്റവും പാഠപുസ്തകം. ഇത് php.ini-ൽ പോലും എഴുതിയിട്ടുണ്ട്, എന്നാൽ ഇത് സെഷനുകളുടെ പ്രവർത്തനക്ഷമതയെ പരിമിതപ്പെടുത്തുന്നു. ഈ ഉപദേശം പിന്തുടരാൻ നിങ്ങൾ തീരുമാനിക്കുകയാണെങ്കിൽ, session.use_trans_sid = 0 എന്നതിന് പുറമേ, session.use_only_cookies = 1 മറക്കരുത്
സെഷൻ ഒരു IP വിലാസത്തിലേക്ക് ബന്ധിപ്പിക്കുന്നതാണ് ഉചിതം: ഈ രീതിയിൽ, ഐഡി മോഷ്ടിക്കപ്പെട്ടാൽ, മിക്ക കേസുകളിലും വില്ലന് ഇപ്പോഴും അത് ഉപയോഗിക്കാൻ കഴിയില്ല.
സെഷൻ ഫയലുകൾ സംരക്ഷിക്കുന്നതിനായി നിങ്ങളുടെ സ്വന്തം ഡയറക്ടറി സജ്ജമാക്കാൻ നിങ്ങളെ അനുവദിക്കുന്ന session.save_path നിർദ്ദേശം ഉപയോഗിക്കാൻ ശുപാർശ ചെയ്യുന്നു. സെർവറിൻ്റെ ഡിഫോൾട്ട് പങ്കിട്ട താൽക്കാലിക ഡയറക്ടറിയിൽ സംഭരിക്കുന്നതിനേക്കാൾ ഇത് കൂടുതൽ സുരക്ഷിതമാണ്.

അധിക വിവരം:

  • കുക്കികൾക്ക് പുറമേ, സെഷൻ മെക്കാനിസം പേജ് കാഷെ ചെയ്യുന്നതിനെ നിരോധിക്കുന്ന തലക്കെട്ടുകളും അയയ്‌ക്കുന്നു (അതേ കാഷെ ലിമിറ്റർ). html-ന് ഇത് ശരിയും ആവശ്യവുമാണ്. എന്നാൽ നിങ്ങൾ അംഗീകാരം പരിശോധിക്കുന്ന ഒരു സ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് ഒരു ഫയൽ അയയ്ക്കാൻ ശ്രമിക്കുമ്പോൾ, Internet Explorer അത് ഡൗൺലോഡ് ചെയ്യാൻ വിസമ്മതിക്കുന്നു. ഈ തലക്കെട്ടാണ് കാരണം. വിളിക്കൂ
    കൂടാതെ, വളരെ അപൂർവമായ ഒരു പ്രശ്നം, അത് എവിടെ നിന്നാണ് വരുന്നത് എന്നത് പൂർണ്ണമായും വ്യക്തമല്ല, സെഷൻ.save_handler ക്രമീകരണത്തിന് ഫയലുകളിൽ നിന്ന് വ്യത്യസ്തമായ ഒരു മൂല്യമുണ്ട്.
    സെഷൻ ആരംഭിക്കുന്നതിന് മുമ്പ് പ്രശ്നം പരിഹരിക്കണം.
  • കുക്കികൾക്ക് പുറമേ, സെഷൻ മെക്കാനിസം പേജ് കാഷെ ചെയ്യുന്നതിനെ നിരോധിക്കുന്ന തലക്കെട്ടുകളും അയയ്ക്കുന്നു (അതേ കാഷെ ലിമിറ്റർ). html-ന് ഇത് ശരിയും ആവശ്യവുമാണ്. എന്നാൽ നിങ്ങൾ അംഗീകാരം പരിശോധിക്കുന്ന ഒരു സ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് ഒരു ഫയൽ അയയ്ക്കാൻ ശ്രമിക്കുമ്പോൾ, Internet Explorer അത് ഡൗൺലോഡ് ചെയ്യാൻ വിസമ്മതിക്കുന്നു. ഈ തലക്കെട്ടാണ് കാരണം. വിളിക്കൂ $_SESSIONനിങ്ങൾക്ക് സംഖ്യാ സൂചികകൾ ഉപയോഗിക്കാൻ കഴിയില്ല - സെഷൻ ആരംഭിക്കുന്നതിന് മുമ്പ് പ്രശ്നം പരിഹരിക്കണം.വിചിത്രമായി തോന്നിയേക്കാം, പക്ഷേ അറേയിൽ
  • നിങ്ങൾക്ക് സംഖ്യാ സൂചികകൾ ഉപയോഗിക്കാൻ കഴിയില്ല - $_SESSION [ 1 ], $_SESSION [ "10" ]. 5.0 മുതൽ ഇത് വീണ്ടും സാധ്യമാണ്.
  • കുക്കിയുടെ പതിപ്പ് 4.3.3-ന് മുമ്പ്, സെഷൻ ആരംഭിക്കുമ്പോൾ അഭ്യർത്ഥനയിൽ ഐഡൻ്റിഫയർ ഇല്ലെങ്കിൽ മാത്രം PHP ഒരു കുക്കി അയച്ചു. ഇപ്പോൾ ഓരോ കോളിലും ഒരു കുക്കി അയയ്ക്കുന്നു ആദ്യത്തേത് മാത്രമേ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുള്ളൂവെങ്കിൽ, സെഷൻ്റെ തുടക്കത്തിൽ (ഓരോ കോളും

    സെഷനുകൾ ഉപയോഗിച്ചുള്ള അംഗീകാരത്തിൻ്റെ ഉദാഹരണം
    മുകളിൽ പറഞ്ഞവയെല്ലാം ഒരു ചെറിയ ഉദാഹരണത്തിലൂടെ നമുക്ക് വിശദീകരിക്കാം:
    നമുക്ക് auth.php ഫയൽ സൃഷ്ടിക്കാം:
    എങ്കിൽ (ഇസെറ്റ്($_POST [ "auth_name" ]))
    {
    $sql = "തിരഞ്ഞെടുക്കുക * ഉപയോക്താക്കളിൽ നിന്ന് എവിടെ പേര്=?s";
    $റോ = $db -> getRow($sql, $_POST["auth_name"]);
    എങ്കിൽ ($row && password_verify ($_POST [ "auth_pass" ], $row [ "pass" ])) (
    $_SESSION [ "user_id" ] = $row [ "id" ];
    }
    തലക്കെട്ട് ("ലൊക്കേഷൻ: http://" . $_SERVER [ "HTTP_HOST" ]. $_SERVER [ "REQUEST_URI" ]);
    പുറത്ത്;
    }

    എങ്കിൽ (isset($_GET [ "action" ]) കൂടാതെ $_GET [ "action" ]== "logout" ) (
    സെഷൻ_ആരംഭം();
    session_destroy();
    തലക്കെട്ട്("ലൊക്കേഷൻ: http://" . $_SERVER [ "HTTP_HOST" ]. "/" );
    പുറത്ത്;
    }

    എങ്കിൽ (!isset($_SESSION [ "user_id" ])) (
    ?>








    പുറത്ത്;
    }

    ഇപ്പോൾ നിങ്ങൾ ചെയ്യേണ്ടത് എല്ലാ പരിരക്ഷിത സ്ക്രിപ്റ്റുകളിലും ലൈൻ എഴുതുക എന്നതാണ്
    "auth.php" ആവശ്യമാണ്;
    ഈ ഉദാഹരണം അനുമാനിക്കുന്നത് സെഷൻ ഇതിനകം ആരംഭിച്ചുവെന്നും MySQL-നൊപ്പം സുരക്ഷിതവും സൗകര്യപ്രദവുമായ പ്രവർത്തനത്തിനായി ക്ലാസ് ഉപയോഗിച്ച് ഡാറ്റാബേസിലേക്കുള്ള ഒരു കണക്ഷൻ സൃഷ്ടിച്ചു എന്നാണ്. ശുപാർശ ചെയ്യുന്ന password_hash ഫംഗ്‌ഷൻ ഉപയോഗിച്ചാണ് പാസ്‌വേഡ് ഹാഷ് ചെയ്തിരിക്കുന്നതെന്നും ഇത് അനുമാനിക്കുന്നു.
    ഒരു സംരക്ഷിത ഫയലിൻ്റെ ഉദാഹരണം:

    സെഷൻ_ആരംഭം();
    "safemysql.class.php" ഉൾപ്പെടുത്തുക ;
    $db = പുതിയ safemysql ([ "db" => "ടെസ്റ്റ്" ]);
    "auth.php" ഉൾപ്പെടുത്തുക;
    ?>
    രഹസ്യം

    പുറത്തുകടക്കുക

    OPS! വളരെ ഉപയോഗപ്രദമായ ലിങ്കുകൾ:
    http://www.php.net/manual/ru/ref.session.php - ഔദ്യോഗിക ഡോക്യുമെൻ്റേഷനിൽ PHP-യിലെ സെഷൻ പിന്തുണയെക്കുറിച്ചുള്ള ഏറ്റവും പുതിയതും ഏറ്റവും പുതിയതുമായ വിവരങ്ങൾ, കൂടാതെ നിരവധി ഉപയോക്തൃ അഭിപ്രായങ്ങൾ. വളരെ ശുപാർശ ചെയ്യപ്പെടുന്ന വായന.
    http://phpclub.ru/manrus/f/ref.session.html - അലക്സാണ്ടർ പിരമിഡിൻ വിവർത്തനം ചെയ്ത ഡോക്യുമെൻ്റേഷനിൽ നിന്ന് റഷ്യൻ ഭാഷയിലേക്ക് ഈ അധ്യായത്തിൻ്റെ വളരെ കാലഹരണപ്പെട്ട വിവർത്തനം.
    http://phpclub.ru/detail/article/sessions
    "സെഷനുകളെക്കുറിച്ചുള്ള സത്യം" എന്ന ദയനീയ തലക്കെട്ടുള്ള ഒരു ലേഖനം. അവ്യക്തമായ ഒരു മതിപ്പ് അവശേഷിപ്പിക്കുന്നു. തുടക്കത്തിൽ, സെഷൻ മെക്കാനിസത്തെക്കുറിച്ച് രചയിതാവ് വളരെ വ്യക്തമായി സംസാരിക്കുന്നു, എന്നാൽ ലേഖനത്തിൻ്റെ അവസാനത്തിൽ അദ്ദേഹം വാഗ്ദാനം ചെയ്യുന്ന രീതികൾ പൂർണ്ണമായും വ്യക്തമല്ല.

    സൈറ്റിൽ നിന്ന് ദിമിത്രി ബോറോഡിൻ എഴുതിയ ഒരു പാഠപുസ്തക ലേഖനം
    http://php.spb.ru/ ശക്തമായി ശുപാർശ ചെയ്യുന്നില്ല.
    സുഹൃത്തുക്കളേ, ഇത് വളരെ കാലഹരണപ്പെട്ടതാണ്. അതിൽ വസ്തുതാപരമായ അപാകതകൾ ഉണ്ടെന്ന് മാത്രമല്ല, PHP-യിലെ സെഷനുകൾ വളരെക്കാലമായി പ്രവർത്തിച്ചിട്ടില്ല.
    ഇതിന് ദിമയ്ക്ക് നന്ദി, റഷ്യൻ ഭാഷയിലെ സെഷനുകളെക്കുറിച്ചുള്ള ആദ്യ ലേഖനമാണിത്, ഞാൻ അതിൽ നിന്ന് സ്വയം പഠിച്ചു, പക്ഷേ ഇപ്പോൾ ഞാൻ അത് അർഹമായ വിശ്രമത്തിലേക്ക് അയയ്ക്കേണ്ടതുണ്ട്.
    കൂടാതെ, നിർഭാഗ്യവശാൽ, ഇൻറർനെറ്റിൽ ഉള്ളതും വർഷങ്ങളായി അപ്‌ഡേറ്റ് ചെയ്യാത്തതുമായ മറ്റ് പല ലേഖനങ്ങളും കാലഹരണപ്പെട്ടതാണ്.