PHP-ൽ ഡാറ്റ അയക്കുന്നതിനുള്ള ഫോം (POST, GET). HTML ഫോമുകൾ. ഒരു ഫോം ഉപയോഗിച്ച് സെർവറിലേക്ക് ഡാറ്റ അയയ്ക്കുന്നതിനുള്ള രീതികൾ

PHP-യിലെ GET, POST രീതികളുടെ ഉപയോഗം അമിതമായി വിലയിരുത്താൻ പ്രയാസമാണ്, കാരണം ഈ രീതികൾ മിക്കവാറും എല്ലാ വെബ്‌സൈറ്റുകളിലും കാണപ്പെടുന്നു. ചുവടെ വിവരിച്ചിരിക്കുന്ന മെറ്റീരിയൽ പഠിക്കുന്നതിന് മുമ്പ്, html ടാഗ് ഉപയോഗിച്ച് സ്വയം പരിചയപ്പെടാൻ ഞാൻ നിങ്ങളെ ഉപദേശിക്കുന്നു

. ഈ രീതികളിൽ ഓരോന്നും വിശദമായി നോക്കാം.

GET രീതി

ഡാറ്റ കൈമാറാൻ GET രീതി ഒരു URL സ്ട്രിംഗ് ഉപയോഗിക്കുന്നു. ദീർഘവും അവ്യക്തവുമായ URL-കൾ നിങ്ങൾ ശ്രദ്ധിച്ചിരിക്കാം. ഉദാഹരണത്തിന്: function.php?login=Alex&email=dezyakin. ഈ സാഹചര്യത്തിൽ, ഡാറ്റ function.php-ൽ പ്രോസസ്സ് ചെയ്യുന്നു. "?" എന്ന ചോദ്യചിഹ്നത്തിന് ശേഷം, പാസാക്കിയ പാരാമീറ്ററുകളുടെ ഒരു ലിസ്റ്റ് ഉണ്ട് (പാരാമീറ്ററുകൾ "&" കൊണ്ട് വേർതിരിച്ചിരിക്കുന്നു) മൂല്യങ്ങൾ: ലോഗിൻ പാരാമീറ്ററിന് അലക്സ് എന്ന മൂല്യവും ഇമെയിൽ വേരിയബിളിന് dezyakin മൂല്യവും നൽകിയിരിക്കുന്നു. $_GET എന്ന സൂപ്പർഗ്ലോബൽ അറേയിൽ ഡാറ്റ സംഭരിക്കും. GET രീതി ഉപയോഗിക്കുന്നതിനുള്ള ഒരു ഉദാഹരണം ചുവടെ അവതരിപ്പിച്ചിരിക്കുന്നു:

ലോഗിൻ: ഇമെയിൽ: സൂപ്പർഗ്ലോബൽ അറേ $_GET ഉപയോഗിച്ച്, ഞങ്ങൾ അംഗീകരിച്ച മൂല്യങ്ങൾ പ്രദർശിപ്പിക്കുന്നു:*/ പ്രതിധ്വനി "
ലോഗിൻ = ". $_GET["ലോഗിൻ"] ; എക്കോ "
ഇമെയിൽ = ". $_GET["email"] ; ?>

$_GET സൂപ്പർഗ്ലോബൽ അറേയിൽ നിന്നുള്ള മൂല്യങ്ങൾ ഞങ്ങൾ എങ്ങനെ വായിക്കുന്നുവെന്ന് ശ്രദ്ധിക്കുക: $_GET["variable_name"]. ഞങ്ങളുടെ ഉദാഹരണത്തിൽ, വേരിയബിൾ പേരുകൾ ഫോമിൽ പ്രഖ്യാപിച്ചു (പേര്=ലോഗിൻ, പേര്=ഇമെയിൽ).

ഉപദേശം:
സ്വീകരിച്ച മൂല്യങ്ങൾ പ്രോസസ്സ് ചെയ്യുന്നതിനുമുമ്പ്, ഫംഗ്ഷനുകളിലൂടെ അവയുടെ അസ്തിത്വം പരിശോധിക്കാൻ ഞാൻ നിങ്ങളെ ഉപദേശിക്കുന്നു isset(variable_name)അഥവാ ശൂന്യമായ (variable_name)- ഈ ഫംഗ്‌ഷനുകൾ മുമ്പത്തെ പാഠം 2-ൽ ചർച്ച ചെയ്തിട്ടുണ്ട്: PHP-യിലെ വേരിയബിളുകൾ. ഉദാഹരണത്തിന്:

isset ഉപയോഗിച്ച് അസ്തിത്വം പരിശോധിക്കുന്നു:ഇസെറ്റ് ചെയ്താൽ ($_GET["ലോഗിൻ"] ) ( ലോഗിൻ പ്രോസസ്സ് ചെയ്യുന്നതിനുള്ള ഓപ്പറേറ്റർമാർ ... } //അല്ലെങ്കിൽ ശൂന്യം ഉപയോഗിച്ച് അസ്തിത്വം പരിശോധിക്കുക:ശൂന്യമാണെങ്കിൽ ($_GET["ഇമെയിൽ"] ) ( ഇമെയിൽ പ്രോസസ്സിംഗിനുള്ള ഓപ്പറേറ്റർമാർ ... } ?>

ഫോമിൽ, ട്രാൻസ്ഫർ ചെയ്ത മൂല്യങ്ങൾ പ്രോസസ്സ് ചെയ്യുന്ന ഫയലിൻ്റെ പേര് നിങ്ങൾക്ക് വ്യക്തമാക്കാൻ കഴിയും. ഈ ഫയലിൻ്റെ വിലാസം നൽകാവുന്ന ഫോമിൻ്റെ പ്രവർത്തന ആട്രിബ്യൂട്ട് ഉപയോഗിച്ചാണ് ഇത് ചെയ്യുന്നത്. സ്ഥിരസ്ഥിതിയായി, ഈ ഫയൽ നിലവിലെ ഫയലിലേക്ക് അസൈൻ ചെയ്‌തിരിക്കുന്നു (അതായത്, ഫോം സ്ഥിതിചെയ്യുന്ന ഫയലിൽ ഇത് പ്രോസസ്സ് ചെയ്യുന്നു). ഒരു ഫോമിൽ നിന്നുള്ള ഡാറ്റ പ്രോസസ്സിംഗിനായി srcipt.php ഫയലിലേക്ക് മാറ്റുന്നതിനുള്ള ഒരു ഉദാഹരണം ഇതാ:

ലോഗിൻ: ഇമെയിൽ:

script.php ഫയലിൽ ഏതെങ്കിലും തരത്തിലുള്ള വിവര ഹാൻഡ്‌ലർ ഉണ്ടായിരിക്കണം, അല്ലാത്തപക്ഷം വിവരങ്ങൾ ശൂന്യമായി കൈമാറും.

GET രീതിക്ക് നിരവധി ദോഷങ്ങളുണ്ട്:

  • പാസാക്കിയ പാരാമീറ്ററുകളുടെ മൂല്യങ്ങൾ ഉപയോക്താവ് കാണുന്നു;
  • പാസ്സായ പാരാമീറ്ററുകൾ ഉപയോക്താവിന് എളുപ്പത്തിൽ കെട്ടിച്ചമയ്ക്കാൻ കഴിയും;
  • ബൈനറി വിവരങ്ങളുടെ അസൗകര്യ സംപ്രേക്ഷണം (നിങ്ങൾ അത് ടെക്സ്റ്റ് ഫോർമാറ്റിലേക്ക് എൻകോഡ് ചെയ്യണം);
  • ട്രാൻസ്ഫർ ചെയ്ത ഡാറ്റയുടെ അളവ് പരിമിതമാണ് - 8 കെബി;

മേൽപ്പറഞ്ഞ പോരായ്മകൾ കാരണം, ചെറിയ അളവിലുള്ള ഡാറ്റ കൈമാറ്റം ചെയ്യേണ്ട സന്ദർഭങ്ങളിൽ മാത്രമാണ് GET രീതി ഉപയോഗിക്കുന്നത്, ഈ ഡാറ്റ ഒരു തരത്തിലും തരംതിരിച്ചിട്ടില്ല.

പോസ്റ്റ് രീതി

POST രീതി GET-ൽ നിന്ന് വ്യത്യസ്തമാണ്, ഡാറ്റ ഒരു സ്വകാര്യ രൂപത്തിൽ കൈമാറുന്നു. $_POST എന്ന സൂപ്പർഗ്ലോബൽ അറേ ഉണ്ട്, അതിൽ നിന്ന് ഡാറ്റ ഇതുപോലെ വായിക്കാം: $_POST["variable_name"]. ഉദാഹരണത്തിന്:

ലോഗിൻ: "> ഇമെയിൽ: ">
സൂപ്പർഗ്ലോബൽ അറേ $_POST ഉപയോഗിച്ച്, ഞങ്ങൾ അംഗീകരിച്ച മൂല്യങ്ങൾ പ്രദർശിപ്പിക്കുന്നു:*/ പ്രതിധ്വനി "
ലോഗിൻ = ". $_POST["ലോഗിൻ"] ; എക്കോ "
ഇമെയിൽ = ". $_POST["ഇമെയിൽ"] ; ?>

മുകളിലുള്ള കോഡ് നടപ്പിലാക്കുന്നതിൻ്റെ ഫലം ചുവടെയുള്ള ചിത്രത്തിൽ കാണിച്ചിരിക്കുന്നു:

നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, URL-ന് പോസ്റ്റ്‌സ്‌ക്രിപ്റ്റ് ഇല്ല, എന്നിരുന്നാലും ഡാറ്റ സ്വീകരിക്കുകയും പ്രദർശിപ്പിക്കുകയും ചെയ്തു.

കുറിപ്പ്:
1) POST രീതി ഉപയോഗിച്ച് കൈമാറ്റം ചെയ്യപ്പെടുന്ന മൂല്യങ്ങളുടെ അളവ് സ്ഥിരസ്ഥിതിയായി പരിമിതപ്പെടുത്തിയിരിക്കുന്നു, ഇത് 8 MB ന് തുല്യമാണ്. ഈ മൂല്യം വർദ്ധിപ്പിക്കുന്നതിന് നിങ്ങൾ php.ini-ലെ post_max_size നിർദ്ദേശം മാറ്റേണ്ടതുണ്ട്.

2) PHP-യുടെ മുൻ പതിപ്പുകളിൽ, $_GET, $_POST എന്നീ ഹ്രസ്വ സൂപ്പർഗ്ലോബൽ അറേ പേരുകൾക്ക് പകരം ദൈർഘ്യമേറിയ പേരുകൾ ഉപയോഗിച്ചു: $HTTP_GET_VARS, $HTTP_POST_VARS . സ്ഥിരസ്ഥിതിയായി അവ PHP 5-ൽ അപ്രാപ്തമാക്കിയിരിക്കുന്നു, എന്നാൽ രജിസ്റ്റർ_long_arrays പാരാമീറ്റർ ഉപയോഗിച്ച് നിങ്ങൾക്ക് php.ini കോൺഫിഗറേഷൻ ഫയലിൽ അവ പ്രവർത്തനക്ഷമമാക്കാം. php 6 പതിപ്പിൽ ഈ നീണ്ട പേരുകൾ ലഭ്യമല്ല.

3) $_POST-ൽ നിന്നുള്ള വേരിയബിളുകൾ പ്രോസസ്സ് ചെയ്യുന്നതിന് മുമ്പ്, GET രീതി ഉപയോഗിച്ച് ചെയ്തതുപോലെ, അവയുടെ സാന്നിധ്യത്തിനായി വേരിയബിളുകൾ പരിശോധിക്കാൻ ഞാൻ നിങ്ങളെ ഉപദേശിക്കുന്നു.

HTML ഫോമുകൾ. $_POST, $_GET അറേകൾ

HTML ഫോമുകൾ. സെർവറിലേക്ക് ഡാറ്റ അയയ്ക്കുന്നതിനുള്ള രീതികൾ

നിങ്ങൾ ഇതിനകം HTML ഫോമുകൾ നേരിട്ടിട്ടുണ്ടാകാം:

നിങ്ങളുടെ പേര് നൽകുക:

ഈ കോഡ് ഒരു HTML ഫയലിൽ സംരക്ഷിച്ച് നിങ്ങളുടെ പ്രിയപ്പെട്ട ബ്രൗസർ ഉപയോഗിച്ച് കാണുന്നതിലൂടെ, നിങ്ങൾക്ക് പരിചിതമായ ഒരു HTML ഫോം കാണാം:

നിങ്ങളുടെ പേര് നൽകുക:

ടാഗ് ചെയ്യുക

