php-ൽ ഒരു പേജ് ഉണ്ടാക്കുക. PHP V5 (സോഴ്സ് കോഡുകൾ) ൽ മൾട്ടിടാസ്കിംഗ് ആപ്ലിക്കേഷനുകളുടെ വികസനം. ഏറ്റവും നിസ്സാരമായ തെറ്റ്

ഒരു php ഫയൽ എങ്ങനെ സൃഷ്ടിക്കാം?

തീയതി: 2010-09-08

ഒരു php ഫയലും ഒരു html ഫയലും തമ്മിലുള്ള വ്യത്യാസം എന്താണ്.

നിങ്ങൾ മനസ്സിലാക്കുന്നതുപോലെ, ഓട്ടോമേറ്റഡ് വെബ്‌സൈറ്റുകൾ സൃഷ്‌ടിക്കുന്നത് വെബ്‌സൈറ്റ് നിർമ്മാണത്തിലെ അടുത്ത ഘട്ടമാണ്. പ്ലെയിൻ HTML-ൽ ഒരു ലളിതമായ സൈറ്റ് സൃഷ്ടിക്കാൻ കഴിയുമെങ്കിൽ, ഒരു ഓട്ടോമേറ്റഡ് സൈറ്റ് PHP ഉപയോഗിച്ചും പലപ്പോഴും ഡാറ്റാബേസുകൾ (ഒന്നോ അതിലധികമോ) ഡാറ്റ ഉപയോഗിച്ചും മാത്രമേ സൃഷ്ടിക്കാൻ കഴിയൂ.

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

അതിന്റെ ഘടനയിൽ, ഒരു PHP ഫയൽ ഒരു സാധാരണ HTML ഫയലിനോട് സാമ്യമുള്ളതാണ്, പക്ഷേ PHP കോഡിന്റെ പ്രത്യേക ഉൾപ്പെടുത്തലുകൾ. ഈ കോഡ് ഉൾപ്പെടുത്തലുകൾ പ്രത്യേക ഓപ്പറേറ്റർമാർ ഉപയോഗിച്ച് വെബ് പേജ് കോഡിലേക്ക് ചേർക്കുന്നു, അവയെ ചിലപ്പോൾ ഡിസ്ക്രിപ്റ്ററുകൾ എന്നും വിളിക്കുന്നു:

ഡിസ്ക്രിപ്റ്റർ.

ശ്രദ്ധിക്കുക: ചിലപ്പോൾ നിങ്ങൾക്ക് വിവരണങ്ങൾക്കായി ഒരു ചുരുക്കെഴുത്ത് കണ്ടെത്താനാകും: . അത്തരം റെക്കോർഡിംഗ് ഒഴിവാക്കാൻ ശുപാർശ ചെയ്യുന്നു. ചുരുക്കിയ PHP സ്ക്രിപ്റ്റ് എല്ലാ സെർവറുകളിലും പ്രവർത്തിച്ചേക്കില്ല.

സെർവർ (അല്ലെങ്കിൽ ലോക്കൽ സെർവർ) അത്തരമൊരു ഉൾപ്പെടുത്തൽ നേരിടുമ്പോൾ, അത് ബന്ധിപ്പിക്കുന്നു (സെർവറിൽ ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ട്), PHP കോഡ് പ്രോസസ്സ് ചെയ്യുകയും ഉപയോക്താവിന് (സൈറ്റ് സന്ദർശകൻ) ഇതിനകം പ്രോസസ്സ് ചെയ്തതും തയ്യാറായതുമായ ഒരു വെബ് പേജ് നൽകുകയും ചെയ്യുന്നു. അതുകൊണ്ടാണ് ബ്രൗസർ (വലത് മൗസ് ബട്ടൺ, HTML കോഡ് കാണുക) ഇതിനകം ലോഡുചെയ്‌ത ഒരു php പേജിന്റെ കോഡ് നോക്കാൻ ഞങ്ങൾ ശ്രമിച്ചാൽ, അത്തരം ഉൾപ്പെടുത്തലുകൾ ഞങ്ങൾ കാണില്ല (അവ ഇതിനകം സെർവർ പ്രോസസ്സ് ചെയ്‌തിരിക്കുന്നു).

ടെക്സ്റ്റ് ഫയലിന്റെ എക്സ്റ്റൻഷൻ പുനർനാമകരണം ചെയ്തുകൊണ്ട് ഒരു html ഫയലിന്റെ അതേ രീതിയിൽ ഒരു php ഫയൽ സൃഷ്ടിക്കപ്പെടുന്നു, ഇത് സാധാരണ നോട്ട്പാഡിൽ ചെയ്യാം. പാഠത്തിൽ ഞങ്ങൾ ഇതിനെക്കുറിച്ച് ഇതിനകം സംസാരിച്ചു: "അതിനാൽ ഞാൻ സ്വയം ആവർത്തിക്കില്ല.

PHP ഫയലിന് .php എന്ന വിപുലീകരണമുണ്ട്. ഡിഫോൾട്ടായി ലോഡുചെയ്ത ആദ്യ ഫയലിനെ, HTML-ലെ പോലെ, എല്ലായ്‌പ്പോഴും index.php എന്ന് വിളിക്കുന്നു, എന്നാൽ നിങ്ങൾ ശ്രദ്ധിച്ചതുപോലെ, ഇതിന് .php എന്ന വിപുലീകരണമുണ്ട്. എല്ലാ PHP ഫയലുകൾക്കും name.php എന്ന ഫോം ഉണ്ട്, തീർച്ചയായും എല്ലാ ഫയൽ നാമങ്ങളും ഇംഗ്ലീഷിലാണ് എഴുതിയിരിക്കുന്നത്.

സെർവർ, അതിൽ നിന്ന് അത്തരമൊരു ഫയൽ ആവശ്യപ്പെടുമ്പോൾ (മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, അവർ ലിങ്കിൽ ക്ലിക്ക് ചെയ്യുക), ഈ ഫയലിൽ PHP കോഡ് ഉണ്ടെന്നും അത് സന്ദർശകന് നൽകുന്നതിന് മുമ്പ് പ്രോസസ്സ് ചെയ്യേണ്ടതുണ്ടെന്നും ഇതിനകം തന്നെ "മനസ്സിലാക്കുന്നു". HTML കോഡ് പ്രോസസ്സ് ചെയ്യാതെ സെർവർ വഴിയോ അല്ലെങ്കിൽ പിഎച്ച്പി പ്രീപ്രൊസസ്സർ വഴിയോ കൈമാറുന്നു.

PHP കോഡുള്ള ഒരു ലളിതമായ ഫയൽ നോക്കാം. വ്യക്തമായി പറഞ്ഞാൽ, നമുക്ക് ഇതിനെ name.php എന്ന് വിളിക്കാം. അതിനാൽ നമുക്ക് ലിസ്റ്റിംഗ് 1 നോക്കാം:

പട്ടിക 1.

നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, ഈ php ഫയലിന്റെ കോഡ് html ഫയലിൽ നിന്ന് .php വിപുലീകരണവും (ഫയൽ നാമത്തിൽ) php കോഡ് ലിസ്റ്റിംഗ് 2 ഉൾപ്പെടുത്തലും വഴി വ്യത്യാസപ്പെട്ടിരിക്കുന്നു:

