ടെർമിനൽ സെർവർ റിമോട്ട് കണക്ഷൻ സെഷൻ്റെ പാരാമീറ്ററുകൾ എങ്ങനെ ക്രമീകരിക്കാം? HTTP സെഷൻ ഒരു ക്ലയൻ്റ് അഭ്യർത്ഥന അയയ്ക്കുന്നു


PHP-യിലെ സെഷനുകൾ അല്ലെങ്കിൽ ഒരു സൈറ്റ് സന്ദർശിക്കുന്ന ഒരു ഉപയോക്താവിനെക്കുറിച്ചോ ഉപഭോക്താവിനെക്കുറിച്ചോ ഉള്ള ഡാറ്റ, ഒരു സൈറ്റിൻ്റെ പേജുകൾക്കിടയിൽ വലിയ ബുദ്ധിമുട്ടില്ലാതെ നീങ്ങുമ്പോൾ സംരക്ഷിക്കപ്പെടും. പാഠം വളരെ പ്രധാനമാണ്. 95% വെബ്‌സൈറ്റുകൾ സൃഷ്‌ടിക്കുന്നതിന് പ്രസക്തമാണ്.

എന്താണ് php-ലെ സെഷൻ

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

സെഷൻ യുക്തി

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

ജോലിയുടെ ഉദാഹരണം
1. ഉപയോക്താവ് അവൻ്റെ പ്രവേശനവും പാസ്‌വേഡും നൽകി സൈറ്റിൽ പ്രവേശിക്കുന്നു
2. ലോഗിൻ, പാസ്‌വേഡ് എന്നിവയുള്ള ഡാറ്റ സൈറ്റ് പേജുകളിലൊന്നിൻ്റെ സെഷനിൽ സംരക്ഷിക്കപ്പെടുന്നു:

ഫയൽ index.php

Session_start(); // നിങ്ങൾ സെഷൻ ഡാറ്റ ഉപയോഗിക്കാൻ ആഗ്രഹിക്കുന്ന ഓരോ ഫയലിലും കോഡിൻ്റെ തുടക്കത്തിൽ ഒരു "ആരംഭ സെഷൻ" കമാൻഡ് അടങ്ങിയിരിക്കണം

$ലോഗിൻ = "അഡ്മിൻ";
$പാസ്വേഡ് = "പാസ്";
$_SESSION["ലോഗിൻ"] = $ലോഗിൻ; // ലോഗിൻ അടങ്ങിയ ഒരു വേരിയബിൾ സംരക്ഷിക്കുക
$_SESSION["പാസ്‌വേഡ്"] = $പാസ്‌വേഡ്; // പാസ്‌വേഡ് അടങ്ങിയ ഒരു വേരിയബിൾ സംരക്ഷിക്കുക

3. നിങ്ങൾ സൈറ്റിൻ്റെ മറ്റൊരു പേജിലേക്ക് പോകുമ്പോൾ, ഈ ഡാറ്റയും ലഭ്യമാകും:

ഫയൽ ഉദാഹരണം.php(അല്ലെങ്കിൽ മറ്റേതെങ്കിലും പേജ്)

എക്കോ "നിങ്ങളുടെ ലോഗിൻ ".$_SESSION["ലോഗിൻ"]; // "നിങ്ങളുടെ ലോഗിൻ അഡ്മിൻ ആണ്", ഞങ്ങൾ ഈ പേജിൽ ഒരു ഡാറ്റയും രേഖപ്പെടുത്തിയിട്ടില്ലെങ്കിലും!
നോക്കൂ, ഇത് ലളിതമാണ്!

4. നിങ്ങൾക്ക് സെഷൻ ഡാറ്റ മായ്‌ക്കണമെങ്കിൽ, നിങ്ങൾ ചെയ്യേണ്ടത് ഇതാണ്:

ഫയൽ ഉദാഹരണം.php

Session_start(); // "സെഷൻ ആരംഭിക്കുക" വീണ്ടും

സജ്ജീകരിക്കാത്തത്($_SESSION["ലോഗിൻ"]); // ഇങ്ങനെയാണ് വേരിയബിൾ രജിസ്റ്റർ ചെയ്യാത്തത് അല്ലെങ്കിൽ "നശിപ്പിച്ചത്"
എക്കോ "നിങ്ങളുടെ ലോഗിൻ ".$_SESSION["ലോഗിൻ"]; // "നിങ്ങളുടെ ലോഗിൻ" പ്രദർശിപ്പിക്കും. അവസാന വരിയിൽ ഞങ്ങൾ ഇത് നശിപ്പിച്ചതിനാൽ, ഡാറ്റയൊന്നുമില്ല

Session_destroy(); // സെഷൻ നശിപ്പിക്കുക. $_SESSION["പാസ്‌വേഡ്"] ഉൾപ്പെടെയുള്ള എല്ലാ ഡാറ്റയും ഇനി ഇല്ല. അവ അഭ്യർത്ഥിക്കുമ്പോൾ, ഒരു പിശക് ദൃശ്യമാകും
പൊതുവേ, അത്തരമൊരു കൈമാറ്റം POST രീതിക്ക് സമാനമാണ്, എന്നാൽ നിങ്ങൾ ഇനി അനാവശ്യമായ കോഡ് എഴുതേണ്ടതില്ല, കൂടാതെ പേജിൽ നിന്ന് പേജിലേക്ക് കൈമാറുന്ന എല്ലാ ഡാറ്റയും സെർവറിലെ താൽക്കാലിക ഫയലുകളിൽ സംഭരിച്ചിരിക്കുന്നു. ഞാൻ ആവർത്തിക്കുന്നു, സെഷനുകളിൽ ചെറിയ അളവിലുള്ള ഡാറ്റ അടങ്ങിയിരിക്കണം, അതിനാൽ അവ ലോഗിൻ/പാസ്‌വേഡ്, ഷോപ്പിംഗ് കാർട്ട്, മറ്റ് ചെറിയ വോള്യങ്ങൾ എന്നിവ സംഭരിക്കുന്നതിന് അനുയോജ്യമാണ്.