, ജോടിയാക്കിയ എൻഡ് ടാഗ് ഉണ്ട്
, യഥാർത്ഥത്തിൽ ഫോം സജ്ജമാക്കുന്നു. അതിൻ്റെ ആട്രിബ്യൂട്ടുകൾ രണ്ടും ഓപ്ഷണൽ ആണ്:

  • പ്രവർത്തനം - ഫോം അയയ്‌ക്കുന്ന URL (പൂർണ്ണമോ ആപേക്ഷികമോ) വ്യക്തമാക്കുന്നു. ഈ ആട്രിബ്യൂട്ട് വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, മിക്ക ബ്രൗസറുകളും (കൂടുതൽ കൃത്യമായി പറഞ്ഞാൽ, എനിക്ക് അറിയാവുന്ന എല്ലാ ബ്രൗസറുകളും) നിലവിലെ ഡോക്യുമെൻ്റിലേക്ക് ഫോം അയയ്‌ക്കുന്നു, അതായത് "തനിക്ക് തന്നെ." ഇതൊരു സൗകര്യപ്രദമായ ചുരുക്കെഴുത്താണ്, എന്നാൽ HTML സ്റ്റാൻഡേർഡ് അനുസരിച്ച്, പ്രവർത്തന ആട്രിബ്യൂട്ട് ആവശ്യമാണ്.
  • രീതി - ഫോം സമർപ്പിക്കുന്ന രീതി. അവയിൽ രണ്ടെണ്ണം ഉണ്ട്.
    • നേടുക - വിലാസ ബാറിൽ ഫോം ഡാറ്റ അയയ്ക്കുന്നു.
      വിവിധ വെബ്‌സൈറ്റുകളിൽ URL-ൻ്റെ അവസാനം ഒരു "?" സാന്നിദ്ധ്യം നിങ്ങൾ ശ്രദ്ധിച്ചിരിക്കാം. പരാമീറ്റർ=മൂല്യം എന്ന ഫോർമാറ്റിൽ ഇനിപ്പറയുന്ന ഡാറ്റയും. ഇവിടെ "പാരാമീറ്റർ" ഫോം ഘടകങ്ങളുടെ നെയിം ആട്രിബ്യൂട്ടിൻ്റെ മൂല്യവുമായി പൊരുത്തപ്പെടുന്നു (ടാഗിനെക്കുറിച്ച് ചുവടെ കാണുക ), കൂടാതെ "മൂല്യം" എന്നത് മൂല്യ ആട്രിബ്യൂട്ടിൻ്റെ ഉള്ളടക്കമാണ് (ഉദാഹരണത്തിന്, അതേ ടാഗിൻ്റെ ടെക്സ്റ്റ് ഫീൽഡിൽ ഉപയോക്താവിൻ്റെ ഇൻപുട്ട് ഇതിൽ അടങ്ങിയിരിക്കുന്നു ).
      ഉദാഹരണത്തിന്, Yandex-ൽ എന്തെങ്കിലും തിരയാൻ ശ്രമിക്കുക, ബ്രൗസറിൻ്റെ വിലാസ ബാറിൽ ശ്രദ്ധിക്കുക. ഇതാണ് GET രീതി.
    • പോസ്റ്റ് - ഫോം ഡാറ്റ അഭ്യർത്ഥനയുടെ ബോഡിയിൽ അയച്ചു. ഇത് എന്താണെന്ന് പൂർണ്ണമായും വ്യക്തമല്ലെങ്കിൽ (അല്ലെങ്കിൽ പൂർണ്ണമായും വ്യക്തമല്ല), വിഷമിക്കേണ്ട, ഞങ്ങൾ ഉടൻ തന്നെ ഈ പ്രശ്നത്തിലേക്ക് മടങ്ങും.
    രീതി ആട്രിബ്യൂട്ട് വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, GET അനുമാനിക്കപ്പെടുന്നു.

ടാഗ് ചെയ്യുക - തരം ആട്രിബ്യൂട്ട് നിർവചിച്ചിരിക്കുന്ന ഒരു ഫോം ഘടകം വ്യക്തമാക്കുന്നു:

  • "ടെക്സ്റ്റ്" എന്ന മൂല്യം ഒരു ഒറ്റ-വരി ടെക്സ്റ്റ് ഇൻപുട്ട് ഫീൽഡ് വ്യക്തമാക്കുന്നു
  • "സമർപ്പിക്കുക" മൂല്യം ഒരു ബട്ടൺ വ്യക്തമാക്കുന്നു, അത് ക്ലിക്ക് ചെയ്യുമ്പോൾ, സെർവറിലേക്ക് ഫോം അയയ്ക്കുന്നു

മറ്റ് മൂല്യങ്ങൾ സാധ്യമാണ് (കൂടാതെ - ഒരു ഫോം ഘടകം വ്യക്തമാക്കുന്ന ഒരേയൊരു ടാഗ് അല്ല).

അപ്പോൾ നമ്മൾ "ശരി" ക്ലിക്ക് ചെയ്യുമ്പോൾ എന്ത് സംഭവിക്കും?

  1. ബ്രൗസർ ഫോമിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന ഘടകങ്ങൾ നോക്കുകയും അവയുടെ പേരും മൂല്യ ആട്രിബ്യൂട്ടുകളിൽ നിന്നും ഫോം ഡാറ്റ നിർമ്മിക്കുകയും ചെയ്യുന്നു. വാസ്യ എന്ന പേര് നൽകിയെന്ന് പറയാം. ഈ സാഹചര്യത്തിൽ, ഫോം ഡാറ്റ name=Vasya&okbutton=OK ആണ്
  2. ബ്രൗസർ സെർവറുമായി ഒരു കണക്ഷൻ സ്ഥാപിക്കുന്നു, ടാഗിൻ്റെ പ്രവർത്തന ആട്രിബ്യൂട്ടിൽ വ്യക്തമാക്കിയ പ്രമാണത്തിനായുള്ള അഭ്യർത്ഥന സെർവറിലേക്ക് അയയ്ക്കുന്നു.
    , രീതി ആട്രിബ്യൂട്ടിൽ വ്യക്തമാക്കിയ ഡാറ്റ അയയ്ക്കൽ രീതി ഉപയോഗിച്ച് (ഈ സാഹചര്യത്തിൽ - GET), അഭ്യർത്ഥനയിൽ ഫോം ഡാറ്റ കൈമാറുന്നു.
  3. ലഭിച്ച അഭ്യർത്ഥന സെർവർ വിശകലനം ചെയ്യുകയും പ്രതികരണം സൃഷ്ടിക്കുകയും ബ്രൗസറിലേക്ക് അയയ്ക്കുകയും കണക്ഷൻ അടയ്ക്കുകയും ചെയ്യുന്നു
  4. സെർവറിൽ നിന്ന് ലഭിച്ച പ്രമാണം ബ്രൗസർ പ്രദർശിപ്പിക്കുന്നു

സമാന അഭ്യർത്ഥന സ്വമേധയാ അയയ്ക്കുന്നത് (ടെൽനെറ്റ് ഉപയോഗിച്ച്) ഇതുപോലെയാണ് (സൈറ്റിൻ്റെ ഡൊമെയ്ൻ നാമം www.example.com ആണെന്ന് കരുതുക):

ടെൽനെറ്റ് www.example.com 80 GET /cgi-bin/form_handler.cgi?name=Vasya&okbutton=OK HTTP/1.0\r\n ഹോസ്റ്റ്: www.example.com\r\n \r\n

നിങ്ങൾ ഇതിനകം ഊഹിച്ചതുപോലെ, "GET" സമർപ്പിക്കൽ രീതിയുള്ള ഒരു ഫോമിലെ സമർപ്പിക്കുക ബട്ടൺ ക്ലിക്കുചെയ്യുന്നത്, ബ്രൗസറിൻ്റെ വിലാസ ബാറിൽ അനുബന്ധ URL (ഒരു ചോദ്യചിഹ്നവും ഫോം ഡാറ്റയും ഉള്ളത്) ടൈപ്പുചെയ്യുന്നതിന് തുല്യമാണ്:

Http://www.example.com/cgi-bin/form_handler.cgi?name=Vasya&okbutton=OK

വാസ്തവത്തിൽ, നിങ്ങൾ സെർവറിൽ നിന്ന് ഒരു ഡോക്യുമെൻ്റ് അഭ്യർത്ഥിക്കുമ്പോഴെല്ലാം അതിൻ്റെ URL നൽകി അല്ലെങ്കിൽ ഒരു ലിങ്കിൽ ക്ലിക്കുചെയ്ത് GET രീതി ഉപയോഗിക്കുന്നു. ഉപയോഗിക്കുന്നത് , URL ഒരു ചോദ്യചിഹ്നവും ഫോം ഡാറ്റയും ഉപയോഗിച്ച് ലളിതമായി ചേർത്തിരിക്കുന്നു.

ഒരുപക്ഷേ ഈ സാങ്കേതിക വിശദാംശങ്ങളും ടെൽനെറ്റുമായുള്ള വ്യായാമങ്ങളും നിങ്ങൾക്ക് അവിശ്വസനീയമാംവിധം ബോറടിപ്പിക്കുന്നതും അനാവശ്യവുമാണെന്ന് തോന്നുന്നു (“പിഎച്ച്പിക്ക് ഇതുമായി എന്ത് ബന്ധമുണ്ട്?”). പക്ഷേ വെറുതെയായി. :) എച്ച്ടിടിപി പ്രോട്ടോക്കോളുമായി പ്രവർത്തിക്കുന്നതിൻ്റെ അടിസ്ഥാനകാര്യങ്ങൾ ഇവയാണ്, ഓരോ വെബ് പ്രോഗ്രാമറും ഹൃദ്യമായി അറിയേണ്ടതുണ്ട്, ഇത് സൈദ്ധാന്തിക അറിവല്ല - ഇതെല്ലാം പ്രായോഗികമായി ഉപയോഗപ്രദമാകും.

ഇനി നമുക്ക് നമ്മുടെ ഫോമിൻ്റെ ആദ്യ വരി ഇനിപ്പറയുന്നവ ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കാം:

ഞങ്ങൾ അയയ്ക്കൽ രീതി "POST" എന്ന് വ്യക്തമാക്കി. ഈ സാഹചര്യത്തിൽ, ഡാറ്റ അല്പം വ്യത്യസ്തമായ രീതിയിൽ സെർവറിലേക്ക് അയയ്ക്കുന്നു:

ടെൽനെറ്റ് www.example.com 80 POST /cgi-bin/form_handler.cgi HTTP/1.0\r\n ഹോസ്റ്റ്: www.example.com\r\n ഉള്ളടക്ക-തരം: application/x-www-form-urlencoded\r\ n ഉള്ളടക്ക-ദൈർഘ്യം: 41263\r\n \r\n പേര്=വസ്യ&ഒക്ബട്ടൺ=ശരി

POST രീതി ഉപയോഗിക്കുമ്പോൾ, അഭ്യർത്ഥനയുടെ ബോഡിയിൽ "രണ്ട് എൻ്ററുകൾക്ക്" ശേഷം ഫോം ഡാറ്റ അയയ്ക്കുന്നു. മുകളിലുള്ളതെല്ലാം യഥാർത്ഥത്തിൽ അഭ്യർത്ഥന തലക്കെട്ടാണ് (ഞങ്ങൾ GET രീതി ഉപയോഗിച്ചപ്പോൾ, ഫോം ഡാറ്റ ഹെഡറിൽ അയച്ചു). അഭ്യർത്ഥന ബോഡി വായിക്കുന്നത് ഏത് ബൈറ്റിൽ നിർത്തണമെന്ന് സെർവറിന് അറിയാൻ, തലക്കെട്ടിൽ ഉള്ളടക്ക-ദൈർഘ്യം എന്ന വരി അടങ്ങിയിരിക്കുന്നു; ഫോം ഡാറ്റ പരാമീറ്റർ1=മൂല്യം അഭ്യർത്ഥന - ഉള്ളടക്ക തലക്കെട്ട് സെർവറിനെ അറിയിക്കുന്നു -തരം: application/x-www-form-urlencoded .

ഫോം ഡാറ്റാ ലൈനിൻ്റെ ദൈർഘ്യത്തിന് പരിധിയില്ല എന്നതാണ് POST രീതിയുടെ പ്രയോജനം.

POST രീതി ഉപയോഗിക്കുമ്പോൾ, GET ൻ്റെ കാര്യത്തിലെന്നപോലെ "ഒരു ലിങ്ക് പിന്തുടർന്ന്" ഫോം സമർപ്പിക്കാൻ സാധ്യമല്ല.

ഒരു POST ഫോം ഉപയോഗിക്കുമ്പോൾ, അതിൻ്റെ പ്രവർത്തന ആട്രിബ്യൂട്ടിൽ നിങ്ങൾക്ക് ചോദ്യചിഹ്നത്തിന് ശേഷം GET ഫോമിൻ്റെ പാരാമീറ്ററുകൾ വ്യക്തമാക്കാൻ കഴിയും. അങ്ങനെ, POST രീതിയിൽ GET രീതി ഉൾപ്പെടുന്നു.

$_GET, $_POST അറേകൾ

അതിനാൽ, ഒരു വെബ് സെർവറും ബ്രൗസറും തമ്മിലുള്ള ഡാറ്റ കൈമാറ്റം ചെയ്യുന്നതിനുള്ള പ്രധാന മാർഗമാണ് ഫോമുകൾ, അതായത്, അവ ഉപയോക്തൃ ഇടപെടൽ നൽകുന്നു - വാസ്തവത്തിൽ, വെബ് പ്രോഗ്രാമിംഗ് എന്തിനുവേണ്ടിയാണ്.