പട്ടിക 2.

എക്കോ ഓപ്പറേറ്റർ ഔട്ട്പുട്ട് ആയി വിവർത്തനം ചെയ്യപ്പെടുന്നു, ഈ സാഹചര്യത്തിൽ മോണിറ്റർ സ്ക്രീനിലേക്കുള്ള ഔട്ട്പുട്ട് എന്നാണ് ഇത് അർത്ഥമാക്കുന്നത്. ആ. നിങ്ങൾ ഈ ഫയൽ പ്രവർത്തിപ്പിക്കുമ്പോൾ ഹലോ, എന്റെ പേര് ഇവാൻ എന്ന ലിഖിതം മോണിറ്ററിൽ ദൃശ്യമാകും.

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

ഈ ആമുഖ പാഠത്തിൽ, ആവശ്യമായ പ്രോഗ്രാമുകളിലേക്ക് ഞാൻ നിങ്ങളെ പരിചയപ്പെടുത്തുകയും PHP-യിൽ എന്താണ് പ്രവർത്തിക്കേണ്ടതെന്ന് നിങ്ങളോട് പറയുകയും ചെയ്യും.

നിങ്ങൾ അറിയേണ്ടത്

PHP എങ്ങനെ എഴുതപ്പെടുന്നു എന്നതും നിങ്ങൾ അറിഞ്ഞിരിക്കണം. ഫയലിൽ, PHP സ്ക്രിപ്റ്റ് ആരംഭിക്കുന്നത് - എന്ന വാക്കിൽ നിന്നാണ്. ഇതിനിടയിലുള്ളതെല്ലാം PHP കോഡാണ്, ഇത് ഓർക്കുക.

PHP കോഡ് അടങ്ങിയ ഫയലുകൾ .php വിപുലീകരണത്തിന് കീഴിൽ സേവ് ചെയ്യണം

PHP (മറ്റേതൊരു പ്രോഗ്രാമിംഗ് ഭാഷയും പോലെ) പഠിക്കുന്നതിന്, വളരെയധികം പരിശീലിക്കേണ്ടത് പ്രധാനമാണ്.
നിങ്ങൾ പാഠങ്ങൾ വായിക്കുമ്പോൾ, കോഡ് പകർത്തരുത്, പക്ഷേ അത് സ്വയം എഴുതുക, ഇത് നിങ്ങൾക്ക് മികച്ചതായിരിക്കും, ഈ രീതിയിൽ നിങ്ങൾ ഭാഷ തന്നെ വേഗത്തിൽ ഓർക്കും, ഭാവിയിൽ ഇത് നിങ്ങൾക്ക് എളുപ്പമായിരിക്കും.

സോഫ്റ്റ്വെയർ

നിങ്ങൾക്ക് ആവശ്യമുള്ള ആദ്യത്തെ പ്രോഗ്രാം ഒരു ബ്രൗസറാണ് (നിങ്ങൾ ഇപ്പോൾ എന്താണ് ഉള്ളത് :D)

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


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

ഒരു പ്രത്യേക പ്രോട്ടോക്കോൾ ഉപയോഗിച്ച് പരസ്പരം അഭ്യർത്ഥനകൾ അയച്ചുകൊണ്ട് സെർവറും ബ്രൗസറും ആശയവിനിമയം നടത്തുന്നു - HTTP. ബ്രൗസറിന് മാത്രമേ കണക്ഷൻ ആരംഭിക്കാൻ കഴിയൂ. അത്തരത്തിലുള്ള ഒരു ഫയൽ കാണിക്കാൻ അദ്ദേഹം സെർവറിന് ഒരു അഭ്യർത്ഥന അയയ്ക്കുന്നു. സെർവർ ഫയൽ ക്ലയന്റിലേക്ക് അയയ്ക്കുന്നു.
അങ്ങനെയേ സംഭവിക്കൂ. ക്ലയന്റ് അഭ്യർത്ഥിച്ചു - സെർവർ അത് നൽകി. ഞാൻ ഉടൻ തന്നെ ക്ലയന്റിനെക്കുറിച്ച് മറന്നു. ഇവിടെ നിന്ന് ചോദ്യത്തിനുള്ള ഉത്തരം വ്യക്തമാകും: സൈറ്റിൽ നിലവിൽ എത്ര ഉപയോക്താക്കളുണ്ടെന്ന് കൃത്യമായി കണ്ടെത്താൻ കഴിയുമോ. അത് നിഷിദ്ധമാണ്. കാരണം "സൈറ്റിൽ" ഒന്നുമില്ല. അവർ ബന്ധിപ്പിക്കുന്നു, ഒരു പേജ് അഭ്യർത്ഥിക്കുന്നു, വിച്ഛേദിക്കുന്നു. അവർക്ക് സെർവറിലേക്ക് സ്ഥിരമായ ഒരു കണക്ഷനില്ല, ഉദാഹരണത്തിന്, ക്വാക്കു കളിക്കാർ. ഓരോ കണക്ഷന്റെയും സമയം രേഖപ്പെടുത്തി ഒരു നിശ്ചിത സമയത്തേക്കുള്ള റെക്കോർഡുകൾ തിരഞ്ഞെടുത്താൽ മാത്രമേ നിങ്ങൾക്ക് ഏകദേശം അറിയാൻ കഴിയൂ.

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