ഒരു PHP സെഷൻ ഉപയോഗിച്ച് ഒരു മൂല്യമോ അറേയോ കൈമാറുന്നു

നിങ്ങൾക്ക് ഒരു സെഷനിലേക്ക് ഒരു സ്ട്രിംഗ് മാത്രമല്ല, ഡാറ്റയുടെ ഒരു നിരയും എഴുതാം. അറേയുടെ വോളിയം ഉപയോഗിച്ച് ഇത് അമിതമാക്കരുത്, കാരണം ഇതെല്ലാം സെർവറിലെ വേഗതയെയും അധിനിവേശ സ്ഥലത്തെയും ബാധിക്കും.

ഞങ്ങൾ വീണ്ടും ഒരു നിശ്ചിത ആരംഭ പേജ് ഉപയോഗിക്കുന്നു index.php

Session_start();

$r = അറേ ("ഒന്ന്", "രണ്ട്", "മൂന്ന്");

$_SESSION["arr"] = $r;

എല്ലാം പ്രദർശിപ്പിക്കുന്ന പേജിലേക്ക്
ഞങ്ങൾ സെഷനിൽ ഡാറ്റ സംരക്ഷിച്ചു, മറ്റൊരു പേജിലേക്കുള്ള ലിങ്ക് പിന്തുടരുക, അവിടെ ഞങ്ങൾ എല്ലാ ഡാറ്റയും പ്രദർശിപ്പിക്കും.

ഡെസ്റ്റിനേഷൻ ഫയൽ, പേജ് test.phpഞങ്ങൾ അറേ തുറക്കുന്നിടത്ത്

Session_start();
print_r($_SESSION["arr"]);
// പ്രിൻ്റ് ചെയ്യും
/*
അറേ
=>ഒന്ന്
=> രണ്ട്
=> മൂന്ന്
*/
?>
എന്നതിലെ പാഠം നിങ്ങൾ മനസ്സിലാക്കാൻ ആഗ്രഹിച്ചേക്കാം. പൊതുവേ, എല്ലാം വ്യക്തമായിരിക്കണം.

സെഷനുകൾക്കൊപ്പം പ്രവർത്തിക്കുന്നതിനുള്ള മറ്റ് പ്രവർത്തനങ്ങൾ

സെഷൻ_അൺരജിസ്റ്റർ(സ്ട്രിംഗ്)- സെഷൻ നിർദ്ദിഷ്ട ആഗോള വേരിയബിളിൻ്റെ മൂല്യം മറക്കുന്നു;
session_destroy()- സെഷൻ നശിപ്പിക്കപ്പെട്ടു (ഉദാഹരണത്തിന്, എക്സിറ്റ് ബട്ടൺ ക്ലിക്കുചെയ്ത് ഉപയോക്താവ് സിസ്റ്റം ഉപേക്ഷിച്ചാൽ);
session_set_cookie_params(int lifetime [, string path [, string domain]])- ഈ ഫംഗ്‌ഷൻ ഉപയോഗിച്ച് സെഷൻ്റെ മരണ സമയം നിർണ്ണയിക്കുന്ന ഒരു unix_timestamp സജ്ജീകരിച്ച് ഒരു സെഷൻ എത്രത്തോളം ജീവിക്കുമെന്ന് നിങ്ങൾക്ക് സജ്ജീകരിക്കാനാകും.

php-ലെ സെഷനുകളിൽ പ്രവർത്തിക്കുന്നതിനുള്ള പ്രവർത്തനങ്ങളുടെ പട്ടിക
session_cache_expire - നിലവിലെ കാഷെയുടെ കാലഹരണപ്പെടൽ നൽകുന്നു
session_cache_limiter - നിലവിലെ കാഷെ ലിമിറ്റർ നേടുന്നു കൂടാതെ/അല്ലെങ്കിൽ സജ്ജീകരിക്കുന്നു
സെഷൻ_കമ്മിറ്റ് എന്നത് സെഷൻ_റൈറ്റ്_ക്ലോസ് () എന്നതിൻ്റെ അപരനാമമാണ്
സെഷൻ_ഡീകോഡ് - ഒരു സ്ട്രിംഗിൽ നിന്നുള്ള സെഷൻ ഡാറ്റ ഡീകോഡ് ചെയ്യുന്നു
session_destroy - സെഷനിൽ രജിസ്റ്റർ ചെയ്ത എല്ലാ ഡാറ്റയും നശിപ്പിക്കുന്നു
session_encode - നിലവിലെ സെഷൻ ഡാറ്റ ഒരു സ്ട്രിംഗ് ആയി എൻക്രിപ്റ്റ് ചെയ്യുന്നു
session_get_cookie_params - സെഷൻ കുക്കി പാരാമീറ്ററുകൾ ലഭിക്കുന്നു
session_id - നിലവിലെ സെഷൻ ഐഡി നേടുകയും/അല്ലെങ്കിൽ സജ്ജീകരിക്കുകയും ചെയ്യുന്നു
session_is_registered - വേരിയബിൾ സെഷനിൽ രജിസ്റ്റർ ചെയ്തിട്ടുണ്ടോ എന്ന് നിർണ്ണയിക്കുന്നു
session_module_name - നിലവിലെ സെഷൻ മൊഡ്യൂൾ ലഭിക്കുന്നു കൂടാതെ/അല്ലെങ്കിൽ സജ്ജീകരിക്കുന്നു
session_name - നിലവിലെ സെഷൻ്റെ പേര് ലഭിക്കുകയും/അല്ലെങ്കിൽ സജ്ജീകരിക്കുകയും ചെയ്യുന്നു
session_regenerate_id - പുതിയതായി ജനറേറ്റുചെയ്ത ഒന്ന് ഉപയോഗിച്ച് നിലവിലെ സെഷൻ ഐഡി പരിഷ്കരിക്കുന്നു
session_register - നിലവിലെ സെഷനിൽ ഒന്നോ അതിലധികമോ വേരിയബിളുകൾ രജിസ്റ്റർ ചെയ്യുന്നു
session_save_path - നിലവിലെ സെഷൻ സംരക്ഷിക്കുന്നതിനുള്ള പാത്ത് നേടുകയും/അല്ലെങ്കിൽ സജ്ജീകരിക്കുകയും ചെയ്യുന്നു
session_set_cookie_params - സെഷൻ കുക്കി പാരാമീറ്ററുകൾ സജ്ജമാക്കുന്നു
session_set_save_handler - ഉപയോക്തൃ നില സെഷൻ സ്റ്റോറേജ് ഫംഗ്ഷനുകൾ സജ്ജമാക്കുന്നു
session_start - സെഷൻ ഡാറ്റ ആരംഭിക്കുന്നു
session_unregister - നിലവിലെ സെഷനിൽ നിന്ന് ഒരു വേരിയബിൾ അൺരജിസ്റ്റർ ചെയ്യുന്നു
session_unset - എല്ലാ സെഷൻ വേരിയബിളുകളും റിലീസ് ചെയ്യുന്നു
session_write_close - സെഷൻ ഡാറ്റയും സെഷൻ്റെ അവസാനവും എഴുതുന്നു