നമുക്ക് ഒരു ലളിതമായ ഉദാഹരണം നോക്കാം:



എങ്കിൽ ($_SERVER [ "REQUEST_METHOD" ] == "POST" ) (
പ്രതിധ്വനി "

ഹലോ, " . $_POST [ "പേര്" ] . "

!" ;
}
?>
">
നിങ്ങളുടെ പേര് നൽകുക:






8-12 വരികളിൽ കാണിച്ചിരിക്കുന്ന ഫോമിൽ രണ്ട് ഘടകങ്ങൾ അടങ്ങിയിരിക്കുന്നു: പേര്, ഒക്ബട്ടൺ. മെത്തേഡ് ആട്രിബ്യൂട്ട് POST ഫോം സമർപ്പിക്കൽ രീതി വ്യക്തമാക്കുന്നു, അതേസമയം ആക്ഷൻ ആട്രിബ്യൂട്ട് ഫോം അയച്ച URL വ്യക്തമാക്കുന്നു, കൂടാതെ PHP_SELF സെർവർ വേരിയബിളിൻ്റെ മൂല്യം കൊണ്ട് നിറഞ്ഞിരിക്കുന്നു - നിലവിൽ പ്രവർത്തിക്കുന്ന സ്ക്രിപ്റ്റിൻ്റെ വിലാസം.

- വേണ്ടി ചുരുക്കിയ ഫോം .

നമ്മൾ നെയിം ഫീൽഡിൽ Vasya എന്ന മൂല്യം നൽകി OK ബട്ടണിൽ ക്ലിക്ക് ചെയ്തു എന്ന് കരുതുക. ഈ സാഹചര്യത്തിൽ, ബ്രൗസർ സെർവറിലേക്ക് ഒരു POST അഭ്യർത്ഥന അയയ്ക്കുന്നു. അഭ്യർത്ഥന ബോഡി: പേര്=വസ്യ&ഓക്ബട്ടൺ=ശരി . PHP സ്വപ്രേരിതമായി $_POST അറേ പോപ്പുലേറ്റ് ചെയ്യുന്നു:

$_POST ["പേര്" ] = "വസ്യ"
$_POST ["okbutton" ] = "ശരി"

യഥാർത്ഥത്തിൽ, "Vasya" എന്ന മൂല്യം urlencode രൂപത്തിൽ ബ്രൗസർ അയയ്ക്കുന്നു; windows-1251 എൻകോഡിങ്ങിനായി ഈ മൂല്യം %C2%E0%F1%FF പോലെ കാണപ്പെടുന്നു. എന്നാൽ ആവശ്യമായ ഡീകോഡിംഗ് PHP സ്വയമേവ കൈകാര്യം ചെയ്യുന്നതിനാൽ, ഈ സവിശേഷതയെക്കുറിച്ച് നമുക്ക് "മറക്കാനാകും" - HTTP അഭ്യർത്ഥനകൾ സ്വമേധയാ കൈകാര്യം ചെയ്യേണ്ടത് വരെ.

അഭ്യർത്ഥനയുടെ ബോഡി നാമങ്ങളും മൂല്യങ്ങളും മാത്രം വ്യക്തമാക്കുന്നു, പക്ഷേ ഫോം എലമെൻ്റ് തരങ്ങൾ അല്ല, $_POST["name"] ഒരു ഇൻപുട്ട് സ്ട്രിംഗുമായോ ഒരു ബട്ടണുമായോ ലിസ്റ്റ് ബോക്സുമായോ പൊരുത്തപ്പെടുമോ എന്ന് PHP-ക്ക് അറിയില്ല. എന്നാൽ പൊതുവേ, ഞങ്ങൾക്ക് ഈ വിവരങ്ങൾ ആവശ്യമില്ല. :)

സമർപ്പിക്കുക ബട്ടൺ എന്താണ് പറയുന്നതെന്ന് ഞങ്ങൾക്ക് അറിയേണ്ട ആവശ്യമില്ലാത്തതിനാൽ, 11 വരിയിലെ നെയിം ആട്രിബ്യൂട്ട് നമുക്ക് നീക്കം ചെയ്യാം, ബട്ടൺ വിവരണം ചുരുക്കി . ഈ സാഹചര്യത്തിൽ, ബ്രൗസർ ഒരു POST അഭ്യർത്ഥന നാമം = Vasya അയയ്ക്കും.

ഇപ്പോൾ അതേ കാര്യം, എന്നാൽ GET ഫോമിന്:



എങ്കിൽ (ഇസെറ്റ്($_GET [ "പേര്" ])) (
പ്രതിധ്വനി "

ഹലോ, " . $_GET [ "പേര്" ] . "

!" ;
}
?>
">
നിങ്ങളുടെ പേര് നൽകുക:







വരി 8-ൽ ഒരാൾക്ക് എളുപ്പത്തിൽ എഴുതാൻ കഴിയും

: GET എന്നത് സ്ഥിരസ്ഥിതി രീതിയാണ്. ഈ സമയം ബ്രൗസർ ഒരു GET അഭ്യർത്ഥന അയയ്‌ക്കുന്നു, ഇത് വിലാസ ബാറിലെ വിലാസം നൽകുന്നതിന് തുല്യമാണ്: http://site-address/script-name.php?name=Vasya.

$_GET അറേ പോപ്പുലേറ്റഡ് എന്ന വ്യത്യാസത്തിൽ POST-ൽ ചെയ്യുന്നതുപോലെ തന്നെ GET ഫോമുകളിലും PHP ചെയ്യുന്നു.

പ്രധാന വ്യത്യാസം വരി 4 ലാണ്. ബ്രൗസർ ലൈനിൽ വിലാസം നൽകുന്നത് ഒരു GET അഭ്യർത്ഥന ആയതിനാൽ, ($_SERVER["REQUEST_METHOD"] == "GET") എന്നത് അർത്ഥശൂന്യമാണോ എന്ന് പരിശോധിക്കുക. അതിനാൽ, വേരിയബിൾ നിർവചിച്ചിട്ടുണ്ടെങ്കിൽ സത്യവും (അതായത്, അതിന് ഒരു മൂല്യം നൽകിയിട്ടുണ്ട്), വേരിയബിൾ നിർവചിച്ചിട്ടില്ലെങ്കിൽ തെറ്റും നൽകുന്ന isset() കൺസ്ട്രക്റ്റിലേക്ക് ഞങ്ങൾ അവലംബിക്കുന്നു. ഫോം പൂരിപ്പിച്ചിട്ടുണ്ടെങ്കിൽ - നിങ്ങൾ ഇതിനകം മനസ്സിലാക്കിയതുപോലെ, PHP യാന്ത്രികമായി $_GET["name"] ഉചിതമായ മൂല്യം നൽകുന്നു.

isset() ഉപയോഗിച്ചുള്ള സ്ഥിരീകരണ രീതി സാർവത്രികമാണ്; ഇത് ഒരു POST ഫോമിനും ഉപയോഗിക്കാം. മാത്രമല്ല, ഏത് ഫോം ഫീൽഡുകളാണ് പൂരിപ്പിച്ചതെന്ന് കണ്ടെത്താൻ ഇത് നിങ്ങളെ അനുവദിക്കുന്നതിനാൽ ഇത് അഭികാമ്യമാണ്.

കുറച്ചുകൂടി സങ്കീർണ്ണമായ ഉദാഹരണം.




echo "ദയവായി ഒരു പേര് നൽകുക!
" ;
< 1900 || $_POST [ "year" ] > 2004 ) {
പ്രതിധ്വനി
"
;
) വേറെ (

" ;

പ്രതിധ്വനി "നിങ്ങളോട്" . $പ്രായം. "വർഷങ്ങൾ
" ;
}
പ്രതിധ്വനി "


" ;
}
?>
">
നിങ്ങളുടെ പേര് നൽകുക:


നിങ്ങളുടെ ജനന വർഷം നൽകുക:







പുതിയ സാങ്കേതിക വിദ്യകളൊന്നും ഇവിടെ ഉപയോഗിക്കാറില്ല. അത് മനസിലാക്കുക, കോഡ് പ്രവർത്തിപ്പിക്കുക, പരിഷ്ക്കരിക്കാൻ ശ്രമിക്കുക...

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



$name = isset($_POST [ "name" ]) ? $_POST [ "പേര്" ] : "" ;
$year = isset($_POST [ "year" ]) ? $_POST [ "വർഷം" ] : "" ;

എങ്കിൽ ($_POST [ "പേര്" ], $_POST [ "വർഷം" ])) (
എങ്കിൽ ($_POST [ "പേര്" ] == "" ) (
echo "ദയവായി ഒരു പേര് നൽകുക!
" ;
) അല്ലെങ്കിൽ ($_POST [ "വർഷം" ]< 1900 || $_POST [ "year" ] > 2004 ) {
പ്രതിധ്വനി "ദയവായി ജനിച്ച വർഷം വ്യക്തമാക്കുക! മൂല്യങ്ങളുടെ സാധുതയുള്ള ശ്രേണി: 1900..2004
"
;
) വേറെ (
പ്രതിധ്വനി "ഹലോ," . $_POST [ "പേര്" ] . "!
" ;
$പ്രായം = 2004 - $_POST [ "വർഷം" ];
പ്രതിധ്വനി "നിങ്ങളോട്" . $പ്രായം. "വർഷങ്ങൾ
" ;
}
പ്രതിധ്വനി "


" ;
}
?>
">
നിങ്ങളുടെ പേര് നൽകുക:


നിങ്ങളുടെ ജനന വർഷം നൽകുക:







4-ഉം 5-ഉം വരികൾ ആശയക്കുഴപ്പമുണ്ടാക്കിയേക്കാം, എല്ലാം വളരെ ലളിതമാണ്: വരി 4 ഇങ്ങനെ എഴുതാം:

എങ്കിൽ (ഇസെറ്റ്($_POST [ "പേര്" ]))
$name = $_POST ["name" ];
വേറെ
$പേര് = "" ;

ചോദ്യം ഉയർന്നേക്കാം - എന്തുകൊണ്ട് 4-5 വരികൾ വലിച്ചെറിഞ്ഞ് എഴുതരുത്:

നിങ്ങളുടെ പേര് നൽകുക: ">

നിങ്ങളുടെ ജനന വർഷം നൽകുക: ">

ഈ POST വേരിയബിളുകൾ നിർവചിച്ചിട്ടില്ലെങ്കിൽ - ഫോം ഇതുവരെ പൂരിപ്പിച്ചിട്ടില്ലെങ്കിൽ ഇത് സംഭവിക്കും - അൺഇനീഷ്യലൈസ്ഡ് വേരിയബിളുകളുടെ ഉപയോഗത്തെക്കുറിച്ച് PHP മുന്നറിയിപ്പ് നൽകും (കൂടാതെ, ന്യായമായും: അത്തരമൊരു സന്ദേശം നിങ്ങളെ അനുവദിക്കുന്നു വേരിയബിൾ പേരുകളിൽ കണ്ടെത്താൻ പ്രയാസമുള്ള അക്ഷരത്തെറ്റുകൾ വേഗത്തിൽ കണ്ടെത്തുക, കൂടാതെ സൈറ്റിൽ സാധ്യമായ "ദ്വാരങ്ങൾ" സംബന്ധിച്ച് മുന്നറിയിപ്പ് നൽകുന്നു). നിങ്ങൾക്ക് തീർച്ചയായും, ഇസെറ്റ് കോഡ് നേരിട്ട് ഫോമിൽ ഇടാം, പക്ഷേ ഇത് വളരെ ബുദ്ധിമുട്ടായിരിക്കും.

മനസ്സിലായി? ഇപ്പോൾ നൽകിയിരിക്കുന്ന കോഡിലെ പിശക് കണ്ടെത്താൻ ശ്രമിക്കുക. ശരി, ഒരു തെറ്റ് അല്ല, ഒരു പോരായ്മ.

htmlspecialchars()

അത് കണ്ടെത്തിയില്ലേ? ഞാൻ ഒരു സൂചന തരാം. ഉദാഹരണത്തിന്, "പേര്" ഫീൽഡിൽ ഒരു ഇരട്ട ഉദ്ധരണിയും കുറച്ച് വാചകവും നൽകുക, ഉദാഹരണത്തിന്, "Va" ഫോം അയയ്‌ക്കുക, ഫലമായുണ്ടാകുന്ന പേജിൻ്റെ സോഴ്‌സ് കോഡ് നോക്കുക. നാലാമത്തെ വരിയിൽ ഇതുപോലൊന്ന് ഉണ്ടായിരിക്കും:

നിങ്ങളുടെ പേര് നൽകുക:

അതായത്, നല്ലതൊന്നും ഇല്ല. തന്ത്രശാലിയായ ഒരു ഉപയോക്താവ് JavaScript കോഡ് നൽകിയാലോ?