HTTP ഹെഡർ എക്സ്ചേഞ്ച് കാണുക
HTTP തലക്കെട്ടുകൾ ഉപയോഗിച്ച് പരിശീലിക്കാനും അവ സെർവറും ക്ലയന്റും തമ്മിൽ എങ്ങനെ കൈമാറ്റം ചെയ്യപ്പെടുന്നുവെന്ന് കാണാനും ഞാൻ വളരെ ശുപാർശ ചെയ്യുന്നു.
ഇത് ചെയ്യുന്നതിന് നിരവധി വ്യത്യസ്ത മാർഗങ്ങളുണ്ട്. നിങ്ങൾക്ക് ജനപ്രിയ ഡൗൺലോഡ് മാനേജർ FlashGet ഉണ്ടെങ്കിൽ, നിങ്ങൾക്കത് ഉപയോഗിക്കാം. ജനപ്രിയ പ്രോക്സോമിട്രോൺ പ്രോഗ്രാമും തലക്കെട്ടുകൾ കാണിക്കുന്നു; നിങ്ങൾക്ക് ചില പ്രത്യേക യൂട്ടിലിറ്റികൾ ഡൗൺലോഡ് ചെയ്യാം.
IE-യ്‌ക്കായി നിങ്ങൾക്ക് ഒരു പ്ലഗിൻ നിർദ്ദേശിക്കാം http://blunck.se/iehttpheaders/iehttpheaders.html
മോസില്ല ബ്രൗസറിനായി സൗകര്യപ്രദമായ ഒരു പ്ലഗിൻ ഉണ്ട് http://livehttpheaders.mozdev.org/
കൂടാതെ, HTTP സ്നിഫർ അഭ്യർത്ഥന ഉപയോഗിച്ച് ഇന്റർനെറ്റിൽ എളുപ്പത്തിൽ കണ്ടെത്താൻ കഴിയുന്ന മറ്റ് നിരവധി യൂട്ടിലിറ്റികളുണ്ട്.
ബ്രൗസറിനും സെർവറിനുമിടയിൽ കൈമാറ്റം ചെയ്യപ്പെടുന്ന HTTP തലക്കെട്ടുകൾ കാണുന്നതിന് ഏതെങ്കിലും മാർഗ്ഗം ഉപയോഗിക്കുന്നത് ഉറപ്പാക്കുക. ഇത് വളരെ നല്ല ഒരു പരിശീലനമാണ്, അതുപോലെ നിങ്ങളുടെ സ്ക്രിപ്റ്റ് എന്താണ് അയയ്‌ക്കുന്നത് എന്ന് പരിശോധിക്കുന്നതും. കുക്കി ഇൻസ്റ്റാളേഷൻ ഡീബഗ്ഗ് ചെയ്യുമ്പോൾ അല്ലെങ്കിൽ സെഷനുകളിലെ പ്രശ്നങ്ങൾ.
getallheaders() ഫംഗ്‌ഷൻ ഉപയോഗിച്ച് ഇൻകമിംഗ് ഹെഡറുകളെ കുറിച്ചുള്ള ഏകദേശ ധാരണയും നിങ്ങൾക്ക് ലഭിക്കും. എന്നാൽ PHP ഒരു മൊഡ്യൂളായി കംപൈൽ ചെയ്താൽ മാത്രമേ ഇത് പ്രവർത്തിക്കൂ എന്ന് നിങ്ങൾ ഓർക്കണം.

വളരെ പ്രധാനപ്പെട്ട കുറിപ്പ്
PHP സെർവറിൽ പ്രവർത്തിക്കുകയും അതിന്റെ പ്രവർത്തനത്തിന്റെ ഫലം ബ്രൗസറിലേക്ക് അയയ്ക്കുകയും ചെയ്യുന്നു എന്ന വസ്തുതയിൽ നിന്ന്, ലളിതവും എന്നാൽ വളരെ പ്രധാനപ്പെട്ടതുമായ ഒരു നിഗമനം പിന്തുടരുന്നു. ആ PHP, തത്വത്തിൽ, html ഉപയോഗിച്ച് ചെയ്യാൻ കഴിയാത്ത ഒന്നും ബ്രൗസറിൽ പ്രദർശിപ്പിക്കാൻ കഴിയില്ല.
PHP-യിൽ എന്തെങ്കിലും എഴുതുന്നതിന് മുമ്പ്, അത് ശുദ്ധമായ HTML-ൽ ചെയ്യാൻ ശ്രമിക്കുക.
"Enter" അമർത്തുന്നത് വരി വിവർത്തനം ചെയ്യുന്നില്ലേ? നിങ്ങൾ html-ൽ ഈ രീതിയിൽ സ്ട്രിംഗുകൾ വിവർത്തനം ചെയ്യാൻ ശ്രമിച്ചിട്ടുണ്ടോ? വർക്ക് ഔട്ട് ആയില്ലേ? എന്തൊരു നാണക്കേട്. html-ൽ ഒരു ലൈൻ ബ്രേക്ക് ഉണ്ടാക്കുന്നത് എങ്ങനെയെന്ന് വായിക്കുക, വീണ്ടും വരിക.

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

ഒരേ സമയം HTML ഇമേജുകൾ അടങ്ങിയ ഫയലുകൾ എങ്ങനെ കാണിക്കണമെന്ന് ബ്രൗസറിന് അറിയില്ല. ബ്രൗസറിന് അറിയാവുന്ന ഡാറ്റ തരങ്ങൾ മാത്രമേ കാണിക്കാൻ കഴിയൂ. പ്രത്യേകമായി, ഇത് ഒന്നുകിൽ html അല്ലെങ്കിൽ ഒരു ചിത്രം. പക്ഷേ ഒന്നിച്ചല്ല. ഒരു ചിത്രമുണ്ടെങ്കിൽ, ഒന്ന് ഉണ്ട്. ബ്രൗസറിന് തുടർച്ചയായി നിരവധി ചിത്രങ്ങൾ പ്രദർശിപ്പിക്കാൻ കഴിയില്ല. ബ്രൗസറിന് നിരവധി ചിത്രങ്ങളിലേക്ക് ലിങ്കുകൾ അടങ്ങിയ HTML പ്രദർശിപ്പിക്കാൻ കഴിയും.
ദയവായി, PHP പഠിക്കുന്നതിന് മുമ്പ്, HTML-ന്റെ അടിസ്ഥാനകാര്യങ്ങളെങ്കിലും പഠിക്കുക! PHP-യിൽ നിന്ന് എന്തെങ്കിലും ആവശ്യപ്പെടുന്നതിന് മുമ്പ്, അത് html-ൽ ചെയ്യാൻ ശ്രമിക്കുക.

01/19/17 7.7K

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

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

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

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

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

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

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

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

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

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

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

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

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

PHP സെഷനുകൾ - സൃഷ്ടിക്കൽ

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

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

PHP സെഷൻ - മൂല്യങ്ങൾ നേടുന്നു

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

  • PHP സെഷൻ വേരിയബിളുകളുടെ മൂല്യങ്ങൾ അപ്‌ഡേറ്റ് ചെയ്യുന്നു: ഒരു സെഷനിൽ, നിങ്ങൾക്ക് അതിന്റെ വേരിയബിളുകളുടെ മൂല്യങ്ങൾ അപ്‌ഡേറ്റ് ചെയ്യാൻ കഴിയും. ആദ്യം നമ്മൾ ഓരോ പേജിന്റെയും തുടക്കത്തിൽ ഒരു PHP സെഷൻ തുറക്കേണ്ടതുണ്ട് (session_start()). ചുവടെയുള്ള കോഡിൽ, "userID" - "new_php_user", "പാസ്‌വേഡ്" - "വിദ്യാഭ്യാസം" എന്നീ വേരിയബിളുകളുടെ മൂല്യങ്ങൾ ഞങ്ങൾ അപ്‌ഡേറ്റ് ചെയ്യുന്നു.

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

PHP സെഷൻ - മൂല്യങ്ങൾ മാറ്റുന്നു

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

എല്ലാവർക്കും നല്ലൊരു ദിവസം ആശംസിക്കുന്നു. തുടക്കക്കാരായ ഡെവലപ്പർമാർക്കുള്ള PHP പരമ്പരയിലെ ആദ്യ ലേഖനമാണിത്. ഇതൊരു അസാധാരണമായ ലേഖന പരമ്പരയായിരിക്കും, "ഹലോ വേൾഡ്" എന്ന പ്രതിധ്വനി ഉണ്ടാകില്ല, മെറ്റീരിയൽ ഏകീകരിക്കുന്നതിന് "ഗൃഹപാഠം" എന്ന ചെറിയ മിശ്രിതമുള്ള പിഎച്ച്പി പ്രോഗ്രാമർമാരുടെ ജീവിതത്തിൽ നിന്ന് ഹാർഡ്‌കോർ ഉണ്ടാകും.