സെഷൻ ജോലിയുടെ ഉദാഹരണങ്ങൾ

ഒരു സെഷനിൽ പേജ് കാഴ്‌ചകളുടെ കൗണ്ടർ. ജോലിയുടെ വ്യക്തമായ ഉദാഹരണം. എന്നിരുന്നാലും, ബ്രൗസർ അടച്ച ശേഷം, കൗണ്ട്ഡൗൺ വീണ്ടും ആരംഭിക്കും.

ഒരു സെഷനിൽ ഒരു പേജിലേക്കുള്ള സന്ദർശനങ്ങളുടെ കൗണ്ടർ

// കുക്കികൾ ഇല്ലാതെ സെഷനുകൾ ഉപയോഗിക്കുന്നതിനുള്ള ഒരു ലളിതമായ ഉദാഹരണം.
session_name("ടെസ്റ്റ്");
സെഷൻ_ആരംഭം();
$_SESSION["count"] = @$_SESSION["count"] + 1;
?>

കൗണ്ടർ


നിങ്ങളുടെ നിലവിലെ ബ്രൗസർ സെഷനിൽ നിങ്ങൾ ഈ പേജ് തുറന്നിരിക്കുന്നു
സമയം(ങ്ങൾ).
ഈ കൗണ്ടർ പുനഃസജ്ജമാക്കാൻ നിങ്ങളുടെ ബ്രൗസർ അടയ്ക്കുക.
പേജ് അപ്ഡേറ്റ് ചെയ്യാൻ ഇവിടെ ക്ലിക്ക് ചെയ്യുക!
ഓരോ പരിവർത്തനത്തിലും കൗണ്ടർ 1 വർദ്ധിക്കും)