ഈ പ്രശ്നം പരിഹരിക്കാൻ, നിങ്ങൾ htmlspecialchars() ഫംഗ്ഷൻ ഉപയോഗിക്കേണ്ടതുണ്ട്, അത് പ്രത്യേക പ്രതീകങ്ങളെ അവയുടെ HTML പ്രാതിനിധ്യം ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കും (ഉദാഹരണത്തിന്, " എന്നതോടുകൂടിയ ഒരു ഉദ്ധരണി):



$name = isset($_POST [ "name" ]) ? htmlspecialchars ($_POST [ "name" ]) : "" ;
$year = isset($_POST [ "year" ]) ? htmlspecialchars ($_POST [ "വർഷം" ]) : "" ;

എങ്കിൽ ($_POST [ "പേര്" ], $_POST [ "വർഷം" ])) (
എങ്കിൽ ($_POST [ "പേര്" ] == "" ) (
echo "ദയവായി ഒരു പേര് നൽകുക!
" ;
) അല്ലെങ്കിൽ ($_POST [ "വർഷം" ]< 1900 || $_POST [ "year" ] > 2004 ) {
പ്രതിധ്വനി "ദയവായി ജനിച്ച വർഷം വ്യക്തമാക്കുക! മൂല്യങ്ങളുടെ സാധുതയുള്ള ശ്രേണി: 1900..2004
"
;
) വേറെ (
പ്രതിധ്വനി "ഹലോ," . $പേര് . "!
" ;
$പ്രായം = 2004 - $_POST [ "വർഷം" ];
പ്രതിധ്വനി "നിങ്ങളോട്" . $പ്രായം. "വർഷങ്ങൾ
" ;
}
പ്രതിധ്വനി "


" ;
}
?>
">
നിങ്ങളുടെ പേര് നൽകുക:


നിങ്ങളുടെ ജനന വർഷം നൽകുക:







പരീക്ഷണം ആവർത്തിച്ച് HTML കോഡ് ഇപ്പോൾ ശരിയാണെന്ന് ഉറപ്പാക്കുക.

ഓർക്കുക - HTML പ്രത്യേക പ്രതീകങ്ങൾ അടങ്ങിയിരിക്കാവുന്ന ഒരു വേരിയബിളിൻ്റെ ഉള്ളടക്കങ്ങൾ പ്രദർശിപ്പിക്കുമ്പോൾ htmlspecialchars() ഫംഗ്ഷൻ ഉപയോഗിക്കേണ്ടതാണ്.

phpinfo()

PHP-യിലെ ഏറ്റവും പ്രധാനപ്പെട്ട ഒന്നാണ് phpinfo() ഫംഗ്‌ഷൻ. ഇത് PHP ക്രമീകരണങ്ങൾ, വിവിധ കോൺഫിഗറേഷൻ വേരിയബിളുകളുടെ മൂല്യങ്ങൾ എന്നിവയെക്കുറിച്ചുള്ള വിവരങ്ങൾ പ്രദർശിപ്പിക്കുന്നു ...

എന്തുകൊണ്ടാണ് ഞാൻ ഫോമുകളെക്കുറിച്ചുള്ള ഒരു ലേഖനത്തിൽ ഇത് പരാമർശിക്കുന്നത്? phpinfo() ഒരു സൗകര്യപ്രദമായ ഡീബഗ്ഗിംഗ് ഉപകരണമാണ്. phpinfo(), മറ്റ് കാര്യങ്ങൾക്കൊപ്പം, എല്ലാ $_GET, $_POST, $_SERVER വേരിയബിളുകളുടെയും മൂല്യങ്ങൾ പ്രിൻ്റ് ചെയ്യുന്നു. ഒരു ഫോം വേരിയബിൾ നഷ്ടപ്പെട്ടാൽ, എന്താണ് തെറ്റ് എന്ന് കണ്ടെത്താനുള്ള എളുപ്പവഴി phpinfo() ഫംഗ്ഷൻ ഉപയോഗിക്കുക എന്നതാണ്. ഫംഗ്ഷൻ വേരിയബിളുകളുടെ മൂല്യങ്ങൾ മാത്രം പ്രദർശിപ്പിക്കുന്നുവെന്ന് ഉറപ്പാക്കാൻ (നിങ്ങൾ ഡസൻ കണക്കിന് പേജുകളിലൂടെ സ്ക്രോൾ ചെയ്യാതെ തന്നെ), അതിനെ ഇനിപ്പറയുന്ന രീതിയിൽ വിളിക്കണം: phpinfo(INFO_VARIABLES); , അല്ലെങ്കിൽ - ഇത് തികച്ചും സമാനമാണ് - phpinfo(32) ;.



">
നിങ്ങളുടെ പേര് നൽകുക:


phpinfo (32);
?>



അല്ലെങ്കിൽ, ഉദാഹരണത്തിന്, ഈ സാഹചര്യം: നിങ്ങൾ ഒരു സന്ദർശകൻ്റെ IP വിലാസം കണ്ടെത്താൻ ആഗ്രഹിക്കുന്നു. അനുബന്ധ വേരിയബിൾ $_SERVER അറേയിൽ സംഭരിച്ചിട്ടുണ്ടെന്ന് നിങ്ങൾ ഓർക്കുന്നു, പക്ഷേ - ഭാഗ്യം - വേരിയബിളിനെ കൃത്യമായി എന്താണ് വിളിക്കുന്നതെന്ന് നിങ്ങൾ മറന്നു. വീണ്ടും, വിളിക്കുക phpinfo(32); , ചിഹ്നത്തിൽ നിങ്ങളുടെ IP വിലാസം തിരയുകയും $_SERVER["REMOTE_ADDR"] എന്ന വരിയിൽ അത് കണ്ടെത്തുകയും ചെയ്യുക.

ലബോറട്ടറി വർക്ക് 1. HTTP പ്രോട്ടോക്കോൾ. രീതികൾ GET, POST. HTML ഫോമുകൾ.

സൈദ്ധാന്തിക ഭാഗം

HTTP അഭ്യർത്ഥന ജീവിതചക്രം

  1. ബ്രൗസർ കണക്ഷൻ തുറക്കുന്നുസെർവറിനൊപ്പം
  2. പേജ് സ്വീകരിക്കുന്നതിന് ബ്രൗസർ സെർവറിലേക്ക് ഒരു അഭ്യർത്ഥന അയയ്ക്കുന്നു
  3. സെർവർ ബ്രൗസറിലേക്ക് ഒരു പ്രതികരണം (മിക്കപ്പോഴും HTML കോഡ്) സൃഷ്ടിക്കുന്നു കണക്ഷൻ അടയ്ക്കുന്നു
  4. ബ്രൗസർ HTML കോഡ് പ്രോസസ്സ് ചെയ്യുകയും പേജ് പ്രദർശിപ്പിക്കുകയും ചെയ്യുന്നു

ഹൈലൈറ്റ് ചെയ്തവ ശ്രദ്ധിക്കുക ധീരമായ. നിങ്ങൾ അഭ്യർത്ഥിച്ച പേജ് സ്ക്രീനിൽ കാണുന്നതിന് മുമ്പുതന്നെ, സെർവറിലേക്കുള്ള കണക്ഷൻ അടച്ചു, അത് നിങ്ങളെ മറന്നു. നിങ്ങൾ മറ്റൊരു (അല്ലെങ്കിൽ അതേ) വിലാസം നൽകുമ്പോൾ, അല്ലെങ്കിൽ ഒരു ലിങ്കിൽ ക്ലിക്ക് ചെയ്യുക, അല്ലെങ്കിൽ ഒരു HTML ഫോം ബട്ടണിൽ ക്ലിക്ക് ചെയ്യുക, അതേ പാറ്റേൺ വീണ്ടും ആവർത്തിക്കും.

ഇത്തരത്തിലുള്ള ജോലിയെ വിളിക്കുന്നു "ക്ലയൻ്റ്-സെർവർ". ഈ കേസിൽ ക്ലയൻ്റ് ബ്രൗസറാണ്.

അതിനാൽ, വെബ് സെർവറിലേക്കുള്ള കണക്ഷൻ കുറച്ച് സെക്കൻഡുകൾ (അല്ലെങ്കിൽ സെക്കൻഡുകളുടെ ഭിന്നസംഖ്യകൾ) മാത്രമേ നിലനിൽക്കൂ - ഇത് ഒരു ലിങ്കിൽ (അല്ലെങ്കിൽ മറ്റ് തരത്തിലുള്ള അഭ്യർത്ഥനകൾ) ക്ലിക്ക് ചെയ്യുന്നതിനും പേജ് പ്രദർശിപ്പിക്കാൻ തുടങ്ങുന്നതിനും ഇടയിലുള്ള സമയമാണ്. മിക്ക ബ്രൗസറുകളും കണക്ഷൻ സമയത്ത് ഏതെങ്കിലും തരത്തിലുള്ള സൂചകങ്ങൾ പ്രദർശിപ്പിക്കുന്നു, ഉദാഹരണത്തിന്, MS Internet Explorer മുകളിൽ വലത് കോണിൽ ഒരു ആനിമേഷൻ പ്രദർശിപ്പിക്കുന്നു.

"ബ്ലാക്ക് ബോക്‌സ്" എന്ന എച്ച്ടിടിപിയുടെ ധാരണ എന്നെന്നേക്കുമായി ഇല്ലാതാക്കാൻ, നമുക്ക് ടെൽനെറ്റ് ഉപയോഗിച്ച് ഒരു ബ്രൗസറായി "നടിക്കാം":

  1. നമുക്ക് ലോഞ്ച് ചെയ്യാം ടെൽനെറ്റ് ya.ru 80
  2. ടെർമിനൽ വിൻഡോയിൽ ഇനിപ്പറയുന്നവ നൽകാം (ഇൻപുട്ട് പ്രദർശിപ്പിച്ചില്ലെങ്കിൽ, കുഴപ്പമില്ല):

നേടുക / HTTP/1.0[ഇവിടെ എൻ്റർ അമർത്തുക]
ഹോസ്റ്റ്: ya.ru[ഇവിടെ എൻ്റർ രണ്ടുതവണ അമർത്തുക]

എൻ്റർ അമർത്തുന്നത് സാധാരണയായി CR + LF എന്ന പ്രതീകങ്ങളുടെ സംയോജനവുമായി പൊരുത്തപ്പെടുന്നു \r\n. ഈ നൊട്ടേഷൻ താഴെ ഉപയോഗിക്കും.

http://ya.ru/ എന്ന പേജിൻ്റെ HTML കോഡ് സ്ക്രീനിലുടനീളം പ്രവർത്തിക്കും. നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, സങ്കീർണ്ണമായ ഒന്നും തന്നെയില്ല.

മെനുവിൽ നിന്ന് "കാണുക|ഉറവിടം" തിരഞ്ഞെടുത്ത് നിലവിലെ പേജിൻ്റെ സോഴ്സ് കോഡ് മിക്കവാറും ഏത് ബ്രൗസറിലും കാണാൻ കഴിയും.

ചിത്രങ്ങൾ, ഫ്രെയിമുകൾ - ഇവയെല്ലാം അധിക അഭ്യർത്ഥനകളാണ്, കൃത്യമായി സമാനമാണ്. യഥാർത്ഥത്തിൽ, ബ്രൗസർ വിൻഡോയിലെ ചിത്രങ്ങൾ എവിടെ നിന്നാണ് വരുന്നത്: HTML കോഡ് പാഴ്‌സ് ചെയ്യുമ്പോൾ (പ്രോസസ്സ് ചെയ്യുന്നു), ബ്രൗസർ https://i2.wp.com/ എന്ന ടാഗിൽ വരുന്നു. ചിത്രം"> സെർവറിലേക്ക് ഒരു അധിക അഭ്യർത്ഥന നടത്തുന്നു - അഭ്യർത്ഥന ചിത്രങ്ങൾ, ടാഗ് ഉള്ള സ്ഥലത്ത് അത് പ്രദർശിപ്പിക്കുന്നു .



ശ്രമിക്കുക:

ടെൽനെറ്റ് www.google.ru 80

GET /php/php5ru.png HTTP/1.0\r\n
ഹോസ്റ്റ്: ya.ru\r\n\r\n

ഈ png ഫയൽ ഒരു ടെക്സ്റ്റ് എഡിറ്ററിൽ കണ്ടാൽ നിങ്ങൾ കാണുന്നത് സ്ക്രീനിൽ ഉടനീളം ഫ്ലാഷ് ചെയ്യും.

I-2. HTML ഫോമുകൾ. സെർവറിലേക്ക് ഡാറ്റ അയയ്ക്കുന്നതിനുള്ള രീതികൾ

നിങ്ങൾ ഇതിനകം HTML ഫോമുകൾ നേരിട്ടിട്ടുണ്ടാകാം:

  1. നിങ്ങളുടെ പേര് നൽകുക:

ഈ കോഡ് ഒരു HTML ഫയലിൽ സംരക്ഷിച്ച് നിങ്ങളുടെ പ്രിയപ്പെട്ട ബ്രൗസർ ഉപയോഗിച്ച് കാണുന്നതിലൂടെ, നിങ്ങൾക്ക് പരിചിതമായ ഒരു HTML ഫോം കാണാം:

നിങ്ങളുടെ പേര് നൽകുക:

ഈ ചെറിയ ഉദാഹരണത്തിൽ ഉപയോഗിച്ചിരിക്കുന്ന ടാഗുകൾ നമുക്ക് സൂക്ഷ്മമായി പരിശോധിക്കാം.

ടാഗ് ചെയ്യുക

, ജോടിയാക്കിയ എൻഡ് ടാഗ് ഉണ്ട്
, യഥാർത്ഥത്തിൽ ഫോം സജ്ജമാക്കുന്നു. അതിൻ്റെ ആട്രിബ്യൂട്ടുകൾ രണ്ടും ഓപ്ഷണൽ ആണ്:

  • നടപടി- ഏത് URL (പൂർണ്ണമോ ആപേക്ഷികമോ) വ്യക്തമാക്കുന്നു അയച്ചുരൂപം. ഒരു ഫോം സമർപ്പിക്കുന്നത് സെർവറിനുള്ള എല്ലാ അഭ്യർത്ഥനയും പോലെയാണ് (ഞാൻ ഇതിനകം മുകളിൽ വിവരിച്ചതുപോലെ).

ഈ ആട്രിബ്യൂട്ട് വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, മിക്ക ബ്രൗസറുകളും (കൂടുതൽ കൃത്യമായി പറഞ്ഞാൽ, എനിക്ക് അറിയാവുന്ന എല്ലാ ബ്രൗസറുകളും) ഫോം നിലവിലെ ഡോക്യുമെൻ്റിലേക്ക് അയയ്‌ക്കുന്നു, അതായത് "തനിക്ക് തന്നെ." ഇതൊരു സൗകര്യപ്രദമായ ചുരുക്കെഴുത്താണ്, എന്നാൽ HTML സ്റ്റാൻഡേർഡ് അനുസരിച്ച്, പ്രവർത്തന ആട്രിബ്യൂട്ട് ആവശ്യമാണ്.

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

ആട്രിബ്യൂട്ട് ആണെങ്കിൽ രീതിവ്യക്തമാക്കിയിട്ടില്ല - "GET" സൂചിപ്പിക്കുന്നത്.

ടാഗ് ചെയ്യുക - സെറ്റുകൾ ഫോം ഘടകം, ആട്രിബ്യൂട്ട് നിർവചിച്ചിരിക്കുന്നത് തരം :

  • അർത്ഥം "വാചകം"ഒരു ഒറ്റവരി ടെക്സ്റ്റ് ഇൻപുട്ട് ഫീൽഡ് വ്യക്തമാക്കുന്നു
  • അർത്ഥം "സമർപ്പിക്കുക"അമർത്തുമ്പോൾ, കാരണമാകുന്ന ഒരു ബട്ടൺ വ്യക്തമാക്കുന്നു അയക്കുന്നുസെർവറിലേക്കുള്ള ഫോമുകൾ

മറ്റ് മൂല്യങ്ങൾ സാധ്യമാണ് (കൂടാതെ - ഒരു ഫോം ഘടകത്തെ നിർവചിക്കുന്ന ഒരേയൊരു ടാഗ് അല്ല), എന്നാൽ ഞങ്ങൾ അവ ഇനിപ്പറയുന്ന അധ്യായങ്ങളിൽ നോക്കും.

അപ്പോൾ നമ്മൾ "ശരി" ക്ലിക്ക് ചെയ്യുമ്പോൾ എന്ത് സംഭവിക്കും?

  1. ബ്രൗസർ ഫോമിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന ഘടകങ്ങൾ നോക്കുകയും അവയിൽ നിന്ന് പേരും മൂല്യ ആട്രിബ്യൂട്ടുകളും രൂപപ്പെടുത്തുകയും ചെയ്യുന്നു ഫോം ഡാറ്റ. പേര് നൽകിയെന്ന് പറയാം വാസ്യ. ഈ സാഹചര്യത്തിൽ, ഫോം ഡാറ്റയാണ് പേര്=വസ്യ&ഓക്ബട്ടൺ=ശരി
  2. ബ്രൗസർ സെർവറുമായി ഒരു കണക്ഷൻ സ്ഥാപിക്കുന്നു, ആട്രിബ്യൂട്ടിൽ വ്യക്തമാക്കിയ പ്രമാണത്തിനായി സെർവറിലേക്ക് ഒരു അഭ്യർത്ഥന അയയ്ക്കുന്നു നടപടിടാഗ്
    , ആട്രിബ്യൂട്ടിൽ വ്യക്തമാക്കിയ ഡാറ്റ അയയ്ക്കൽ രീതി ഉപയോഗിക്കുന്നു രീതി(ഈ സാഹചര്യത്തിൽ - GET), അഭ്യർത്ഥനയിൽ ഫോം ഡാറ്റ കൈമാറുന്നു.
  3. ലഭിച്ച അഭ്യർത്ഥന സെർവർ വിശകലനം ചെയ്യുകയും പ്രതികരണം സൃഷ്ടിക്കുകയും ബ്രൗസറിലേക്ക് അയയ്ക്കുകയും കണക്ഷൻ അടയ്ക്കുകയും ചെയ്യുന്നു
  4. സെർവറിൽ നിന്ന് ലഭിച്ച പ്രമാണം ബ്രൗസർ പ്രദർശിപ്പിക്കുന്നു

സമാന അഭ്യർത്ഥന സ്വമേധയാ അയയ്ക്കുന്നത് (ടെൽനെറ്റ് ഉപയോഗിച്ച്) ഇതുപോലെയാണ് (സൈറ്റിൻ്റെ ഡൊമെയ്ൻ നാമം www.example.com ആണെന്ന് കരുതുക):

ടെൽനെറ്റ് www.example.com 80

GET /cgi-bin/form_handler.cgi?name=Vasya&okbutton=OK HTTP/1.0\r\n
ഹോസ്റ്റ്: www.example.com\r\n
\r\n

നിങ്ങൾ ഇതിനകം ഊഹിച്ചതുപോലെ, "GET" സമർപ്പിക്കൽ രീതിയുള്ള ഒരു ഫോമിലെ സമർപ്പിക്കുക ബട്ടൺ ക്ലിക്കുചെയ്യുന്നത്, ബ്രൗസറിൻ്റെ വിലാസ ബാറിൽ അനുബന്ധ URL (ഒരു ചോദ്യചിഹ്നവും ഫോം ഡാറ്റയും ഉള്ളത്) ടൈപ്പുചെയ്യുന്നതിന് തുല്യമാണ്: http://www.example.com/cgi-bin/form_handler.cgi?name=Vasya&okbutton=OK

വാസ്തവത്തിൽ, നിങ്ങൾ സെർവറിൽ നിന്ന് ഒരു ഡോക്യുമെൻ്റ് അഭ്യർത്ഥിക്കുമ്പോഴെല്ലാം അതിൻ്റെ URL നൽകി അല്ലെങ്കിൽ ഒരു ലിങ്കിൽ ക്ലിക്കുചെയ്ത് GET രീതി ഉപയോഗിക്കുന്നു. ഉപയോഗിക്കുന്നത് , URL ഒരു ചോദ്യചിഹ്നവും ഫോം ഡാറ്റയും ഉപയോഗിച്ച് ലളിതമായി ചേർത്തിരിക്കുന്നു.

ഇനി നമുക്ക് നമ്മുടെ ഫോമിൻ്റെ ആദ്യ വരി ഇനിപ്പറയുന്നവ ഉപയോഗിച്ച് മാറ്റിസ്ഥാപിക്കാം:

ഞങ്ങൾ അയയ്ക്കൽ രീതി "POST" എന്ന് വ്യക്തമാക്കി. ഈ സാഹചര്യത്തിൽ, ഡാറ്റ അല്പം വ്യത്യസ്തമായ രീതിയിൽ സെർവറിലേക്ക് അയയ്ക്കുന്നു:

ടെൽനെറ്റ് www.example.com 80

POST /cgi-bin/form_handler.cgi HTTP/1.0\r\n
ഹോസ്റ്റ്: www.example.com\r\n
ഉള്ളടക്ക തരം: ആപ്ലിക്കേഷൻ/x-www-form-urlencoded\r\n
ഉള്ളടക്ക ദൈർഘ്യം: 22\r\n
\r\n
പേര്=വസ്യ&ഓക്ബട്ടൺ=ശരി

POST രീതി ഉപയോഗിക്കുമ്പോൾ, ഫോം ഡാറ്റ "രണ്ട് എൻ്ററുകൾക്ക്" ശേഷം അയയ്‌ക്കുന്നു - to ശരീരംഅഭ്യർത്ഥന. മുകളിൽ പറഞ്ഞതെല്ലാം സത്യമാണ് തലക്കെട്ട്അഭ്യർത്ഥന (ഞങ്ങൾ GET രീതി ഉപയോഗിച്ചപ്പോൾ, ഫോം ഡാറ്റ ഹെഡറിൽ അയച്ചു). അഭ്യർത്ഥന ബോഡി വായിക്കുന്നത് ഏത് ബൈറ്റിൽ നിർത്തണമെന്ന് സെർവറിന് അറിയാൻ, തലക്കെട്ടിൽ ലൈൻ അടങ്ങിയിരിക്കുന്നു ഉള്ളടക്കം-ദൈർഘ്യം; ഫോം ഡാറ്റ ഫോമിൽ കൈമാറുമെന്ന് parameter1=value1¶meter2=value2..., കൂടാതെ മൂല്യങ്ങൾ urlencode രൂപത്തിൽ കൈമാറ്റം ചെയ്യപ്പെടുന്നു - അതായത്, GET രീതി ഉപയോഗിക്കുന്നതിന് തുല്യമാണ്, എന്നാൽ അഭ്യർത്ഥനയുടെ ബോഡിയിൽ - "ഉള്ളടക്ക-തരം: ആപ്ലിക്കേഷൻ/x-" എന്ന തലക്കെട്ട് സെർവറിനെ അറിയിക്കുന്നു. www-form-urlencoded".

ഫോം ഡാറ്റാ ലൈനിൻ്റെ ദൈർഘ്യത്തിന് പരിധിയില്ല എന്നതാണ് POST രീതിയുടെ പ്രയോജനം.

POST രീതി ഉപയോഗിക്കുമ്പോൾ, GET-ൻ്റെ കാര്യത്തിലെന്നപോലെ, "ഒരു ലിങ്ക് പിന്തുടർന്ന്" ഫോം സമർപ്പിക്കാൻ സാധ്യമല്ല.

ഒരു POST ഫോം ഉപയോഗിക്കുമ്പോൾ, അതിൻ്റെ ആട്രിബ്യൂട്ടിൽ നടപടിചോദ്യചിഹ്നത്തിന് ശേഷം നിങ്ങൾക്ക് GET ഫോം പാരാമീറ്ററുകൾ വ്യക്തമാക്കാനും കഴിയും. അങ്ങനെ, POST രീതിയിൽ GET രീതി ഉൾപ്പെടുന്നു.

അപ്ഡേറ്റ് ചെയ്തത് 12/12/2015

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

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

ഈ രീതിയിൽ സന്ദേശങ്ങൾ അയയ്ക്കുന്നതിൻ്റെ ഗുണങ്ങൾ വ്യക്തമാണ്:

1. ഇൻറർനെറ്റിൽ നിങ്ങളുടെ ഇമെയിൽ വിലാസം "ഷൈൻ" ചെയ്യേണ്ടതില്ല, അതിനർത്ഥം അത് സ്പാമർമാർക്ക് ലഭിക്കില്ല എന്നാണ്.

2. ഒരു സന്ദർശകന് നിങ്ങളോട് ഒരു ചോദ്യം ചോദിക്കാനോ അവനോട് എന്തെങ്കിലും ചോദിക്കാനോ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, അയാൾക്ക് ഇമെയിൽ വിലാസം പകർത്തുകയോ അവൻ്റെ ഇമെയിൽ ക്ലയൻ്റ് തുറക്കുകയോ ഒരു സന്ദേശം എഴുതുകയോ ചെയ്യേണ്ടതില്ല. സന്ദർശകൻ ആവശ്യമായ ഡാറ്റ ഫോമിൽ വേഗത്തിൽ പൂരിപ്പിച്ച് നിങ്ങൾക്ക് ഒരു സന്ദേശം അയയ്ക്കും.

3. സന്ദർശകരിൽ നിന്നുള്ള ഇത്തരം ഫീഡ്‌ബാക്ക് ഓർഗനൈസേഷൻ ഉപയോഗിച്ച്, നിങ്ങൾക്ക് സന്ദേശം കൈമാറാനുള്ള സാധ്യത ഏതാണ്ട് 100% ആണ്, പ്രത്യേകിച്ചും ഇമെയിൽ വിലാസം നിങ്ങളുടെ ഡൊമെയ്‌നുമായി ലിങ്ക് ചെയ്‌തിട്ടുണ്ടെങ്കിൽ. എല്ലാത്തിനുമുപരി, ഒരു നീണ്ട മെയിൽ ചെയിനിൽ നിന്ന് ഇൻ്റർമീഡിയറ്റ് നോഡുകൾ ഒഴിവാക്കിയിരിക്കുന്നു. ഇതിനർത്ഥം മെയിൽ ഡെലിവറിയുടെ വിശ്വാസ്യത ഗണ്യമായി വർദ്ധിക്കുന്നു എന്നാണ്.