ഞാൻ സെഷനുകളിൽ തുടങ്ങും - നിങ്ങൾ പ്രവർത്തിക്കേണ്ട ഏറ്റവും പ്രധാനപ്പെട്ട ഘടകങ്ങളിലൊന്നാണിത്. അതിന്റെ പ്രവർത്തനത്തിന്റെ തത്വങ്ങൾ മനസ്സിലാക്കാതെ, നിങ്ങൾ കാര്യങ്ങൾ അട്ടിമറിക്കും. അതിനാൽ, പ്രശ്നങ്ങൾ ഒഴിവാക്കാൻ, സാധ്യമായ എല്ലാ സൂക്ഷ്മതകളെക്കുറിച്ചും സംസാരിക്കാൻ ഞാൻ ശ്രമിക്കും.

എന്നാൽ ആദ്യം, എന്തുകൊണ്ടാണ് നമുക്ക് ഒരു സെഷൻ ആവശ്യമെന്ന് മനസിലാക്കാൻ, നമുക്ക് ഉത്ഭവത്തിലേക്ക് തിരിയാം - HTTP പ്രോട്ടോക്കോൾ.

HTTP പ്രോട്ടോക്കോൾ

HTTP പ്രോട്ടോക്കോൾ ഹൈപ്പർടെക്സ്റ്റ് ട്രാൻസ്ഫർ പ്രോട്ടോക്കോൾ ആണ് - "ഹൈപ്പർടെക്സ്റ്റ് ട്രാൻസ്ഫർ പ്രോട്ടോക്കോൾ" - അതായത്. സാരാംശത്തിൽ, ഇത് ഒരു ടെക്സ്റ്റ് പ്രോട്ടോക്കോൾ ആണ്, അത് മനസ്സിലാക്കാൻ പ്രയാസമില്ല.