നിങ്ങളുടെ ശ്രദ്ധയ്ക്ക് നന്ദി! നിങ്ങളുടെ ശ്രമങ്ങളിൽ ഭാഗ്യം!

    വാചകം/html 10/19/2017 7:51:00 വെക്റ്റർ BCO 0

    WS2012 ടെർമിനൽ സെർവറിൽ 13-15 ക്ലയൻ്റുകൾ ഇരിക്കുന്നു. വെർച്വൽ മെഷീനിലെ ടെർമിനൽ കറങ്ങുകയാണ്. ഒരു പ്രത്യേക വെർച്വൽ മെഷീനിൽ DNS, AD, DHCP.

    ചോദ്യം നമ്പർ 1: ഒരു നിഷ്ക്രിയ സെഷനിൽ വിച്ഛേദിക്കുന്ന സമയ പരിധി എങ്ങനെ ക്രമീകരിക്കാം?

    gpedit.msc കമ്പ്യൂട്ടർ കോൺഫിഗറേഷനിൽ -> വിൻഡോസ് ഘടകങ്ങൾ -> റിമോട്ട് ഡെസ്ക്ടോപ്പ് സേവനങ്ങൾ -> റിമോട്ട് ഡെസ്ക്ടോപ്പ് സെഷൻ ഹോസ്റ്റ് -> സമയ പരിമിതി സെഷനുകൾ. അവിടെയുള്ള എല്ലാ പാരാമീറ്ററുകളും വ്യക്തമാക്കിയിട്ടില്ല. അതേ സമയം, നിഷ്ക്രിയ സമയം 20-30 മിനിറ്റ്. എല്ലാവരെയും പുറത്താക്കുന്നു.

    ഞാൻ RUNet-ൽ ധാരാളം വിവരങ്ങൾ പരിശോധിച്ചു, പക്ഷേ എനിക്ക് അത് WS2012-ന് എവിടെയും കണ്ടെത്താൻ കഴിഞ്ഞില്ല, ഇത് WS2003-ന് മാത്രമേ ലഭ്യമാകൂ

    ചോദ്യം നമ്പർ 2: സെഷൻ വിച്ഛേദിച്ച ശേഷം, ഉപയോക്താവിനായി തുറന്നിരിക്കുന്ന എല്ലാ സോഫ്റ്റ്‌വെയറുകളും ക്ലോസ് ചെയ്യുന്നില്ലെന്ന് എനിക്ക് എങ്ങനെ ഉറപ്പാക്കാനാകും?

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

    ചോദ്യം നമ്പർ 3: WS2012-ൽ സെർവർ ഷട്ട് ഡൗൺ ചെയ്യാനുള്ള അവകാശങ്ങൾ പരിമിതപ്പെടുത്താൻ കഴിയുമോ?

    അല്ലെങ്കിൽ, ഉപയോക്താക്കൾ ആരംഭിക്കുക അമർത്തുമ്പോൾ, പാനൽ ടൈൽ ചെയ്തിരിക്കുന്നു, കൂടാതെ ഒരു "പവർ" ബട്ടൺ ഉണ്ട്, അതായത്. ഏതൊരു ഉപയോക്താവിനും ടെർമിനൽ സെർവർ അബദ്ധവശാൽ ഓഫാക്കാനും എല്ലാ ജോലിയും നിർത്താനും കഴിയും.

    മോഡറേറ്റർ

    വാചകം/html 10/19/2017 11:30:36 അവ്സെൻ്റീവ് സെർജി 1

    1 അതിനാൽ ശേഖരണ പ്രോപ്പർട്ടികളിൽ ഒരു "സെഷൻ" ടാബ് ഉണ്ട്. അവിടെ നിങ്ങൾക്ക് കോൺഫിഗർ ചെയ്യേണ്ടത് കാണാനാകും.. അല്ലെങ്കിൽ എനിക്ക് മനസ്സിലായില്ലേ?

    2 ഇത് ഉപയോക്താവ് എങ്ങനെ സെഷൻ ക്ലോസ് ചെയ്യുന്നു എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്നു.. അപ്രാപ്തമാക്കിയ സെൻസർ ക്ലോസ് ചെയ്യാതിരിക്കാൻ നിങ്ങൾ അപ്രാപ്തമാക്കി കോൺഫിഗർ ചെയ്താൽ, ഓപ്പൺ പ്രോഗ്രാമുകൾ നിലനിൽക്കും.. എന്നാൽ ഇത് അത്ര നല്ല ആശയമല്ലെന്ന് എനിക്ക് തോന്നുന്നു... ഞാൻ രാത്രി മുഴുവൻ കനത്ത ടെർമിനലുകൾ റീബൂട്ട് ചെയ്യുക, അങ്ങനെ ബാക്കിയുള്ള തുറന്ന മാലിന്യം മുഴുവൻ അടച്ചു.

    3 നിങ്ങളുടെ ഉപയോക്താക്കൾ അഡ്മിൻമാരല്ലെങ്കിൽ, ഡിഫോൾട്ടായി ഈ ബട്ടൺ പ്രവർത്തനരഹിതമാക്കുകയും പുറത്തുകടക്കുകയും ചെയ്യുന്നു.

  • വാചകം/html 10/23/2017 10:51:31 ഇവാനും കെ.ഒ 0

    >>എങ്ങനെയാണ് നിങ്ങൾ ടെർമിനൽ സെർവർ ക്രമീകരിച്ചത്? നിങ്ങൾക്ക് RDS റോൾ കോൺഫിഗർ ചെയ്‌തിട്ടുണ്ടെങ്കിൽ, സെഷൻ പൂർണ്ണമായും അടയ്‌ക്കുന്നതുവരെ (ഈ സെഷനിലെ എല്ലാ ഉപയോക്തൃ പ്രോഗ്രാമുകൾക്കൊപ്പം).

    >>നിങ്ങൾക്ക് ഒരു RDS റോൾ കോൺഫിഗർ ചെയ്‌തിട്ടുണ്ടെങ്കിൽ

    എവിടെ നോക്കണമെന്ന് അറിയില്ലേ?

    >>ശേഖര കോൺഫിഗറേഷനിൽ വിച്ഛേദിക്കുന്നതുവരെ ഒരു സെഷൻ ലൈഫ്ടൈം ഉണ്ട്

    എവിടെ നോക്കണമെന്ന് അറിയില്ലേ?

    >>നിങ്ങൾക്ക് സെർവറിൽ അഡ്മിനിസ്ട്രേറ്റർമാരായ ഉപയോക്താക്കൾ ഉണ്ടോ?

    അതെ, അഡ്മിൻസ്.

    >>സ്വതവേ, സാധാരണ ഉപയോക്താക്കൾക്ക് സെർവർ ഷട്ട് ഡൗൺ ചെയ്യാൻ കഴിയില്ല. എന്നാൽ പോളിസിയിൽ നിങ്ങൾക്ക് ഈ ബട്ടൺ മൊത്തത്തിൽ മറയ്ക്കാം.

  • വാചകം/html 10/23/2017 11:00:12 ഇവാനും കെ.ഒ 0

    >>അതിനാൽ കളക്ഷൻ പ്രോപ്പർട്ടികളിൽ ഒരു "സെഷൻ" ടാബ് ഉണ്ട്.അവിടെ നിങ്ങൾക്ക് കോൺഫിഗർ ചെയ്യേണ്ടത് കാണാം.. അല്ലെങ്കിൽ എനിക്ക് മനസ്സിലായില്ലേ?

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

    നിങ്ങൾ കളക്ഷൻ പ്രോപ്പർട്ടികളിൽ എഴുതി - അത് എവിടെയാണ്?

    >>ഉപയോക്താവ് എങ്ങനെയാണ് സെഷൻ ക്ലോസ് ചെയ്യുന്നത് എന്ന് നോക്കുമ്പോൾ.. ഡിസേബിൾഡ് സെഷൻ ക്ലോസ് ചെയ്യാതിരിക്കാൻ നിങ്ങൾ ഡിസ്കണക്ട് ചെയ്ത് കോൺഫിഗർ ചെയ്താൽ, ഓപ്പൺ പ്രോഗ്രാമുകൾ നിലനിൽക്കും.. എന്നാൽ ഇത് അത്ര നല്ല ആശയമല്ലെന്ന് എനിക്ക് തോന്നുന്നു... ഞാൻ രാത്രിയിൽ എല്ലാ സമയത്തും കനത്ത ടെർമിനലുകൾ റീബൂട്ട് ചെയ്യുക, അങ്ങനെ ബാക്കിയുള്ള തുറന്ന മാലിന്യങ്ങളെല്ലാം അടച്ചു.

    ഞാൻ സെഷൻ ആയുസ്സ് വർദ്ധിപ്പിക്കും, തുടക്കക്കാർക്കായി... നിങ്ങൾ എന്താണ് സംസാരിക്കുന്നതെന്ന് എനിക്ക് നന്നായി മനസ്സിലായി, സസ്പെൻഡ് ചെയ്ത സെഷനുകൾ പ്രധാനമല്ല. ഈ സ്റ്റഫുകളെല്ലാം കൃത്യമായി എവിടെയാണ് കോൺഫിഗർ ചെയ്തിരിക്കുന്നതെന്ന് അറിയാൻ ഞാൻ ആഗ്രഹിക്കുന്നു...?

    ഒരു ടെർമിനൽ സെർവർ സജ്ജീകരിക്കുന്നതിൽ എനിക്ക് പരിചയമില്ല (മുമ്പ് ഞാൻ അതിൽ ഒരു ക്ലയൻ്റ് ആയി മാത്രമേ പ്രവർത്തിച്ചിട്ടുള്ളൂ), ഞാൻ വളരെക്കാലമായി ഐടി ഘടനയിൽ ആയിരുന്നെങ്കിലും, ഞാൻ ഒരിക്കലും ഈ പ്രത്യേക ജോലി ചെയ്തിട്ടില്ല. ഇൻ്റർനെറ്റിൽ ഇത് എങ്ങനെ ചെയ്യണം എന്നതിനെക്കുറിച്ചുള്ള വിശദമായ നിർദ്ദേശങ്ങൾ കണ്ടെത്താൻ കഴിയുമെങ്കിൽ ഞാൻ ഇവിടെ ചോദ്യം എഴുതില്ല...

  • വാചകം/html 10/23/2017 11:13:30 വെക്റ്റർ BCO 0

    >>എങ്ങനെയാണ് നിങ്ങൾ ടെർമിനൽ സെർവർ ക്രമീകരിച്ചത്? നിങ്ങൾ ശേഖരണ കോൺഫിഗറേഷനിൽ RDS റോൾ കോൺഫിഗർ ചെയ്തിട്ടുണ്ടെങ്കിൽ, വിച്ഛേദിക്കുന്ന നിമിഷം വരെയും സെഷൻ പൂർണ്ണമായും അടയ്‌ക്കുന്ന നിമിഷം വരെയും (ഈ സെഷനിലെ എല്ലാ ഉപയോക്തൃ പ്രോഗ്രാമുകൾക്കൊപ്പം) ഒരു സെഷൻ ആയുസ്സ് ഉണ്ട്.

    എനിക്ക് പ്രിയപ്പെട്ടതും എന്നാൽ വളരെ വിചിത്രവുമായ ചോദ്യം നിങ്ങൾ എങ്ങനെയാണ് ഇത് സജ്ജീകരിച്ചത്? ഇത് സ്ഥാപിച്ചത് ഞാനല്ലെന്ന് ചോദ്യങ്ങളിൽ നിന്ന് വ്യക്തമാകണമെന്ന് ഞാൻ കരുതുന്നു. അല്ലെങ്കിൽ, ഞാൻ എന്താണ് സജ്ജീകരിച്ചതെന്ന് വിശദീകരിക്കാൻ വളരെ ബുദ്ധിമുട്ടാണ്, ഇപ്പോൾ അത് എങ്ങനെ മാറ്റണമെന്ന് എനിക്കറിയില്ല ... ഓർമ്മക്കുറവ് മുതലായവ.

    ഒരിക്കൽ കൂടി, അത് സ്ഥാപിച്ചത് ഞാനല്ല. കാരണം ഞാൻ ഇത് ചെയ്തില്ല, അപ്പോൾ ഈ ക്രമീകരണങ്ങളിലെ കഴിവുകൾ വ്യക്തമായി കുറവാണ്. അതിനാൽ ഞാൻ പ്രൊഫഷണലുകളോട് ചോദിക്കുന്നു: ഇത് എങ്ങനെ ചെയ്യാം, ദയവായി എന്നോട് പറയൂ?

    >>നിങ്ങൾക്ക് ഒരു RDS റോൾ കോൺഫിഗർ ചെയ്‌തിട്ടുണ്ടെങ്കിൽ

    എവിടെ നോക്കണമെന്ന് അറിയില്ലേ?

    >>ശേഖര കോൺഫിഗറേഷനിൽ വിച്ഛേദിക്കുന്നതുവരെ ഒരു സെഷൻ ലൈഫ്ടൈം ഉണ്ട്

    എവിടെ നോക്കണമെന്ന് അറിയില്ലേ?

    >>നിങ്ങൾക്ക് സെർവറിൽ അഡ്മിനിസ്ട്രേറ്റർമാരായ ഉപയോക്താക്കൾ ഉണ്ടോ?

    അതെ, അഡ്മിൻസ്.

    >>സ്വതവേ, സാധാരണ ഉപയോക്താക്കൾക്ക് സെർവർ ഷട്ട് ഡൗൺ ചെയ്യാൻ കഴിയില്ല. എന്നാൽ പോളിസിയിൽ നിങ്ങൾക്ക് ഈ ബട്ടൺ മൊത്തത്തിൽ മറയ്ക്കാം.

    ഉപയോക്താക്കളിൽ നിന്ന് അഡ്മിൻ അവകാശങ്ങൾ നീക്കം ചെയ്യുന്നതെങ്ങനെ? ഇത് എഡിയിലോ ടെർമിനൽ സെർവറിൽ മറ്റെവിടെയെങ്കിലുമോ കോൺഫിഗർ ചെയ്‌തിട്ടുണ്ടോ? പവർ ബട്ടൺ മറയ്ക്കാൻ എങ്ങനെ ഒരു നയം ഉണ്ടാക്കാം?

    നിങ്ങൾ മനസ്സിലാക്കിയതിന് മുൻകൂട്ടി നന്ദി, നിങ്ങളുടെ ഉത്തരങ്ങൾക്കായി ഞാൻ കാത്തിരിക്കുന്നു...

    നിങ്ങളുടെ സെർവറിൽ ഒരു മെഗാ പ്രോഗ്രസീവ് ടൂൾ ഉണ്ട് " സെർവർ മാനേജർ"റോളുകൾ/സവിശേഷതകൾ ചേർക്കുക/നീക്കം ചെയ്യുകയും കോൺഫിഗർ ചെയ്യുകയും ചെയ്യുന്നു. ഈ ടൂളിൻ്റെ പ്രവർത്തനക്ഷമത പരിശോധിക്കുക. ഇടതുവശത്ത് ചില റോളുകൾക്കുള്ള ക്രമീകരണങ്ങളുണ്ട് (ഇൻസ്റ്റാൾ ചെയ്‌തിരിക്കുന്നു) അവിടെ ഒരു RDS ഇനം ഉണ്ടെങ്കിൽ, അതിലേക്ക് പോകുക, തുടർന്ന് ശേഖരത്തിലേക്ക് ക്രമീകരണങ്ങൾ. WS 2012 r2-ൽ ഒരു ടെർമിനൽ സെർവർ സജ്ജീകരിക്കുന്നതെങ്ങനെയെന്ന് Google. നിങ്ങൾക്ക് ഇതുപോലെ തിരയാം: Google -> "ടെർമിനൽ സെർവർ 2012 r2 ഘട്ടം ഘട്ടമായുള്ള ഗൈഡ്".

    സെർവറിൽ (സെർവറിൽ മാത്രമല്ല) ഒരു മെഗാ ടൂളും ഉണ്ട് കമ്പ്യൂട്ടർ മാനേജ്മെന്റ്(സെർവർ മാനേജറുമായി തെറ്റിദ്ധരിക്കരുത്) ആരംഭിക്കുക എന്നതിൽ വലത്-ക്ലിക്കുചെയ്ത് നിങ്ങൾക്ക് അത് കണ്ടെത്താനാകും.

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

    Google ബട്ടൺ എങ്ങനെ മറയ്ക്കാം -> "ഷട്ട് ഡൗൺ ബട്ടൺ GPO മറയ്ക്കുക"

    ഞാൻ പ്രകടിപ്പിച്ച അഭിപ്രായം മൈക്രോസോഫ്റ്റിൻ്റെ ഔദ്യോഗിക നിലപാടല്ല

    മോഡറേറ്റർ

    വാചകം/html 10/25/2017 7:51:20 ഇവാനും കെ.ഒ 0

    >>ഒരു സെർവർ എങ്ങനെ കൈകാര്യം ചെയ്യണമെന്ന് നിങ്ങൾക്കറിയില്ലെന്ന് ഊഹിക്കാൻ പ്രയാസമായിരുന്നു, കാരണം ഒരു ചട്ടം പോലെ, ഇവിടെ വരുന്നവർ ആദ്യം അവരുടെ ചോദ്യമെങ്കിലും ഗൂഗിൾ ചെയ്യുക.

    ഞാൻ ഒന്നിലധികം തവണ ചോദ്യം ഗൂഗിൾ ചെയ്തു, ഞാൻ അത് മുകളിൽ എഴുതി. ഞാൻ റഷ്യൻ ഭാഷാ ഉറവിടങ്ങളിൽ ഗൂഗിൾ ചെയ്‌തത് മാത്രമാണ്... പ്രായോഗികമായി യുക്തിസഹമായ ലേഖനങ്ങളൊന്നും അവിടെയില്ല. ഇംഗ്ലീഷ് ഉറവിടങ്ങൾ ഉണ്ടെന്ന് ഞാൻ തന്നെ കണ്ടു, പക്ഷേ ആദ്യം മുതൽ ഒരു സിസ്റ്റം സജ്ജീകരിക്കുന്നതിനെക്കുറിച്ചുള്ള വലിയ ലേഖനങ്ങൾ 100% ശരിയായി മനസ്സിലാക്കാൻ എൻ്റെ സാങ്കേതിക ഇംഗ്ലീഷ് കഴിവുകൾ പര്യാപ്തമല്ല, അത് ഞാൻ മുമ്പ് ചെയ്തിട്ടില്ല.

    >>നിങ്ങൾക്ക് ഇതുപോലെ തിരയാൻ കഴിയും: Google -> "ടെർമിനൽ സെർവർ 2012 r2 ഘട്ടം ഘട്ടമായുള്ള ഗൈഡ്. Google -> "ഷട്ട് ഡൗൺ ബട്ടൺ GPO മറയ്ക്കുക

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

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

    >>നിങ്ങളുടെ സെർവറിൽ "സെർവർ മാനേജർ" എന്ന പേരിൽ ഒരു മെഗാ പ്രോഗ്രസീവ് ടൂൾ ഉണ്ട്.

    ഒരു വ്യക്തിയുടെ മുന്നിൽ, ഒരു പ്രശസ്തമായ സ്ഥലത്തിനെതിരെ സ്വയം അളക്കാൻ കൂടുതൽ സന്നദ്ധതയുള്ള ഒരു ധാർമിക സ്വരം ഇവിടെ വായിക്കാം. അത് പോലെ പ്രൊഫ. ഒരു തുടക്കക്കാരന് നോക്കൗട്ട് എങ്ങനെ ചെയ്യാമെന്ന് ഒരു ബോക്സർ കാണിക്കും, അവൻ്റെ മുഖത്തും തയ്യാറെടുപ്പില്ലാതെയും... വ്യക്തിയെ സഹായിക്കാനും ചോദ്യങ്ങൾക്ക് ഉത്തരം നൽകാനുമുള്ള വളരെ വിചിത്രമായ ഒരു രീതി.

    നിങ്ങളുടെ ഫോം റഷ്യൻ ഭാഷയിലാണ്, ചോദ്യം റഷ്യൻ ഭാഷയിലായിരുന്നു, ഉത്തരം റഷ്യൻ ഭാഷയിൽ ലഭിക്കാൻ നിങ്ങൾ ആഗ്രഹിക്കുന്നു.

    ധാർമ്മികതയില്ലാതെ - എന്തുകൊണ്ടാണ് നിങ്ങൾ Google ചെയ്യാത്തത്? അത്തരമൊരു ട്രംപ് ബട്ടൺ ഗൂഗിൾ മുതലായവയുണ്ട്.

    ചോദ്യോത്തര ശൈലിയിൽ പ്രവർത്തിക്കുന്നത് കൂടുതൽ ഫലപ്രദമാണ്.

    ചോദ്യം: ഇതും അതും എങ്ങനെ സജ്ജീകരിക്കും? ഉത്തരം: അവിടെ പോയി അത്തരത്തിലുള്ളവ ചെയ്യുക.

  • വാചകം/html 10.25.2017 8:25:04 വെക്റ്റർ BCO 0

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

    വ്യക്തമായ ഉത്തരം നൽകുന്നതിന്, നിങ്ങൾക്ക് വ്യക്തമായ ഒരു ചോദ്യം ലഭിക്കേണ്ടതുണ്ട്. ഞാൻ നിന്നോട് ചോദിച്ചു പ്രസംഗിക്കുന്നില്ല" എന്ന ശൈലിയിൽ എനിക്ക് ഉത്തരം ലഭിച്ച ആദ്യ സന്ദേശത്തിലെ ചോദ്യം എന്തുകൊണ്ടാണ് നിങ്ങൾ എന്നോട് മണ്ടത്തരമായി എന്തെങ്കിലും ചോദിക്കുന്നത്, എന്താണ് സംഭവിക്കുന്നതെന്ന് എനിക്കറിയില്ല എന്ന് വ്യക്തമായി എഴുതിയിരിക്കുന്നു".

    ഞാൻ പ്രകടിപ്പിച്ച അഭിപ്രായം മൈക്രോസോഫ്റ്റിൻ്റെ ഔദ്യോഗിക നിലപാടല്ല