ഒരു സന്ദേശം സമർപ്പിക്കുന്നതിനുള്ള ഫോം എങ്ങനെ സൃഷ്ടിക്കാം?

സാധാരണയായി, അത്തരം സ്ക്രിപ്റ്റുകൾ രണ്ട് ഭാഗങ്ങൾ ഉൾക്കൊള്ളുന്നു, കൂടാതെ കോഡ് രണ്ട് വ്യത്യസ്ത ഫയലുകളിലാണ് സ്ഥിതി ചെയ്യുന്നത്:

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

ഞങ്ങൾ സ്ക്രിപ്റ്റിൻ്റെ ആദ്യ ഭാഗം ഒരു പ്രത്യേക ഫയലിൽ ഇട്ടു അതിനെ വിളിക്കുന്നു: mail.php. ഈ ഫയലിൽ ഡാറ്റാ എൻട്രി ഫോം അടങ്ങിയിരിക്കും. ഫയലിന്റെ പേര് mail.phpഞാൻ ഇത് സോപാധികമായി എടുത്തു, നിങ്ങൾക്ക് ഈ ഫയലിനെ നിങ്ങൾക്ക് ഇഷ്ടമുള്ളതെന്തും വിളിക്കാം. ഈ ഫയലിന് മറ്റൊരു വിപുലീകരണമുണ്ടാകാം, ഉദാഹരണത്തിന് .html.

ഈ ഫയലിലേക്ക് സൈറ്റ് സന്ദർശകരെ ബന്ധപ്പെടുന്നതിന്, അവർ സാധാരണയായി ഒരു ലളിതമായ ലിങ്ക് ഉണ്ടാക്കുന്നു: സൈറ്റിൻ്റെ രചയിതാവിന് എഴുതുക, ഒരു സന്ദേശം അയയ്‌ക്കുക അല്ലെങ്കിൽ അതുപോലുള്ള മറ്റെന്തെങ്കിലും. ഒരു സന്ദർശകൻ അത്തരമൊരു ലിങ്കിൽ ക്ലിക്കുചെയ്യുമ്പോൾ, ഒരു സന്ദേശം അയയ്‌ക്കുന്നതിന് ഡാറ്റ (വിവരങ്ങൾ) നൽകേണ്ട ഒരു ഫോം ഉള്ള ഒരു പ്രത്യേക പേജിലേക്ക് അവനെ കൊണ്ടുപോകും.

അതിനാൽ, ഒരു പുതിയ ഫയൽ സൃഷ്ടിക്കുക, അതിന് ഒരു പേര് നൽകുക: mail.phpഅഥവാ mail.htmlഅതിൽ കോഡ് ഒട്ടിക്കുക പട്ടിക 1.

പട്ടിക 1









സൈറ്റിൻ്റെ രചയിതാവിന് ഒരു സന്ദേശം അയയ്ക്കാൻ, ഇനിപ്പറയുന്ന ഫോം ഉപയോഗിക്കുക:



നിങ്ങളുടെ പേര്:


നിങ്ങളുടെ ഇമെയിൽ:


നിങ്ങളുടെ സന്ദേശം:




ഡാറ്റാ എൻട്രിക്കായി 3 ഫീൽഡുകൾ മാത്രം ഉൾക്കൊള്ളുന്ന ഏറ്റവും ലളിതമായ ഫോം ഇതാണ്. ഞാൻ ഈ ഫീൽഡുകളെ വിളിച്ചു: നിങ്ങളുടെ പേര്, നിങ്ങളുടെ ഇമെയിൽ, നിങ്ങളുടെ സന്ദേശം. ആവശ്യമെങ്കിൽ, ഫീൽഡുകളുടെ എണ്ണം വർദ്ധിപ്പിക്കാം.

ആദ്യത്തെ രണ്ട് ഫീൽഡുകൾ: നിങ്ങളുടെ പേര്, നിങ്ങളുടെ ഇമെയിൽ, ടാഗുകളാൽ വിവരിച്ചിരിക്കുന്നു:

നിങ്ങളുടെ പേര്:

എന്നാൽ അവയിൽ ഓരോന്നിനും സ്വന്തം പേര് നൽകിയിരിക്കുന്നു, അത് സ്വയം വിളിക്കുന്നു ഐഡൻ്റിഫയർ: പേര്="പേര്"ഒപ്പം പേര്="ഇമെയിൽ"അതനുസരിച്ച്.

ഒരു സന്ദേശം നൽകുന്നതിനുള്ള മൂന്നാമത്തെ ഫീൽഡ് ടാഗുകളാൽ വിവരിച്ചിരിക്കുന്നു:

നിങ്ങളുടെ സന്ദേശം:

ഈ ഫീൽഡിന് ഒരു ഐഡൻ്റിഫയർ ഉണ്ട്: പേര് = "കുഴപ്പം".

തീർച്ചയായും രണ്ട് ബട്ടണുകൾ ഉണ്ട്: ഒരു സന്ദേശം അയയ്ക്കുകഒപ്പം വ്യക്തമായ രൂപം.

സന്ദർശകൻ ഫോമിലേക്ക് നൽകുന്ന ഡാറ്റ (വിവരങ്ങൾ) ഉചിതമായ ഐഡൻ്റിഫയറുകൾ നൽകിയിട്ടുണ്ട്: പേര്, ഇമെയിൽഒപ്പം കുഴപ്പം, ഓർക്കുക - ഇത് പ്രധാനമാണ്!

രൂപകൽപ്പനയുടെ എളുപ്പത്തിനായി, മുഴുവൻ ഫോമും ഒരു സാധാരണ പട്ടികയിൽ സ്ഥാപിച്ചിരിക്കുന്നു, അതിൻ്റെ രൂപം ഉപയോഗിച്ച് രൂപകൽപ്പന ചെയ്യാൻ കഴിയും, എനിക്ക് ഇത് ഒരു ക്ലാസാണ്: class="td_border", ഞാനിത് ഇവിടെ അവതരിപ്പിക്കുന്നില്ല; ആവശ്യമെങ്കിൽ, നിങ്ങളുടെ അഭിരുചിക്കനുസരിച്ച് സ്വയം ചേർക്കുക.

ഫയൽ ഹാൻഡ്ലർ.

സ്‌ക്രിപ്റ്റിൻ്റെ രണ്ടാം ഭാഗത്ത് ഒരു ഹാൻഡ്‌ലർ ഫയൽ അടങ്ങിയിരിക്കുന്നു: mail2.php, ഇതിൽ രീതി പോസ്റ്റ്അനുബന്ധ ഐഡൻ്റിഫയറുകളുള്ള എല്ലാ ഡാറ്റയും കൈമാറുന്നു: പേര്, ഇമെയിൽഒപ്പം കുഴപ്പം. ഇവിടെ ഈ ഡാറ്റ വേരിയബിളുകളിൽ സ്ഥാപിച്ചിരിക്കുന്നു: $പേര്, $ഇമെയിൽ, $മെസ്.

ഒരു ഫയൽ സൃഷ്ടിക്കുക mail2.phpഅതിൽ കോഡ് എഴുതുക പട്ടിക 2:

പട്ടിക 2

$name = $_POST["name"];
$ഇമെയിൽ = $_POST["ഇമെയിൽ"];
$മെസ് = $_POST["മെസ്"];

$REMOTE_ADDR = $_POST["REMOTE_ADDR"];

എങ്കിൽ (ഇസെറ്റ് ($പേര്))
{
$name = substr($name,0,20); //20 അക്ഷരങ്ങളിൽ കൂടുതൽ പാടില്ല
എങ്കിൽ (ശൂന്യം($പേര്))
{
പ്രതിധ്വനി "

പേര് വ്യക്തമാക്കിയിട്ടില്ല!!!

";
പ്രതിധ്വനി "";
പുറത്ത്;
}
}
വേറെ
{
$പേര് = "വ്യക്തമാക്കിയിട്ടില്ല";
}

എങ്കിൽ (ഇസെറ്റ് ($ഇമെയിൽ))
{
$email = substr($email,0,20); //20 അക്ഷരങ്ങളിൽ കൂടുതൽ പാടില്ല
എങ്കിൽ (ശൂന്യം($ഇമെയിൽ))
{
പ്രതിധ്വനി "

ഇമെയിൽ വ്യക്തമാക്കിയിട്ടില്ല!!!

";
പ്രതിധ്വനി " തിരികെ പോയി ഫോം ശരിയായി പൂരിപ്പിക്കുക.";
പുറത്ത്;
}
}
വേറെ
{
$email = "വ്യക്തമാക്കിയിട്ടില്ല";
}

എങ്കിൽ (ഇസെറ്റ് ($ മെസ്))
{
$ മെസ് = സബ്സ്ട്രാർ ($ മെസ്, 0,1000); //1000 പ്രതീകങ്ങളിൽ കൂടുതൽ പാടില്ല
എങ്കിൽ (ശൂന്യം($ മെസ്))
{
പ്രതിധ്വനി "

സന്ദേശം എഴുതിയിട്ടില്ല!!!

";
പ്രതിധ്വനി " തിരികെ പോയി ഫോം ശരിയായി പൂരിപ്പിക്കുക.";
പുറത്ത്;
}
}
വേറെ
{
$മെസ് = "വ്യക്തമാക്കിയിട്ടില്ല";
}

$i = "വ്യക്തമാക്കിയിട്ടില്ല";
എങ്കിൽ ($പേര് == $i, $email == $i, $mess == $i)
{
echo "ശ്രദ്ധിക്കുക! ഒരു ​​പിശക് സംഭവിച്ചു! നിങ്ങൾ സന്ദേശ ഫീൽഡുകൾ പൂരിപ്പിച്ചില്ല!";
പുറത്ത്;
}

$to = "admin@site";
$ വിഷയം = " സൈറ്റ് സൈറ്റിൽ നിന്നുള്ള സന്ദേശം";
$message = "അയക്കുന്നയാളുടെ പേര്: $name .\nഇമെയിൽ വിലാസം: $email\nസന്ദേശം: $mess .\nIP വിലാസം: $_SERVER";
മെയിൽ ($to,$subject,$message,"content-type:text/plain; charset = windows-1251 ") അല്ലെങ്കിൽ പ്രിൻ്റ് "എനിക്ക് ഒരു കത്ത് അയക്കാൻ കഴിയില്ല!!!";
പ്രതിധ്വനി "

നിങ്ങളുടെ സന്ദേശം അയച്ചതിന് നന്ദി.

ഇത് എനിക്ക് വളരെ പ്രധാനമാണ്!

നിങ്ങൾക്ക് തീർച്ചയായും ഉടൻ ഉത്തരം ലഭിക്കും.";
പുറത്ത്;
?>

ഈ ഫയൽ സൈറ്റ് സന്ദർശകൻ ഫോമിൽ നൽകിയ ഡാറ്റ പരിശോധിക്കുകയും തുടർന്ന് നിർദ്ദിഷ്ട ഇമെയിൽ വിലാസത്തിലേക്ക് ഒരു സന്ദേശം അയയ്ക്കുകയും ചെയ്യുന്നു.

ഫീൽഡുകൾ ശൂന്യമായി വിടുകയോ തെറ്റായി പൂരിപ്പിക്കുകയോ ചെയ്താൽ, സ്ക്രിപ്റ്റ് സന്ദർശകർക്ക് നിർദ്ദിഷ്ട കാരണം സൂചിപ്പിച്ച് ഒരു സന്ദേശം നൽകും.

ഫയൽ എന്നത് ശ്രദ്ധിക്കുക: mail2.php ഒരു വിപുലീകരണം ഉണ്ടായിരിക്കണം .php , കാരണം ഒരു സന്ദേശം അയയ്ക്കുന്നത് ഫംഗ്ഷൻ ഉപയോഗിച്ചാണ് നടത്തുന്നത് മെയിൽ PHP.

തീർച്ചയായും നിങ്ങളുടെ ഹോസ്റ്റിംഗ് PHP-യെ പിന്തുണയ്ക്കണം. ഇത് പ്രധാനമായും സൗജന്യ ഹോസ്റ്റിംഗിന് ബാധകമാണ്, എന്നിരുന്നാലും അടുത്തിടെ സൗജന്യ ഹോസ്റ്റിംഗിൽ PHP മിക്കവാറും എല്ലായിടത്തും ഇൻസ്റ്റാൾ ചെയ്തിട്ടുണ്ട്.