തുടക്കത്തിൽ, പേര് ഉൾപ്പെടെ ഈ പ്രോട്ടോക്കോൾ വഴി HTML മാത്രമേ കൈമാറൂ എന്നാണ് ഉദ്ദേശിച്ചിരുന്നത്, എന്നാൽ ഇപ്പോൾ അവർ ഒന്നും അയയ്‌ക്കുന്നില്ല( (_ㅅ_ )=^.^=

എച്ച്ടിടിപി പ്രോട്ടോക്കോൾ വഴിയുള്ള ആശയവിനിമയത്തിന്റെ ഒരു ഉദാഹരണം ഞാൻ നിങ്ങൾക്ക് നൽകാം, നിങ്ങൾ http://example.com എന്ന പേജ് അഭ്യർത്ഥിക്കുമ്പോൾ നിങ്ങളുടെ ബ്രൗസർ അയയ്‌ക്കുന്ന അഭ്യർത്ഥന ഇതാ:

GET / HTTP/1.1 ഹോസ്റ്റ്: example.com സ്വീകരിക്കുക: വാചകം/html ... ശൂന്യമായ വരി...

പ്രതികരണത്തിന്റെ ഒരു ഉദാഹരണം ഇതാ:

HTTP/1.1 200 ശരി ഉള്ളടക്ക-ദൈർഘ്യം: 1983 ഉള്ളടക്ക-തരം: ടെക്സ്റ്റ്/html; charset=utf-8 ... ...

ഇവ വളരെ ലളിതമാക്കിയ ഉദാഹരണങ്ങളാണ്, എന്നാൽ ഇവിടെ നിങ്ങൾക്ക് ഒരു HTTP അഭ്യർത്ഥനയും പ്രതികരണവും എന്തെല്ലാമാണെന്ന് കാണാൻ കഴിയും:

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

  • ഒരു ഉപയോക്താവിനെ അംഗീകരിക്കുമ്പോൾ, സെർവർ ഒരു അദ്വിതീയ കീ സൃഷ്ടിക്കുകയും ഓർമ്മിക്കുകയും ചെയ്യുന്നു - സെഷൻ ഐഡന്റിഫയർ, അത് ബ്രൗസറിലേക്ക് റിപ്പോർട്ടുചെയ്യുന്നു.
  • ബ്രൗസർ ഈ കീ സംരക്ഷിക്കുന്നു, തുടർന്നുള്ള ഓരോ അഭ്യർത്ഥനയ്‌ക്കൊപ്പവും അത് അയയ്‌ക്കുന്നു
  • ഈ സംവിധാനം നടപ്പിലാക്കുന്നതിനായി, (കുക്കികൾ, കുക്കികൾ) സൃഷ്ടിച്ചു - നിങ്ങളുടെ കമ്പ്യൂട്ടറിലെ ലളിതമായ ടെക്‌സ്‌റ്റ് ഫയലുകൾ, ഓരോ ഡൊമെയ്‌നിനും ഒരു ഫയൽ (ചില ബ്രൗസറുകൾ കൂടുതൽ വികസിതമാണെങ്കിലും സംഭരണത്തിനായി ഒരു SQLite ഡാറ്റാബേസ് ഉപയോഗിക്കുന്നുവെങ്കിലും), ബ്രൗസർ നമ്പറിൽ ഒരു പരിധി ഏർപ്പെടുത്തുന്നു. റെക്കോർഡുകളുടെയും സംഭരിച്ച ഡാറ്റയുടെ വലുപ്പത്തിന്റെയും (മിക്ക ബ്രൗസറുകൾക്കും ഇത് 4096 ബൈറ്റുകൾ ആണ്, 1997 മുതൽ RFC 2109 കാണുക)

    ആ. നിങ്ങളുടെ ബ്രൗസറിൽ നിന്ന് ഒരു കുക്കി മോഷ്ടിക്കപ്പെട്ടാൽ, നിങ്ങളുടെ പേരിൽ നിങ്ങളുടെ ഫേസ്ബുക്ക് പേജിലേക്ക് ലോഗിൻ ചെയ്യാൻ കഴിയുമോ? പരിഭ്രാന്തരാകരുത്, കുറഞ്ഞത് Facebook-ലെങ്കിലും നിങ്ങൾക്ക് ഇത് ചെയ്യാൻ കഴിയില്ല, തുടർന്ന് നിങ്ങളുടെ ഉപയോക്താക്കൾക്ക് നേരെയുള്ള ഇത്തരത്തിലുള്ള ആക്രമണത്തിൽ നിന്ന് എങ്ങനെ സ്വയം പരിരക്ഷിക്കാമെന്ന് ഞാൻ നിങ്ങളെ പഠിപ്പിക്കും.

    അംഗീകാരമുണ്ടെങ്കിൽ നമ്മുടെ അഭ്യർത്ഥന-പ്രതികരണം എങ്ങനെ മാറുമെന്ന് നോക്കാം:

    POST /login/ HTTP/1.1 Host: example.com സ്വീകരിക്കുക: text/html login=Username&password=Userpass

    ഞങ്ങളുടെ രീതി POST-ലേക്ക് മാറി, ലോഗിനും പാസ്‌വേഡും അഭ്യർത്ഥനയുടെ ബോഡിയിലേക്ക് അയയ്‌ക്കും (ഞങ്ങൾ GET രീതി ഉപയോഗിക്കുകയാണെങ്കിൽ, അഭ്യർത്ഥന സ്‌ട്രിംഗിൽ ലോഗിനും പാസ്‌വേഡും അടങ്ങിയിരിക്കും, കൂടാതെ ചില ഇന്റർമീഡിയറ്റ് പ്രോക്‌സി സെർവറുകളിൽ സംരക്ഷിക്കപ്പെടുകയും ചെയ്‌തേക്കാം, അത് വളരെ മോശമാണ്).

    HTTP/1.1 200 ശരി ഉള്ളടക്ക-തരം: വാചകം/html; charset=utf-8 സെറ്റ്-കുക്കി: KEY=VerySecretUniqueKey ... ...

    സെർവറിന്റെ പ്രതികരണത്തിൽ സെറ്റ്-കുക്കി ഹെഡർ അടങ്ങിയിരിക്കും: KEY=VerySecretUniqueKey , ഈ ഡാറ്റ കുക്കികളിൽ സംരക്ഷിക്കാൻ ബ്രൗസറിനെ പ്രേരിപ്പിക്കും, അടുത്ത തവണ അത് സെർവറുമായി ബന്ധപ്പെടുമ്പോൾ, അത് സെർവർ അയയ്ക്കുകയും തിരിച്ചറിയുകയും ചെയ്യും:

    GET / HTTP/1.1 ഹോസ്റ്റ്: example.com സ്വീകരിക്കുക: text/html കുക്കി: KEY=VerySecretUniqueKey ...ശൂന്യമായ സ്ട്രിംഗ്...

    നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, ബ്രൗസർ (അഭ്യർത്ഥന തലക്കെട്ടുകൾ), സെർവർ (പ്രതികരണ തലക്കെട്ടുകൾ) അയച്ച തലക്കെട്ടുകൾ വ്യത്യസ്തമാണ്, എന്നിരുന്നാലും അഭ്യർത്ഥനകൾക്കും പ്രതികരണങ്ങൾക്കും (പൊതു തലക്കെട്ടുകൾ) പൊതുവായ ചിലത് ഉണ്ടെങ്കിലും

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

    പിഎച്ച്പിയും സെഷനും

    നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ ഇതിനകം തന്നെ PHP ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ടെന്ന് ഞാൻ പ്രതീക്ഷിക്കുന്നു, കാരണം... കൂടുതൽ ഞാൻ ഉദാഹരണങ്ങൾ നൽകും, അവ പ്രവർത്തിപ്പിക്കേണ്ടതുണ്ട്

    HTTP പ്രോട്ടോക്കോളുമായി പൊരുത്തപ്പെടുന്നതിനാണ് PHP ഭാഷ സൃഷ്ടിച്ചത് - അതായത്. ഒരു എച്ച്ടിടിപി അഭ്യർത്ഥനയോട് പ്രതികരിക്കുകയും മെമ്മറിയും ഉറവിടങ്ങളും സ്വതന്ത്രമാക്കുകയും "ഡൈ" ചെയ്യുകയുമാണ് ഇതിന്റെ പ്രധാന ദൗത്യം. തൽഫലമായി, PHP-യിലെ സെഷൻ മെക്കാനിസം സ്വയമേവയല്ല, സ്വമേധയാ പ്രവർത്തിക്കുന്നു, എന്ത് വിളിക്കണം, ഏത് ക്രമത്തിലാണ് നിങ്ങൾ അറിയേണ്ടത്.

    ഒന്നാമതായി, നിങ്ങൾ സെഷൻ "ആരംഭിക്കേണ്ടതുണ്ട്" - ഇതിനായി ഞങ്ങൾ സെഷൻ_സ്റ്റാർട്ട് () ഫംഗ്ഷൻ ഉപയോഗിക്കും, ഒരു ഫയൽ സൃഷ്ടിക്കുക session.start.phpഇനിപ്പറയുന്ന ഉള്ളടക്കത്തോടൊപ്പം:

    Session_start();

    ഇപ്പോൾ ഞങ്ങൾ പേജ് പുതുക്കുന്നു, ബ്രൗസർ ഈ കുക്കി സെർവറിലേക്ക് അയയ്ക്കുന്നത് ഞങ്ങൾ കാണുന്നു, നിങ്ങൾക്ക് പേജ് രണ്ട് തവണ പുതുക്കാൻ ശ്രമിക്കാം, ഫലം സമാനമായിരിക്കും:

    അതിനാൽ, നമുക്കുള്ളത്, സിദ്ധാന്തം പരിശീലനവുമായി പൊരുത്തപ്പെടുന്നു, അത് വളരെ മികച്ചതാണ്.

    സെഷനിൽ ഒരു അനിയന്ത്രിതമായ മൂല്യം സംരക്ഷിക്കുക എന്നതാണ് അടുത്ത ഘട്ടം, ഇതിനായി PHP-യിൽ ഞങ്ങൾ സൂപ്പർ-ഗ്ലോബൽ വേരിയബിൾ $_SESSION ഉപയോഗിക്കുന്നു, ഞങ്ങൾ നിലവിലെ സമയം ലാഭിക്കും - ഇതിനായി ഞങ്ങൾ തീയതി() ഫംഗ്ഷൻ എന്ന് വിളിക്കും:

    Session_start(); $_SESSION["സമയം"] = തീയതി("H:i:s"); പ്രതിധ്വനി $_SESSION["സമയം"];

    ഞങ്ങൾ പേജ് പുതുക്കുകയും സെർവർ സമയം കാണുകയും അത് വീണ്ടും പുതുക്കുകയും ചെയ്യുന്നു - സമയം അപ്ഡേറ്റ് ചെയ്യുന്നു. ഓരോ തവണയും പേജ് പുതുക്കുമ്പോൾ സജ്ജീകരിച്ച സമയം മാറുന്നില്ലെന്ന് ഉറപ്പാക്കാം:

    Session_start(); എങ്കിൽ (!isset($_SESSION["time"])) ($_SESSION["time"] = date("H:i:s"); ) echo $_SESSION["time"];

    ഞങ്ങൾ അപ്ഡേറ്റ് ചെയ്യുന്നു - സമയം മാറില്ല, എന്താണ് വേണ്ടത്. എന്നാൽ അതേ സമയം, PHP മരിക്കുകയാണെന്ന് ഞങ്ങൾ ഓർക്കുന്നു, അതിനർത്ഥം അത് ഈ സെഷൻ എവിടെയെങ്കിലും സൂക്ഷിക്കുന്നു, ഞങ്ങൾ ഈ സ്ഥലം കണ്ടെത്തും...

    എല്ലാ രഹസ്യങ്ങളും വ്യക്തമാകും

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

    നിങ്ങളുടെ കോൺഫിഗറേഷനിൽ, ഫയലുകളിലേക്കുള്ള പാത വ്യക്തമാക്കിയേക്കില്ല, തുടർന്ന് സെഷൻ ഫയലുകൾ നിങ്ങളുടെ സിസ്റ്റത്തിലെ താൽക്കാലിക ഫയലുകളിൽ സംഭരിക്കും - sys_get_temp_dir() ഫംഗ്‌ഷനിൽ വിളിച്ച് ഈ മറഞ്ഞിരിക്കുന്ന സ്ഥലം എവിടെയാണെന്ന് കണ്ടെത്തുക.

    അതിനാൽ, ഈ പാതയിലൂടെ പോയി നിങ്ങളുടെ സെഷൻ ഫയൽ കണ്ടെത്തുക (എനിക്ക് ഇത് sess_dap83arr6r3b56e0q7t5i0qf91 ഫയൽ ആണ്), ഇത് ഒരു ടെക്സ്റ്റ് എഡിറ്ററിൽ തുറക്കുക:

    സമയം|s:8:"16:19:51";

    നമുക്ക് കാണാനാകുന്നതുപോലെ, ഇത് ഞങ്ങളുടെ സമയമാണ്, ഇതാണ് ഞങ്ങളുടെ സെഷൻ സംഭരിച്ചിരിക്കുന്ന തന്ത്രപരമായ ഫോർമാറ്റ്, പക്ഷേ ഞങ്ങൾക്ക് എഡിറ്റുകൾ നടത്താം, സമയം മാറ്റാം, അല്ലെങ്കിൽ നമുക്ക് ഏത് വരിയും നൽകാം, എന്തുകൊണ്ട്:

    സമയം|s:13:"\m/ (@.@) \m/";

    ഈ സ്‌ട്രിംഗ് ഒരു അറേയിലേക്ക് പരിവർത്തനം ചെയ്യുന്നതിന്, നിങ്ങൾ സെഷൻ_ഡീകോഡ്() ഫംഗ്‌ഷൻ ഉപയോഗിക്കേണ്ടതുണ്ട്, റിവേഴ്‌സ് പരിവർത്തനത്തിനായി - സെഷൻ_എൻകോഡ്() - ഇതിനെ സീരിയലൈസേഷൻ എന്ന് വിളിക്കുന്നു, സെഷനുകൾക്കായി പിഎച്ച്പിയിൽ മാത്രം - ഇത് സവിശേഷമാണ്, എന്നിരുന്നാലും നിങ്ങൾക്ക് സ്റ്റാൻഡേർഡ് പിഎച്ച്പി സീരിയലൈസേഷൻ ഉപയോഗിക്കാം - സെഷൻ കോൺഫിഗറേഷൻ ഡയറക്‌ടീവിൽ എഴുതുക .serialize_handler php_serialize മൂല്യം, നിങ്ങൾ സന്തുഷ്ടരായിരിക്കും, കൂടാതെ $_SESSION നിയന്ത്രണങ്ങളില്ലാതെ ഉപയോഗിക്കാം - ഇപ്പോൾ നിങ്ങൾക്ക് അക്കങ്ങളും പ്രത്യേക പ്രതീകങ്ങളും ഒരു സൂചികയായി ഉപയോഗിക്കാം | ഒപ്പം! പേരിൽ (എല്ലാ 10+ വർഷത്തെ ജോലിയിലും, അത് ഒരിക്കലും ആവശ്യമില്ല :)

    വ്യായാമം ചെയ്യുക
    നിങ്ങളുടെ സ്വന്തം ഫംഗ്‌ഷൻ എഴുതുക, സെഷൻ_ഡീകോഡ്() ന് സമാനമായ പ്രവർത്തനക്ഷമത, ഇവിടെ സെഷനുള്ള ഒരു ടെസ്റ്റ് ഡാറ്റ സെറ്റ് ചെയ്യുന്നു (പ്രശ്നം പരിഹരിക്കാൻ പതിവ് എക്സ്പ്രഷനുകളുടെ അറിവ് ആവശ്യമില്ല), നിങ്ങളുടെ നിലവിലെ സെഷന്റെ ഫയലിൽ നിന്ന് പരിവർത്തനത്തിനായി ടെക്സ്റ്റ് എടുക്കുക:

    $_SESSION["പൂർണ്ണസംഖ്യ var"] = 123; $_SESSION["float var"] = 1.23; $_SESSION["octal var"] = 0x123; $_SESSION["string var"] = "ഹലോ വേൾഡ്"; $_SESSION["array var"] = ["ഒന്ന്", "രണ്ട്", ]; $object = പുതിയ stdClass(); $object->foo = "ബാർ"; $object->arr = ["ഹലോ", "വേൾഡ്"]; $_SESSION["object var"] = $object; $_SESSION["വീണ്ടും പൂർണ്ണസംഖ്യ"] = 42;

    അതിനാൽ, ഞങ്ങൾ ഇതുവരെ എന്താണ് പരീക്ഷിക്കാത്തത്? അത് ശരിയാണ് - കുക്കികൾ മോഷ്ടിക്കുക, നമുക്ക് മറ്റൊരു ബ്രൗസർ സമാരംഭിച്ച് അതേ കുക്കികൾ അതിൽ ചേർക്കുക. ഇതിനായി ഞാൻ നിങ്ങൾക്ക് ഒരു ലളിതമായ ജാവാസ്ക്രിപ്റ്റ് എഴുതി, അത് നിങ്ങളുടെ ബ്രൗസർ കൺസോളിലേക്ക് പകർത്തി പ്രവർത്തിപ്പിക്കുക, സെഷൻ ഐഡന്റിഫയർ നിങ്ങളുടേതായി മാറ്റാൻ മറക്കരുത്:

    Javascript:(function())(document.cookie="PHPSESSID=dap83arr6r3b56e0q7t5i0qf91;path=/;";window.location.reload();))()

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

    Session_start(); എങ്കിൽ (!isset($_SESSION["സമയം"])) ($_SESSION["ua"] = $_SERVER["HTTP_USER_AGENT"]; $_SESSION["സമയം"] = തീയതി("H:i:s"); ) എങ്കിൽ ($_SESSION["ua"] != $_SERVER["HTTP_USER_AGENT"]) ( മരിക്കുക("തെറ്റായ ബ്രൗസർ"); ) $_SESSION["സമയം"];

    ഇത് വ്യാജമാക്കാൻ കൂടുതൽ ബുദ്ധിമുട്ടാണ്, പക്ഷേ ഇപ്പോഴും സാധ്യമാണ്, $_SERVER["REMOTE_ADDR"], $_SERVER["HTTP_X_FORWARDED_FOR"] എന്നിവയുടെ സംരക്ഷവും പരിശോധനയും ഇവിടെ ചേർക്കുക , ഇത് ഞങ്ങളുടെ “” ആക്രമിക്കുന്നവരിൽ നിന്നുള്ള സംരക്ഷണത്തിന് ഏറെക്കുറെ സമാനമായിരിക്കും. കുക്കികൾ".

    മുമ്പത്തെ ഖണ്ഡികയിലെ കീവേഡ് സമാനമാണ്, യഥാർത്ഥ പ്രോജക്റ്റുകളിൽ കുക്കികൾ വളരെക്കാലമായി HTTPS പ്രോട്ടോക്കോളിൽ "പ്രവർത്തിക്കുന്നു", അതിനാൽ നിങ്ങളുടെ കമ്പ്യൂട്ടറിലേക്കോ സ്മാർട്ട്ഫോണിലേക്കോ ശാരീരിക ആക്സസ് ഇല്ലാതെ ആർക്കും അവ മോഷ്ടിക്കാൻ കഴിയില്ല

    വ്യായാമം ചെയ്യുക
    ഉപയോക്താവിന്റെ IP-യുടെ കോഡിലേക്ക് ഒരു ചെക്ക് ചേർക്കുക; പരിശോധന പരാജയപ്പെട്ടാൽ, വിട്ടുവീഴ്ച ചെയ്ത സെഷൻ ഇല്ലാതാക്കുക.

    പടി പടിയായി

    ഇനിപ്പറയുന്ന കോഡ് ഒരു ഉദാഹരണമായി (സ്ഥിരസ്ഥിതി ക്രമീകരണങ്ങൾ) ഉപയോഗിച്ച് PHP-യിൽ ഒരു സെഷൻ എങ്ങനെ പ്രവർത്തിക്കുന്നു എന്നതിന്റെ അൽഗോരിതം ഘട്ടം ഘട്ടമായി ഞാൻ വിശദീകരിക്കും:

    Session_start(); $_SESSION["id"] = 42;

  • സെഷൻ_സ്റ്റാർട്ട്() എന്ന് വിളിച്ചതിന് ശേഷം, PHP സെഷൻ ഐഡന്റിഫയർ കുക്കിയിൽ സെഷൻ.നെയിമിൽ വ്യക്തമാക്കിയിട്ടുള്ള പേരിൽ തിരയുന്നു - ഇത് PHPSESSID ആണ്
  • ഐഡന്റിഫയർ ഇല്ലെങ്കിൽ, അത് സൃഷ്ടിക്കപ്പെടും (സെഷൻ_ഐഡി() കാണുക), കൂടാതെ sess_(session_id()) എന്ന പേരിൽ സെഷൻ.save_path എന്ന പാതയിൽ ഒരു ശൂന്യമായ സെഷൻ ഫയൽ സൃഷ്ടിക്കുന്നു, സെർവർ പ്രതികരണത്തിലേക്ക് ഹെഡറുകൾ ചേർക്കും കുക്കി (session_name())= (session_id())
  • ഐഡന്റിഫയർ ഉണ്ടെങ്കിൽ, session.save_path ഫോൾഡറിൽ സെഷൻ ഫയലിനായി നോക്കുക:
    • ഞങ്ങൾ അത് കണ്ടെത്തിയില്ലെങ്കിൽ, ഞങ്ങൾ sess_($_COOKIE) എന്ന പേരിൽ ഒരു ശൂന്യമായ ഫയൽ സൃഷ്‌ടിക്കുന്നു (ഐഡന്റിഫയറിൽ a-z , A-Z , 0-9 , കോമ, മൈനസ് ചിഹ്നം എന്നിവയിൽ നിന്നുള്ള പ്രതീകങ്ങൾ മാത്രമേ ഉൾക്കൊള്ളാൻ കഴിയൂ)
    • $_SESSION എന്ന സൂപ്പർ ഗ്ലോബൽ വേരിയബിളിലേക്ക് ഫയൽ കണ്ടെത്തുക, വായിക്കുക, ഡാറ്റ അൺപാക്ക് ചെയ്യുക (സെഷൻ_ഡീകോഡ്() കാണുക)
  • സ്‌ക്രിപ്റ്റ് അതിന്റെ പ്രവർത്തനം പൂർത്തിയാകുമ്പോൾ, $_SESSION-ൽ നിന്നുള്ള എല്ലാ ഡാറ്റയും സെഷൻ_എൻകോഡ്() ഉപയോഗിച്ച് സെഷൻ പാതയിലെ ഫയലിലേക്ക് പാക്ക് ചെയ്യപ്പെടും.save_path എന്ന പേരിൽ sess_(session_id())
  • വ്യായാമം ചെയ്യുക
    നിങ്ങളുടെ ബ്രൗസർ PHPSESSID എന്ന് പേരുള്ള ഒരു അനിയന്ത്രിതമായ കുക്കി മൂല്യത്തിലേക്ക് സജ്ജീകരിക്കുക, അത് 1234567890 ആയിരിക്കട്ടെ, പേജ് പുതുക്കുക, നിങ്ങൾ ഒരു പുതിയ ഫയൽ സൃഷ്ടിച്ചിട്ടുണ്ടോയെന്ന് പരിശോധിക്കുക sess_1234567890

    "കുക്കികൾ" ഇല്ലാതെ ജീവിതമുണ്ടോ?

    ബ്രൗസറിൽ കുക്കികൾ പ്രവർത്തനരഹിതമാക്കിയാലും PHP-ന് ഒരു സെഷനിൽ പ്രവർത്തിക്കാൻ കഴിയും, എന്നാൽ സൈറ്റിലെ എല്ലാ URL-കളിലും നിങ്ങളുടെ സെഷൻ ഐഡന്റിഫയർ ഉള്ള ഒരു പാരാമീറ്റർ അടങ്ങിയിരിക്കും, അതെ - ഇത് ഇപ്പോഴും കോൺഫിഗർ ചെയ്യേണ്ടതുണ്ട്, എന്നാൽ നിങ്ങൾക്കത് ആവശ്യമുണ്ടോ? എനിക്ക് ഇത് ഉപയോഗിക്കേണ്ടി വന്നിട്ടില്ല, പക്ഷേ നിങ്ങൾക്ക് ശരിക്കും വേണമെങ്കിൽ, എവിടെ കുഴിക്കണമെന്ന് ഞാൻ നിങ്ങളോട് പറയും:

    നിങ്ങൾക്ക് ഡാറ്റാബേസിൽ സെഷൻ സംഭരിക്കണമെങ്കിൽ എന്തുചെയ്യും?

    ഡാറ്റാബേസിൽ ഒരു സെഷൻ സംഭരിക്കുന്നതിന്, നിങ്ങൾ സെഷൻ സ്റ്റോറേജ് മാറ്റുകയും അത് എങ്ങനെ ഉപയോഗിക്കണമെന്ന് PHP-യോട് പറയുകയും വേണം; ഇതിനായി SessionHandlerInterface ഇന്റർഫേസും session_set_save_handler ഫംഗ്‌ഷനും സൃഷ്‌ടിച്ചിരിക്കുന്നു.

    പ്രത്യേകമായി, redis, memcache എന്നിവയ്‌ക്കായി നിങ്ങളുടെ സ്വന്തം സെഷൻ ഹാൻഡ്‌ലറുകൾ എഴുതേണ്ടതില്ലെന്ന് ഞാൻ ശ്രദ്ധിക്കാൻ ആഗ്രഹിക്കുന്നു - നിങ്ങൾ ഈ വിപുലീകരണങ്ങൾ ഇൻസ്റ്റാൾ ചെയ്യുമ്പോൾ, അനുബന്ധ ഹാൻഡ്‌ലറുകൾ അവയ്‌ക്കൊപ്പം വരുന്നു, അതിനാൽ RTFM ഞങ്ങളുടെ എല്ലാം ആണ്. ശരി, അതെ, സെഷൻ_സ്റ്റാർട്ട്() ;) വിളിക്കുന്നതിന് മുമ്പ് ഹാൻഡ്‌ലർ വ്യക്തമാക്കിയിരിക്കണം

    വ്യായാമം ചെയ്യുക
    MySQL-ൽ സെഷൻ സംഭരിക്കാൻ SessionHandlerInterface നടപ്പിലാക്കുക, അത് പ്രവർത്തിക്കുന്നുണ്ടോയെന്ന് പരിശോധിക്കുക.
    ഒരു നക്ഷത്രചിഹ്നമുള്ള ഈ ടാസ്ക്ക് ഇതിനകം ഡാറ്റാബേസുകളുമായി പരിചയമുള്ളവർക്കുള്ളതാണ്.

    ഒരു സെഷൻ എപ്പോഴാണ് മരിക്കുന്നത്?

    രസകരമായ ഒരു ചോദ്യം, പരിചയസമ്പന്നരായ ഡെവലപ്പർമാരോട് നിങ്ങൾക്ക് ഇത് ചോദിക്കാം - കാലഹരണപ്പെട്ട സെഷൻ ഫയലുകൾ PHP എപ്പോഴാണ് ഇല്ലാതാക്കുന്നത്? ഉത്തരം ഔദ്യോഗിക മാനുവലിൽ ഉണ്ട്, പക്ഷേ വ്യക്തമായി അല്ല - അതിനാൽ ഓർക്കുക:

    സെഷൻ_സ്റ്റാർട്ട്() ഫംഗ്‌ഷൻ വിളിക്കുമ്പോൾ ഗാർബേജ് കളക്ടർ (ഗാർബേജ് കളക്ഷൻ) ആരംഭിക്കാൻ കഴിയും, ആരംഭിക്കുന്നതിന്റെ സംഭാവ്യത സെഷൻ.ജിസി_പ്രോബബിലിറ്റി, സെഷൻ.ജിസി_ഡിവൈസർ എന്നീ രണ്ട് നിർദ്ദേശങ്ങളെ ആശ്രയിച്ചിരിക്കുന്നു, ആദ്യത്തേത് ഡിവിഡന്റായി പ്രവർത്തിക്കുന്നു, രണ്ടാമത്തേത് - വിഭജനം, കൂടാതെ സ്ഥിരസ്ഥിതി ഈ മൂല്യങ്ങൾ 1 ഉം 100 ഉം ആണ്, അതായത് e. കളക്ടർ ലോഞ്ച് ചെയ്യപ്പെടാനും സെഷൻ ഫയലുകൾ ഇല്ലാതാക്കാനുമുള്ള സാധ്യത ഏകദേശം 1% ആണ്.

    വ്യായാമം ചെയ്യുക
    സെഷൻ.ജിസി_ഡിവൈസർ നിർദ്ദേശത്തിന്റെ മൂല്യം മാറ്റുക, അതുവഴി ഗാർബേജ് കളക്ടർ ഓരോ തവണയും പ്രവർത്തിക്കുന്നു, ഇത് സംഭവിക്കുന്നുണ്ടോയെന്ന് പരിശോധിക്കുക.

    ഏറ്റവും നിസ്സാരമായ തെറ്റ്

    Google-ൽ അര ദശലക്ഷത്തിലധികം ഫലങ്ങളുള്ള ഒരു പിശക്:

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

    ഒരെണ്ണം ലഭിക്കാൻ, ഒരു ഫയൽ സൃഷ്‌ടിക്കുക session.error.phpഇനിപ്പറയുന്ന ഉള്ളടക്കത്തോടൊപ്പം:

    എക്കോ str_pad(" ", ini_get("output_buffering")); സെഷൻ_ആരംഭം();

    രണ്ടാമത്തെ വരിയിൽ ഒരു വിചിത്രമായ "മാജിക്" ഉണ്ട് - ഇത് ഔട്ട്‌പുട്ട് ബഫറുള്ള ഒരു തന്ത്രമാണ്, ഇനിപ്പറയുന്ന ലേഖനങ്ങളിലൊന്നിൽ ഞാൻ ഇതിനെക്കുറിച്ച് സംസാരിക്കും, ഇപ്പോൾ ഇത് 4096 പ്രതീകങ്ങൾ നീളമുള്ള ഒരു വരി മാത്രം പരിഗണിക്കുക, ഈ സാഹചര്യത്തിൽ ഇത് എല്ലാ സ്‌പെയ്‌സുകളുമാണ്.

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

    വ്യായാമം ചെയ്യുക
    ഈ അറിവ് പരിശോധിക്കുന്നതിന്, നിങ്ങളുടേതായ സെഷൻ സംവിധാനം നടപ്പിലാക്കാനും ഇനിപ്പറയുന്ന കോഡ് പ്രവർത്തിക്കാനും ഞാൻ ആഗ്രഹിക്കുന്നു:

    Require_ഒരിക്കൽ "include/sess.php"; സെഷൻ_ആരംഭം(); എങ്കിൽ (ഇസെറ്റ്($_SESS["id"])) (എക്കോ $_SESS["id"]; ) വേറെ ($_SESS["id"] = 42; )

    നിങ്ങളുടെ പ്ലാൻ നടപ്പിലാക്കാൻ, നിങ്ങൾക്ക് register_shutdown_function() ഫംഗ്‌ഷൻ ആവശ്യമാണ്

    ഒടുവിൽ

    ഈ ലേഖനത്തിൽ നിങ്ങൾക്ക് ആറ് ടാസ്ക്കുകൾ നൽകിയിരിക്കുന്നു, അവ സെഷനുകൾക്കൊപ്പം പ്രവർത്തിക്കുന്നതുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു, മാത്രമല്ല MySQL ലേക്ക് നിങ്ങളെ പരിചയപ്പെടുത്തുകയും സ്ട്രിംഗുകൾ ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്ന പ്രവർത്തനങ്ങളെ പരിചയപ്പെടുത്തുകയും ചെയ്യും. ഈ മെറ്റീരിയൽ മാസ്റ്റർ ചെയ്യുന്നതിന്, നിങ്ങൾക്ക് ഒരു പ്രത്യേക ലേഖനം ആവശ്യമില്ല, നൽകിയിരിക്കുന്ന ലിങ്കുകളിൽ നിന്നുള്ള മാനുവൽ മതിയാകും - ആരും നിങ്ങൾക്കായി ഇത് വായിക്കില്ല. അതിനായി ശ്രമിക്കൂ!

    പി.എസ്. ലേഖനത്തിൽ നിന്ന് നിങ്ങൾ പുതിയ എന്തെങ്കിലും പഠിച്ചിട്ടുണ്ടെങ്കിൽ, രചയിതാവിന് നന്ദി - സോഷ്യൽ നെറ്റ്‌വർക്കുകളിൽ ലേഖനം പങ്കിടുക;)