ക്ലയൻ്റ് കമ്പ്യൂട്ടറിനെക്കുറിച്ചുള്ള വിവരങ്ങൾ സെർവർ വശത്ത് സൂക്ഷിക്കുന്നതിനുള്ള ഒരു സംവിധാനമാണ് PHP-യിലെ സെഷനുകൾ. വാസ്തവത്തിൽ, 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() function

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

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 സെക്കൻഡിനുശേഷം ഈ ഉദാഹരണം വീണ്ടും തുറക്കുക. നിങ്ങളുടെ സെഷൻ സംരക്ഷിക്കപ്പെടും.

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

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

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

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

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

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

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

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

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

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

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

echo "നിങ്ങൾ ഈ പേജ് അപ്ഡേറ്റ് ചെയ്തു ".$_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;
echo "നിങ്ങൾ ഈ പേജ് ".$_SESSION["കൗണ്ടർ"]++" അപ്ഡേറ്റ് ചെയ്തു.

അപ്ഡേറ്റ് ചെയ്യുക";
?>

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

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

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

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

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

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

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

അധിക വിവരം:

  • കുക്കികൾക്ക് പുറമേ, സെഷൻ മെക്കാനിസം പേജ് കാഷെ ചെയ്യുന്നതിനെ നിരോധിക്കുന്ന തലക്കെട്ടുകളും അയയ്ക്കുന്നു (അതേ കാഷെ ലിമിറ്റർ). html-ന് ഇത് ശരിയും ആവശ്യവുമാണ്. എന്നാൽ നിങ്ങൾ അംഗീകാരം പരിശോധിക്കുന്ന ഒരു സ്ക്രിപ്റ്റ് ഉപയോഗിച്ച് ഒരു ഫയൽ അയയ്ക്കാൻ ശ്രമിക്കുമ്പോൾ, Internet Explorer അത് ഡൗൺലോഡ് ചെയ്യാൻ വിസമ്മതിക്കുന്നു. ഈ തലക്കെട്ടാണ് കാരണം. വിളി
    session_cache_limiter("സ്വകാര്യം");
    സെഷൻ ആരംഭിക്കുന്നതിന് മുമ്പ് പ്രശ്നം പരിഹരിക്കണം.
  • വിചിത്രമായി തോന്നിയാലും, നിങ്ങൾക്ക് $_SESSION അറേയിൽ സംഖ്യാ സൂചികകൾ ഉപയോഗിക്കാൻ കഴിയില്ല - $_SESSION, $_SESSION["10"] - സെഷനുകൾ പ്രവർത്തിക്കില്ല.
  • പതിപ്പുകൾ 4.2 നും 5.0 നും ഇടയിൽ എവിടെയോ ini_set() ഉപയോഗിച്ച് session.use_trans_sid സജ്ജമാക്കാൻ കഴിഞ്ഞില്ല. 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" ഉൾപ്പെടുത്തുക;
    ?>
    രഹസ്യം

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

    ഒപിഎസ്! വളരെ ഉപയോഗപ്രദമായ ലിങ്കുകൾ:
    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-യിലെ സെഷനുകൾ വളരെക്കാലമായി പ്രവർത്തിച്ചിട്ടില്ല.
    അതിന് ദിമയ്ക്ക് നന്ദി, റഷ്യൻ ഭാഷയിലെ സെഷനുകളെക്കുറിച്ചുള്ള ആദ്യ ലേഖനമാണിത്, ഞാൻ അതിൽ നിന്ന് സ്വയം പഠിച്ചു, എന്നാൽ ഇപ്പോൾ ഞാൻ അത് അർഹമായ വിശ്രമത്തിലേക്ക് അയയ്ക്കേണ്ടതുണ്ട്.
    കൂടാതെ, നിർഭാഗ്യവശാൽ, ഇൻറർനെറ്റിൽ ഉള്ളതും വർഷങ്ങളായി അപ്‌ഡേറ്റ് ചെയ്യാത്തതുമായ മറ്റ് പല ലേഖനങ്ങളും കാലഹരണപ്പെട്ടതാണ്.

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

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

    OSI മോഡലിൻ്റെ ആപ്ലിക്കേഷൻ ലെയർ, സെഷൻ ലെയർ അല്ലെങ്കിൽ ട്രാൻസ്പോർട്ട് ലെയർ എന്നിവയിലെ പ്രോട്ടോക്കോളുകളുടെയോ സേവനങ്ങളുടെയോ ഭാഗമാകാം കണക്ഷൻ സെഷനുകൾ.

    സെഷൻ വിവരങ്ങൾ സംഭരിക്കുന്നതിന് റൂട്ടർ ഒരു സെഷൻ ടേബിൾ ഉപയോഗിക്കുന്നു. സെഷൻ കൗണ്ടിംഗ് പോലുള്ള ഫംഗ്‌ഷനുകൾക്കായി പട്ടിക കുറച്ച് മെമ്മറിയും സിപിയു ഉറവിടങ്ങളും എടുക്കുന്നു. പട്ടികയിലെ സെഷൻ വലുപ്പം നിശ്ചയിച്ചിരിക്കുന്നു; അത് കവിഞ്ഞൊഴുകുകയാണെങ്കിൽ, ഔട്ട്‌പുട്ട് ഡാറ്റ സ്ട്രീം ഉണ്ടെങ്കിലും റൂട്ടറിന് വിവരങ്ങൾ കൈമാറാൻ കഴിയില്ല.

    ഇനിപ്പറയുന്ന ഉദാഹരണങ്ങൾ ഉപയോഗിച്ച് സെഷൻ്റെ ഉദ്ദേശ്യം വിശദീകരിക്കാൻ ശ്രമിക്കാം.

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

    2. നമ്മൾ BT വഴി ഡൗൺലോഡ് ചെയ്യുമ്പോൾ, അതിന് ധാരാളം സെഷനുകൾ ആവശ്യമാണ്. പ്രാരംഭ സമയത്ത്, ഏകദേശം 2000 സെഷനുകൾ ആവശ്യമാണ്, എന്നാൽ സ്ഥിരമായ ലോഡിംഗിനൊപ്പം അവയുടെ എണ്ണം കുറയും. ചുവടെയുള്ള സെഷൻ ലിസ്റ്റ് BT വഴിയുള്ള ഇൻകമിംഗ്, ഔട്ട്‌ഗോയിംഗ് ഡൗൺലോഡ് വേഗതയിൽ നിലവിലുള്ള സെഷനുകളുടെ എണ്ണം കാണിക്കുന്നു.

    മറ്റ് P2P സോഫ്റ്റ്‌വെയർ ഉപയോഗിക്കുമ്പോഴും ഇത് സംഭവിക്കുന്നു, കാരണം അവ സമാനമായ രീതിയിൽ പ്രവർത്തിക്കുന്നു.

    വേഗതയും സെഷനുകളുടെ എണ്ണവും തമ്മിൽ വ്യക്തമായ ബന്ധമില്ലെന്ന കാര്യം ശ്രദ്ധിക്കുക. നിങ്ങൾക്ക് ധാരാളം സെഷനുകൾ ഉണ്ടെങ്കിൽ, വേഗത എല്ലായ്‌പ്പോഴും ഉയർന്നതായിരിക്കില്ല, അതുപോലെ തന്നെ ഉയർന്ന വേഗത എന്നത് ഒരു വലിയ സെഷനുകൾ ഉള്ളതായി അർത്ഥമാക്കുന്നില്ല. പക്ഷേ, അടിസ്ഥാനപരമായി, നിരവധി സെഷനുകൾ ഉള്ളപ്പോൾ, വേഗത കൂടുതലാണ്.

    എന്തുകൊണ്ടാണ് സെഷൻ പരിധി നിശ്ചയിക്കുന്നത്?

    1) സെഷനുകളുടെ എണ്ണത്തിൽ P2P സോഫ്‌റ്റ്‌വെയർ പരിമിതമായതിനാൽ ഇത് നെറ്റ്‌വർക്ക് സ്ലോഡൗൺ ഒഴിവാക്കുന്നു.

    2) ഒരു വലിയ സംഖ്യ സെഷനുകൾ ആവശ്യമുള്ള ഏതെങ്കിലും വൈറസ് അല്ലെങ്കിൽ മറ്റ് തരത്തിലുള്ള നെറ്റ്‌വർക്ക് ആക്രമണങ്ങൾ വഴി നെറ്റ്‌വർക്ക് ഉറവിടങ്ങൾ ആഗിരണം ചെയ്യുന്നത് ഒഴിവാക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നു.

    ഒരു റൂട്ടറിൽ സെഷൻ നിയന്ത്രണങ്ങൾ എങ്ങനെ സജ്ജീകരിക്കാംടി.പി- ലിങ്ക് ?

    ഘട്ടം 1

    നിങ്ങളുടെ ബ്രൗസർ തുറന്ന് വിലാസ ബാറിൽ റൂട്ടറിൻ്റെ നെറ്റ്‌വർക്ക് ഐപി വിലാസം നൽകുക; സ്ഥിരസ്ഥിതി 192.168.1.1 ആണ്, തുടർന്ന് എൻ്റർ അമർത്തുക.

    ഘട്ടം 2

    വെബ് ഇൻ്റർഫേസിലേക്ക് പ്രവേശിക്കുന്നതിന് നിങ്ങളുടെ ഉപയോക്തൃനാമവും പാസ്‌വേഡും നൽകുക; സ്ഥിരസ്ഥിതിയായി, പ്രവേശനവും പാസ്‌വേഡും അഡ്മിൻ ആണ്.

    ഘട്ടം 3

    പേജിൻ്റെ ഇടതുവശത്തുള്ള സെഷൻ പരിധി -> സെഷൻ പരിധി ക്ലിക്കുചെയ്യുക, സെഷൻ പരിധി ഫീച്ചർ പ്രവർത്തനക്ഷമമാക്കുക, തുടർന്ന് ക്രമീകരണങ്ങൾ സംരക്ഷിക്കുന്നതിന് സംരക്ഷിക്കുക ബട്ടൺ ക്ലിക്കുചെയ്യുക.

    ഘട്ടം 4

    സെഷൻ നിയന്ത്രണ നിയമം കോൺഫിഗർ ചെയ്യുന്നതിന് പുതിയത് ചേർക്കുക ക്ലിക്കുചെയ്യുക, നിങ്ങൾക്ക് നിയന്ത്രണം സജ്ജമാക്കാൻ ആഗ്രഹിക്കുന്ന കമ്പ്യൂട്ടറിൻ്റെ നെറ്റ്‌വർക്ക് IP വിലാസം നൽകുക, കൂടാതെ പരമാവധി എണ്ണം സെഷനുകൾ (മാക്സ് സെഷൻ) സജ്ജമാക്കുക.

    കുറിപ്പ്

    നിങ്ങൾ നെറ്റ്‌വർക്ക് വിലാസങ്ങളുടെ ഒരു നിര നൽകിയാലും, ഒരു നിർദ്ദിഷ്‌ട കമ്പ്യൂട്ടറിനുള്ള വ്യക്തിഗത പരിധിയാണ് മാക്‌സ് സെഷൻ.