കോഡിൽ പട്ടിക 2ഇത് ലളിതമാണ്, ചുവപ്പ് നിറത്തിൽ ഹൈലൈറ്റ് ചെയ്‌തിരിക്കുന്ന എല്ലാ മൂല്യങ്ങളും നിങ്ങളുടെ ആവശ്യങ്ങൾക്കനുസരിച്ച് ശരിയാക്കുക, അതായത്:

  • നിങ്ങളുടേത് രജിസ്റ്റർ ചെയ്യുക ഇമെയിൽ വിലാസം, ഏത് സന്ദേശങ്ങളിലേക്കാണ് അയയ്ക്കേണ്ടത് (വേരിയബിൾ $ to);
  • സന്ദേശത്തിൻ്റെ വിഷയം ശരിയാക്കുക (വേരിയബിൾ $ വിഷയം);
  • എൻകോഡിംഗിൽ ശ്രദ്ധിക്കുക ( charset=windows-1251). നിങ്ങളുടെ സൈറ്റിൽ ഉപയോഗിക്കുന്ന എൻകോഡിംഗ് നൽകുക. റഷ്യൻ ഭാഷയിലുള്ള ഇൻ്റർനെറ്റിൽ, എൻകോഡിംഗ് ഇതായിരിക്കാം: "utf-8"അഥവാ "വിൻഡോസ്-1251". എൻകോഡിംഗിൽ നിങ്ങൾ ഒരു തെറ്റ് വരുത്തിയാൽ, കത്തിലെ വാചകം തെറ്റായി പ്രദർശിപ്പിക്കും (ഭ്രാന്തൻ).

അത്രയേയുള്ളൂ, ഫയലുകൾ അപ്‌ലോഡ് ചെയ്യുക മാത്രമാണ് ഇപ്പോൾ ചെയ്യേണ്ടത്: mail.phpഒപ്പം mail2.phpസന്ദേശങ്ങൾ അയയ്‌ക്കുന്നതിനുള്ള സൗകര്യപ്രദമായ ഒരു ഫോം നിങ്ങളുടെ വെബ്‌സൈറ്റിൽ ദൃശ്യമാകും.



ഈ ലേഖനത്തിലെ അഭിപ്രായങ്ങൾ (പാഠം):

പാഠത്തിന് നന്ദി. അവർ പറയുന്നത് ശരിയാണ്: എല്ലാം കൃത്യസമയത്ത് വരുന്നു. ഇന്ന് ഞാൻ ഒരു വെബ്‌സൈറ്റിനായി ഒരു കോൺടാക്റ്റ് ഫോം എങ്ങനെ നിർമ്മിക്കാം, കൂടാതെ ഒരു സ്വതന്ത്രമായ ഒന്ന് എന്നിവയ്ക്കായി ഇൻ്റർനെറ്റിൽ തിരയാൻ പോവുകയായിരുന്നു. ഇത് ചെയ്യുമെന്ന് ഞാൻ മനസ്സിലാക്കുന്നു.

നല്ല പാഠം! നന്ദി!

നന്ദി ആൻഡ്രേ, നല്ല പാഠം.

നന്ദി, ഇത് ഉപയോഗപ്രദമാകുമെന്ന് ഞാൻ കരുതുന്നു

Savin Dmitry Aleksandrovich (SAVIN DMITRY ALEXANDROVICH) നിങ്ങൾക്ക് എഴുതുന്നു, എനിക്ക് CSS-ലെ ഫോമുകളെക്കുറിച്ച് കൂടുതൽ വിശദമായി എല്ലാം അറിയണം, എനിക്ക് ഇതിനെക്കുറിച്ച് കുറച്ച് മാത്രമേ അറിയൂ: ആക്ഷൻ പ്രോപ്പർട്ടിയെക്കുറിച്ച് കൂടുതൽ വിശദമായി, എനിക്ക് അറിയാവുന്നത് പോലെ ആക്ഷൻ ഡോക്യുമെൻ്റിലേക്കുള്ള ഒരു ലിങ്കാണ് ഡാറ്റാ അഭ്യർത്ഥന അയച്ചു അല്ലെങ്കിൽ ഫോമിൽ നിന്നുള്ള ഡാറ്റ തന്നെ, അല്ലെങ്കിൽ അത്തരത്തിലുള്ള എന്തെങ്കിലും. മെത്തേഡ് = "പോസ്റ്റ്" ഡാറ്റ പ്രോസസ്സ് ചെയ്യുന്നതിനേക്കാൾ വലിയ വലുപ്പത്തിൽ, മുതലായവ. ഫോമുകളെ കുറിച്ച് കൂടുതൽ, ഞാൻ അവയുമായി ഏതാണ്ട് നഷ്ടത്തിലാണ്.

നമസ്കാരം Andrei ! നിങ്ങളോടുള്ള ബഹുമാനത്തോടെ, അഹ്മദ്. അതിനാൽ സന്ദർശകർക്ക് അവരുടെ അവലോകനങ്ങൾ നൽകുന്നതിന് സൈറ്റിൽ ഒരു "നിങ്ങളുടെ അഭിപ്രായം ചേർക്കുക" സൃഷ്ടിക്കാനും ഞാൻ ആഗ്രഹിക്കുന്നു. ഞാൻ എന്ത് കോഡ് എഴുതണം? നന്ദി, എനിക്കിത് ഇഷ്ടപ്പെട്ടു. അഹ്മദ്

സുന്ദരൻ! വളരെ ഉപയോഗപ്രദമായ വിവരങ്ങൾ!

ഇത് ഉപയോഗപ്രദമാണ്, ഉപയോഗപ്രദമാണ്, പക്ഷേ അത് പ്രവർത്തിക്കുന്നില്ല. ഫോം പൂരിപ്പിച്ച ശേഷം, mail2.php ലിസ്റ്റിംഗ് ദൃശ്യമാകും

ഇത് ഉപയോഗപ്രദമാണ്, ഇത് ഉപയോഗപ്രദമാണ്, പക്ഷേ അത് പ്രവർത്തിക്കുന്നില്ല. ഫോം പൂരിപ്പിച്ച ശേഷം, mail2.php ലിസ്റ്റിംഗ് ദൃശ്യമാകും

എല്ലാം നന്നായി പ്രവർത്തിക്കുന്നു, രചയിതാവിനെപ്പോലെ ബട്ടണുകൾ മാത്രം വലുതല്ല. വലിയ ബട്ടണുകൾ എങ്ങനെ നിർമ്മിക്കാമെന്ന് ആരെങ്കിലും എന്നോട് പറയാമോ? രചയിതാവിന് നന്ദി!

പക്ഷെ അത് എനിക്ക് പ്രവർത്തിക്കുന്നില്ല. കൂടുതൽ കൃത്യമായി പറഞ്ഞാൽ, ഇത് പകുതിയായി പ്രവർത്തിക്കുന്നു. കത്ത് അയച്ചു, പക്ഷേ ശൂന്യമാണ്. mail1-ൽ നിന്നുള്ള ഡാറ്റ mail2-ലേക്ക് പോകുന്നില്ല

ഇമെയിലിലേക്ക് വരുന്നില്ല. എന്താണ് ക്യാച്ച്? ലോഗിനും പാസ്‌വേഡും ഇല്ലാതെ അയാൾക്ക് എങ്ങനെ ഒന്നും അയക്കാൻ കഴിയുമെന്ന് എനിക്ക് മനസ്സിലാകുന്നില്ല. ഇതൊരു മെയിൽ സെർവറാണോ? ലളിതമായ രൂപം, അത്രമാത്രം

ഫോമിന് നന്ദി! പ്രവർത്തിക്കുന്നു! ഇത് നിങ്ങൾക്ക് അനുയോജ്യമല്ലെങ്കിൽ, ഓരോ ഘട്ടവും ശ്രദ്ധാപൂർവ്വം പിന്തുടരുക. എനിക്കും അത് പെട്ടന്ന് നടന്നില്ല. ആൻഡ്രി, വീണ്ടും നന്ദി!

ദയവായി സഹായിക്കൂ, ഞാൻ ഫോം ചേർത്തു, എല്ലാം ശരിയാണെന്ന് തോന്നുന്നു, പക്ഷേ സന്ദേശം അയച്ചതായി പറയുന്നുണ്ടെങ്കിലും ഞാൻ സൂചിപ്പിച്ച ഇമെയിൽ വിലാസത്തിലേക്ക് സന്ദേശം എത്തിയില്ല...

എന്നോട് പറയൂ, ഒരു കത്ത് അയച്ചതിന് ശേഷം/പരാജയപ്പെട്ടതിന് ശേഷം, ഒരു പുതിയ വിൻഡോ തുറക്കുന്നില്ലെന്നും എഴുത്ത് പഴയതിൽ തന്നെ നടക്കുന്നുണ്ടെന്നും എനിക്ക് എങ്ങനെ ഉറപ്പാക്കാനാകും?

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

ആന്ദ്രേ, ദയവായി എന്നോട് പറയൂ, Chrome-ൽ ഫോം മികച്ച രീതിയിൽ പ്രവർത്തിക്കുന്നു, പക്ഷേ Explorer-ൽ ഒരു പ്രശ്നമുണ്ട്. ഇമെയിലുകൾ ഡെലിവർ ചെയ്യുന്നില്ല, പിശക് അല്ലെങ്കിൽ സന്ദേശങ്ങൾ അയയ്‌ക്കുന്നതിൽ ദൃശ്യമാകില്ല. എന്താണ് കാര്യം? മുൻകൂർ നന്ദി

രസകരമായ പാഠം! നന്ദി!

നന്ദി. എല്ലാം നന്നായി പ്രവർത്തിക്കുന്നു)

കോഡിൽ ക്ലോസിംഗ് /പി ടാഗുകളൊന്നുമില്ല. എന്തുകൊണ്ട്?

മുന്നറിയിപ്പ്: mail(): "sendmail_from" php.ini-ൽ സജ്ജീകരിച്ചിട്ടില്ല അല്ലെങ്കിൽ ഇ:Roomsu362571transport-online.netwwwmail.php-ൽ ഇഷ്‌ടാനുസൃത "From:" എന്ന തലക്കെട്ട് 66 ലെ ലൈനിൽ കാണുന്നില്ല. എനിക്ക് ഒരു കത്ത് അയയ്‌ക്കാനാവില്ല!!! കൊള്ളാം - അതെങ്ങനെ മാറും?എങ്ങനെയിരിക്കും??

എനിക്ക് കോഡിംഗ് കണ്ടുപിടിക്കാൻ കഴിയുന്നില്ല. നിങ്ങൾ windows-1251 നൽകുകയാണെങ്കിൽ, സന്ദേശത്തിലെ സ്ക്രിപ്റ്റിൻ്റെ വാചകം സാധാരണമാണ്, എന്നാൽ സന്ദേശത്തിൻ്റെ വാചകം തന്നെ മുതലകളിൽ മെയിലിലേക്ക് അയയ്ക്കുന്നു. നിങ്ങൾ utf-8 ഇട്ടാൽ - മെയിലിലെ സന്ദേശത്തിലെ സ്ക്രിപ്റ്റിൻ്റെ വാചകം - ചോദ്യചിഹ്നങ്ങൾ, കൂടാതെ ഫോമിൽ നിന്നുള്ള സന്ദേശത്തിൻ്റെ വാചകം - സാധാരണ. രണ്ടും സാധാരണമാണെന്ന് എനിക്ക് എങ്ങനെ ഉറപ്പാക്കാനാകും?

ഇത് എനിക്കായി പ്രവർത്തിക്കുന്നില്ല, പക്ഷേ സൈറ്റ് ഇതുവരെ ഹോസ്റ്റ് ചെയ്‌തിട്ടില്ല, ഞാൻ എപ്പോഴാണ് ഇത് പോസ്റ്റ് ചെയ്യുക?

എല്ലാം പ്രവർത്തിക്കുന്നു, സ്ക്രിപ്റ്റിന് നന്ദി! നിങ്ങൾ അയയ്‌ക്കുക ബട്ടണിൽ ക്ലിക്കുചെയ്യുമ്പോൾ, ഒരു ഹാൻഡ്‌ലറുള്ള ഒരു പുതിയ പേജ് തുറക്കുന്നില്ലെന്ന് എങ്ങനെ ഉറപ്പാക്കാമെന്ന് എന്നോട് പറയൂ. സമർപ്പിക്കുക ബട്ടൺ അമർത്തുന്നതിന് മുമ്പ് സൈറ്റ് ഉണ്ടായിരുന്ന പേജിൽ തന്നെ തുടരണോ?

ഇമെയിൽ ഇൻപുട്ട് ഫീൽഡ് എങ്ങനെ ഉയർന്നതാക്കാം?

നിങ്ങൾക്ക് നിരവധി വിലാസങ്ങളിലേക്ക് കത്തുകൾ അയയ്‌ക്കണമെങ്കിൽ, ഇതുപോലെ കോമകളാൽ വേർതിരിച്ച ആവശ്യമായ വിലാസങ്ങൾ ചേർക്കുക: $to = "admin@site, [ഇമെയിൽ പരിരക്ഷിതം], [ഇമെയിൽ പരിരക്ഷിതം]";

ഒരു സന്ദേശം അയച്ചതിന് ശേഷം മറ്റൊരു പേജിലേക്ക് ഒരു റീഡയറക്‌ട് ഉണ്ടെന്ന് എനിക്ക് എങ്ങനെ ഉറപ്പാക്കാനാകും?

അവിടെ $to = "admin@site"; ചോദ്യം: 2 വിലാസങ്ങളിലേക്ക് അയയ്‌ക്കേണ്ടത് ആവശ്യമാണെങ്കിൽ! $to = "$email" എന്ന ഫോമിലെ വിലാസങ്ങളിലൊന്ന്; മറ്റൊരു വിധത്തിൽ പറഞ്ഞാൽ, എൻ്റെ നിർദ്ദിഷ്ട ഇമെയിലിലേക്കുള്ള സന്ദേശത്തിൻ്റെ തനിപ്പകർപ്പുള്ള "ഒരു സുഹൃത്തിന് ശുപാർശ ചെയ്യുക" എന്ന പ്രവർത്തനം. നന്ദി.

ചില കാരണങ്ങളാൽ ഫീഡ്‌ബാക്ക് ഫോം എനിക്ക് പ്രവർത്തിക്കുന്നില്ല, അവയൊന്നും പ്രവർത്തിക്കുന്നില്ല. സന്ദേശം അയച്ചതായി നടിക്കുന്നു, പക്ഷേ അത് മെയിലിൽ വരുന്നില്ല.

ഹലോ! ഹോസ്റ്റിംഗിൽ ഇത് പ്രവർത്തിക്കാത്തത് എന്തുകൊണ്ടെന്ന് ദയവായി വിശദീകരിക്കുക, അതിൽ പറയുന്നു: "എനിക്ക് ഒരു കത്ത് അയയ്ക്കാൻ കഴിയില്ല." ഡെൻവറിലെ ലോക്കൽ ഹോസ്റ്റിൽ ഇത് നന്നായി പ്രവർത്തിക്കുന്നു. എന്താണ് പ്രശ്നം?...

എന്തുകൊണ്ടാണ് എൻ്റെ ഒന്നിലധികം ഫോമുകൾ പ്രവർത്തിക്കാത്തത്?

വളരെ നന്ദി. എല്ലാം വളരെ ലളിതവും ആക്സസ് ചെയ്യാവുന്നതുമാണ്. gosdogovor.ru എന്ന വെബ്സൈറ്റിൽ ഞാൻ നിങ്ങളുടെ ഉദാഹരണം ഉപയോഗിച്ചു. എനിക്കും ഫീൽഡുകളുടെ ഘടനയ്ക്കും അനുയോജ്യമായ രീതിയിൽ ഞാൻ ഡിസൈൻ അൽപ്പം ട്വീക്ക് ചെയ്തു: http://www.gosdogovor.ru/easuzcon.html. വീണ്ടും നന്ദി.

സുഹൃത്തുക്കളേ, നിങ്ങളുടെ പ്രാദേശിക സെർവറിൽ നിന്ന്, അതായത്, ഇൻ്റർനെറ്റിൽ ഇതുവരെ പോസ്റ്റ് ചെയ്തിട്ടില്ലാത്ത ഒരു സൈറ്റിൽ നിന്ന് ഒരു സന്ദേശം അയയ്ക്കാൻ നിങ്ങൾ ശ്രമിക്കുകയാണെങ്കിൽ, നിങ്ങൾ വിജയിക്കില്ല. ഇത് കുറച്ച് ഹോസ്റ്റിംഗിൽ സ്ഥാപിക്കുക, നിങ്ങൾ സന്തോഷിക്കും)

ആൻഡ്രേ, ഞാൻ ഒരു ബട്ടൺ അമർത്തുമ്പോൾ, ഒരു നിർദ്ദിഷ്ട വാചകം ഉള്ള ഒരു സന്ദേശം ഒരു നിർദ്ദിഷ്ട വിലാസത്തിലേക്ക് അയയ്‌ക്കാൻ എനിക്ക് എങ്ങനെ കഴിയും? ദയവായി എന്നെ സഹായിക്കൂ: [ഇമെയിൽ പരിരക്ഷിതം]

ഹാൻഡ്‌ലർ പ്രോഗ്രാമിന് ഫോം ഡാറ്റ ലഭിക്കുന്ന സെർവറിലേക്ക് കൂടുതൽ അയയ്‌ക്കുന്നതിന് ഉപയോക്താവിൽ നിന്ന് വിവരങ്ങൾ സ്വീകരിക്കുന്നതിനാണ് ഫോം സാധാരണയായി ഉദ്ദേശിക്കുന്നത്. PHP, Perl, തുടങ്ങിയ ഏത് സെർവർ സൈഡ് പ്രോഗ്രാമിംഗ് ഭാഷയിലും അത്തരമൊരു പ്രോഗ്രാം എഴുതാം. ടാഗിൻ്റെ പ്രവർത്തന ആട്രിബ്യൂട്ടിൽ പ്രോഗ്രാം വിലാസം സൂചിപ്പിച്ചിരിക്കുന്നു

, ഉദാഹരണം 1 ൽ കാണിച്ചിരിക്കുന്നതുപോലെ.

ഉദാഹരണം 1: ഫോം ഡാറ്റ സമർപ്പിക്കുന്നു

HTML5 IE Cr Op Sa Fx

ഫോം ഡാറ്റ



ഈ ഉദാഹരണത്തിൽ, നെയിം ആട്രിബ്യൂട്ട് (ലോഗിൻ, പാസ്‌വേഡ്) സൂചിപ്പിക്കുന്ന ഫോം ഡാറ്റ /example/handler.php എന്നതിലെ ഫയലിലേക്ക് കൈമാറും. പ്രവർത്തന ആട്രിബ്യൂട്ട് വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, നിലവിലെ പേജിൻ്റെ വിലാസത്തിലേക്ക് കൈമാറ്റം സംഭവിക്കുന്നു.

സെർവറിലേക്കുള്ള കൈമാറ്റം രണ്ട് വ്യത്യസ്ത രീതികളിലാണ് സംഭവിക്കുന്നത്: ടാഗിൽ രീതി സജ്ജീകരിക്കുന്നതിന് GET, POST എന്നിവ

മെത്തേഡ് ആട്രിബ്യൂട്ട് ഉപയോഗിക്കുന്നു, അതിൻ്റെ മൂല്യങ്ങൾ നേടുകയും പോസ്റ്റുചെയ്യുകയും ചെയ്യുന്ന കീവേഡുകളാണ്. രീതി ആട്രിബ്യൂട്ട് വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, സ്ഥിരസ്ഥിതിയായി ഡാറ്റ GET രീതി ഉപയോഗിച്ച് സെർവറിലേക്ക് അയയ്ക്കും. പട്ടികയിൽ ഈ രീതികൾ തമ്മിലുള്ള വ്യത്യാസം ചിത്രം 1 കാണിക്കുന്നു.

ഏത് രീതിയാണ് ഉപയോഗിക്കുന്നതെന്ന് ബ്രൗസറിൻ്റെ വിലാസ ബാർ ഉപയോഗിച്ച് എളുപ്പത്തിൽ നിർണ്ണയിക്കാനാകും. അതിൽ ഒരു ചോദ്യചിഹ്നം പ്രത്യക്ഷപ്പെടുകയും വിലാസം ഇതുപോലെ കാണപ്പെടുകയും ചെയ്യുന്നുവെങ്കിൽ, ഇത് തീർച്ചയായും ഒരു GET ആണ്.

http://www.google.ru/search?q=%D1%81%D0%B8%D1%81%D1%8C%D0%BA%D0%B8&ie=utf-8

വിലാസ ബാറിലെ പാരാമീറ്ററുകളുടെ ഒരു തനതായ സംയോജനം ഒരു പേജിനെ അദ്വിതീയമായി തിരിച്ചറിയുന്നു, അതിനാൽ ?q=node/add, ?q=node എന്നീ വിലാസങ്ങളുള്ള പേജുകൾ വ്യത്യസ്തമായി കണക്കാക്കുന്നു. നിരവധി വെബ്‌സൈറ്റ് പേജുകൾ സൃഷ്‌ടിക്കാൻ ഉള്ളടക്ക മാനേജ്‌മെൻ്റ് സിസ്റ്റങ്ങൾ (CMS, കണ്ടൻ്റ് മാനേജ്‌മെൻ്റ് സിസ്റ്റം) ഈ സവിശേഷത ഉപയോഗിക്കുന്നു. വാസ്തവത്തിൽ, ഒരു GET അഭ്യർത്ഥന സ്വീകരിക്കുന്ന ഒരൊറ്റ ഫയൽ ഉപയോഗിക്കുന്നു, അതനുസരിച്ച്, പ്രമാണത്തിൻ്റെ ഉള്ളടക്കങ്ങൾ സൃഷ്ടിക്കുന്നു.

സൈറ്റുകളിലെ ഈ രീതികളുടെ സാധാരണ ആപ്ലിക്കേഷനുകളാണ് താഴെ ലിസ്റ്റ് ചെയ്തിരിക്കുന്നത്.

നേടുക

സെർവറിലേക്ക് ചെറിയ ടെക്സ്റ്റ് ഡാറ്റ കൈമാറുന്നു; സൈറ്റ് തിരയൽ.

തിരയൽ എഞ്ചിനുകളും സൈറ്റ് തിരയൽ ഫോമുകളും എല്ലായ്പ്പോഴും GET രീതി ഉപയോഗിച്ചാണ് അയയ്‌ക്കുന്നത്, ഇത് നിങ്ങളെ സുഹൃത്തുക്കളുമായി തിരയൽ ഫലങ്ങൾ പങ്കിടാനോ മെയിൽ വഴി ഒരു ലിങ്ക് അയയ്‌ക്കാനോ ഫോറത്തിൽ പോസ്റ്റുചെയ്യാനോ അനുവദിക്കുന്നു.

പോസ്റ്റ്

ഫയലുകൾ കൈമാറുന്നു (ഫോട്ടോകൾ, ആർക്കൈവുകൾ, പ്രോഗ്രാമുകൾ മുതലായവ); അഭിപ്രായങ്ങൾ അയയ്ക്കുന്നു; ഫോറം, ബ്ലോഗ് എന്നിവയിൽ സന്ദേശങ്ങൾ ചേർക്കുകയും എഡിറ്റുചെയ്യുകയും ചെയ്യുന്നു.

സ്ഥിരസ്ഥിതിയായി, നിലവിലെ ബ്രൗസർ ടാബിൽ ഫോം പ്രോസസ്സ് ചെയ്യുന്നു; എന്നിരുന്നാലും, ഫോം സമർപ്പിക്കുമ്പോൾ, നിങ്ങൾക്ക് ഈ പരാമീറ്റർ മാറ്റി പുതിയ ടാബിലോ ഫ്രെയിമിലോ ഫോം ഹാൻഡ്‌ലർ തുറക്കാം. ടാഗിൻ്റെ ടാർഗെറ്റ് ആട്രിബ്യൂട്ടിൻ്റെ മൂല്യമായ "സന്ദർഭ നാമം" വഴിയാണ് ഈ സ്വഭാവം വ്യക്തമാക്കുന്നത്. . ഒരു പുതിയ വിൻഡോയിലോ ടാബിലോ ഫോം തുറക്കുന്നതിനുള്ള ജനപ്രിയ മൂല്യങ്ങൾ _ശൂന്യമാണ്, കൂടാതെ ടാഗിൻ്റെ പേര് ആട്രിബ്യൂട്ട് ഉപയോഗിച്ച് വ്യക്തമാക്കിയ ഫ്രെയിമിൻ്റെ പേരും



ഈ ഉദാഹരണത്തിൽ, നിങ്ങൾ സമർപ്പിക്കുക ബട്ടണിൽ ക്ലിക്ക് ചെയ്യുമ്പോൾ, ഫോം സമർപ്പിക്കൽ ഫലം ഏരിയ എന്ന ഫ്രെയിമിൽ തുറക്കുന്നു.

ഫോം ഘടകങ്ങൾ പരമ്പരാഗതമായി ഒരു ടാഗിനുള്ളിൽ സ്ഥാപിച്ചിരിക്കുന്നു

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

ഉദാഹരണം 3: ഒരു ഫോം ഫീൽഡുകളിലേക്ക് ലിങ്ക് ചെയ്യുന്നു

HTML5 IE Cr Op Sa Fx

ഫോം



ഈ ഉദാഹരണത്തിൽ ടാഗ്

ഓത്ത് ഐഡൻ്റിഫയർ മുഖേന അദ്വിതീയമായി തിരിച്ചറിയുന്നു, കൂടാതെ ഫോം വഴി സമർപ്പിക്കേണ്ട ഫീൽഡുകളിലേക്ക് form="auth" ചേർക്കുന്നു. ഈ സാഹചര്യത്തിൽ, മൂലകങ്ങളുടെ സ്വഭാവം മാറില്ല; ബട്ടൺ ക്ലിക്കുചെയ്യുമ്പോൾ, ലോഗിൻ, പാസ്‌വേഡ് എന്നിവ handler.php ഹാൻഡ്‌ലറിലേക്ക് അയയ്ക്കും.

ഫോം ട്രാൻസ്ഫർ പാരാമീറ്ററുകൾ പരമ്പരാഗതമായി ടാഗിൽ വ്യക്തമാക്കിയിട്ടുണ്ടെങ്കിലും , അവ സമർപ്പിക്കാനുള്ള ബട്ടണുകളിലേക്കും അവ മാറ്റാവുന്നതാണ് (