ഒപ്പം ). ഇതിനായി, ഫോം പ്രിഫിക്സ് ഇല്ലാത്ത അനുബന്ധ ആട്രിബ്യൂട്ടുകളുടെ അനലോഗ് ആയ ആട്രിബ്യൂട്ടുകളുടെ ഒരു കൂട്ടം രൂപീകരണം, ഫോംമെത്തോഡ്, ഫോർമെൻക്ടൈപ്പ്, ഫോർമാറ്റർഗെറ്റ് എന്നിവ ഉപയോഗിക്കുന്നു. ഉദാഹരണം 4 ഈ ആട്രിബ്യൂട്ടുകളുടെ ഉപയോഗം കാണിക്കുന്നു.ഉദാഹരണം 4: ഒരു ഫോം സമർപ്പിക്കുന്നു
HTML5 IE Cr Op Sa Fx
ഒരു ഫോം സമർപ്പിക്കുന്നു
എല്ലാ പുതിയ ഫോം ആട്രിബ്യൂട്ടുകളും ചില ബ്രൗസറുകൾ പിന്തുണയ്ക്കുന്നില്ല, പ്രത്യേകിച്ച് Internet Explorer, Safari.
സൈറ്റിലെ ഏറ്റവും ജനപ്രിയമായ പ്രവർത്തനങ്ങളിലൊന്നാണ് ആപ്ലിക്കേഷൻ അല്ലെങ്കിൽ ഓർഡർ ഫോം, അതിൽ നിന്നുള്ള ഡാറ്റ സൈറ്റ് ഉടമയ്ക്ക് ഇമെയിൽ വഴി അയയ്ക്കുന്നു. ചട്ടം പോലെ, അത്തരം ഫോമുകൾ ലളിതവും ഡാറ്റാ എൻട്രിക്കായി രണ്ടോ മൂന്നോ ഫീൽഡുകൾ ഉൾക്കൊള്ളുന്നു. അത്തരമൊരു ഓർഡർ ഫോം എങ്ങനെ സൃഷ്ടിക്കാം? ഇതിന് HTML മാർക്ക്അപ്പ് ഭാഷയും PHP പ്രോഗ്രാമിംഗ് ഭാഷയും ആവശ്യമാണ്.
HTML മാർക്ക്അപ്പ് ഭാഷ തന്നെ ലളിതമാണ്; ചില ടാഗുകൾ എങ്ങനെ, എവിടെ ഇടണമെന്ന് നിങ്ങൾ കണ്ടെത്തേണ്ടതുണ്ട്. PHP പ്രോഗ്രാമിംഗ് ഭാഷയിൽ, കാര്യങ്ങൾ കുറച്ചുകൂടി സങ്കീർണ്ണമാണ്.
ഒരു പ്രോഗ്രാമർക്ക്, അത്തരമൊരു ഫോം സൃഷ്ടിക്കുന്നത് ബുദ്ധിമുട്ടുള്ള കാര്യമല്ല, എന്നാൽ ഒരു HTML ലേഔട്ട് ഡിസൈനർക്ക്, ചില പ്രവർത്തനങ്ങൾ ബുദ്ധിമുട്ടുള്ളതായി തോന്നിയേക്കാം.
html-ൽ ഒരു ഡാറ്റ സമർപ്പിക്കൽ ഫോം സൃഷ്ടിക്കുക ആദ്യ വരി ഇപ്രകാരമായിരിക്കും
ഇനി നമുക്ക് എല്ലാം ഒരുമിച്ച് ചേർക്കാം.
ഇനി ഫോമിലെ ഫീൽഡുകൾ നിർബന്ധമാക്കാം. ഞങ്ങൾക്ക് ഇനിപ്പറയുന്ന കോഡ് ഉണ്ട്:
HTML ഫോമിൽ നിന്ന് ഡാറ്റ സ്വീകരിക്കുന്ന ഒരു ഫയൽ സൃഷ്ടിക്കുക ഇത് send.php എന്ന ഫയലായിരിക്കും
ഫയലിൽ, ആദ്യ ഘട്ടത്തിൽ, നിങ്ങൾ പോസ്റ്റ് അറേയിൽ നിന്ന് ഡാറ്റ സ്വീകരിക്കേണ്ടതുണ്ട്. ഇത് ചെയ്യുന്നതിന്, ഞങ്ങൾ രണ്ട് വേരിയബിളുകൾ സൃഷ്ടിക്കുന്നു:
$fio = $_POST["fio"]; $ഇമെയിൽ = $_POST["ഇമെയിൽ"];
PHP-യിലെ വേരിയബിൾ പേരുകൾക്ക് മുമ്പായി ഒരു $ ചിഹ്നവും ഓരോ വരിയുടെയും അവസാനം ഒരു അർദ്ധവിരാമം സ്ഥാപിച്ചിരിക്കുന്നു. ഫോമിൽ നിന്നുള്ള ഡാറ്റ അയയ്ക്കുന്ന ഒരു അറേയാണ് $_POST. html ഫോമിൽ, അയയ്ക്കുന്ന രീതി method="post" എന്ന് വ്യക്തമാക്കിയിരിക്കുന്നു. അതിനാൽ, html ഫോമിൽ നിന്നുള്ള രണ്ട് വേരിയബിളുകൾ സ്വീകരിക്കുന്നു. നിങ്ങളുടെ സൈറ്റ് പരിരക്ഷിക്കുന്നതിന്, നിങ്ങൾ ഈ വേരിയബിളുകൾ നിരവധി ഫിൽട്ടറുകളിലൂടെ കടന്നുപോകേണ്ടതുണ്ട് - php ഫംഗ്ഷനുകൾ.
ഉപയോക്താവ് ഫോമിലേക്ക് ചേർക്കാൻ ശ്രമിക്കുന്ന എല്ലാ പ്രതീകങ്ങളെയും ആദ്യ ഫംഗ്ഷൻ പരിവർത്തനം ചെയ്യും:
ഈ സാഹചര്യത്തിൽ, പുതിയ വേരിയബിളുകൾ php-ൽ സൃഷ്ടിക്കപ്പെടുന്നില്ല, എന്നാൽ നിലവിലുള്ളവ ഉപയോഗിക്കുന്നു. കഥാപാത്രത്തെ രൂപാന്തരപ്പെടുത്തുക എന്നതാണ് ഫിൽട്ടർ ചെയ്യുന്നത് "<" в "<". Также он поступить с другими символами, встречающимися в html коде.
ഉപയോക്താവ് ഫോമിലേക്ക് ചേർക്കാൻ ശ്രമിക്കുകയാണെങ്കിൽ രണ്ടാമത്തെ ഫംഗ്ഷൻ URL ഡീകോഡ് ചെയ്യുന്നു.
$fio = urldecode($fio); $ ഇമെയിൽ = urldecode ($ ഇമെയിൽ);
മൂന്നാമത്തെ ഫംഗ്ഷൻ ഉപയോഗിച്ച്, വരിയുടെ തുടക്കത്തിലും അവസാനത്തിലും എന്തെങ്കിലും ഉണ്ടെങ്കിൽ സ്പെയ്സുകൾ ഞങ്ങൾ നീക്കം ചെയ്യും:
$ ഫിയോ = ട്രിം ($ ഫിയോ); $ ഇമെയിൽ = ട്രിം ($ ഇമെയിൽ);
php വേരിയബിളുകൾ ഫിൽട്ടർ ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്ന മറ്റ് ഫംഗ്ഷനുകളുണ്ട്. ഈ html ഇമെയിൽ സമർപ്പിക്കൽ ഫോമിലേക്ക് ഒരു ആക്രമണകാരി പ്രോഗ്രാം കോഡ് ചേർക്കാൻ ശ്രമിക്കുമെന്നത് നിങ്ങൾ എത്രത്തോളം ഉത്കണ്ഠാകുലരാണെന്നതിനെ ആശ്രയിച്ചിരിക്കും അവയുടെ ഉപയോഗം.
HTML ഫോമിൽ നിന്ന് PHP ഫയലിലേക്ക് കൈമാറിയ ഡാറ്റയുടെ മൂല്യനിർണ്ണയം
ഈ കോഡ് പ്രവർത്തിക്കുന്നുണ്ടോയെന്നും ഡാറ്റ കൈമാറ്റം ചെയ്യപ്പെടുന്നുണ്ടോ എന്നും പരിശോധിക്കുന്നതിന്, എക്കോ ഫംഗ്ഷൻ ഉപയോഗിച്ച് നിങ്ങൾക്ക് അത് സ്ക്രീനിൽ പ്രദർശിപ്പിക്കാൻ കഴിയും:
എക്കോ $ഫിയോ; പ്രതിധ്വനി " "; എക്കോ $ഫിയോ;
php വേരിയബിളുകളുടെ ഔട്ട്പുട്ട് വ്യത്യസ്ത ലൈനുകളായി വേർതിരിക്കുന്നതിന് ഇവിടെ രണ്ടാമത്തെ വരി ആവശ്യമാണ്.
ഒരു HTML ഫോമിൽ നിന്ന് ലഭിച്ച ഡാറ്റ PHP ഉപയോഗിച്ച് ഇമെയിലിലേക്ക് അയയ്ക്കുന്നു ഇമെയിൽ വഴി ഡാറ്റ അയയ്ക്കാൻ, നിങ്ങൾ PHP-യിലെ മെയിൽ ഫംഗ്ഷൻ ഉപയോഗിക്കേണ്ടതുണ്ട്.
മെയിൽ("ഏത് വിലാസത്തിലേക്കാണ് അയയ്ക്കേണ്ടത്", "കത്തിൻ്റെ വിഷയം", "സന്ദേശം (കത്തിൻ്റെ ബോഡി)","നിന്ന്: ഏത് ഇമെയിലിൽ നിന്നാണ് കത്ത് അയച്ചിരിക്കുന്നത് \r\n");
ഉദാഹരണത്തിന്, നിങ്ങൾ സൈറ്റ് ഉടമയുടെയോ മാനേജരുടെയോ ഇമെയിലിലേക്ക് ഡാറ്റ അയയ്ക്കേണ്ടതുണ്ട് [ഇമെയിൽ പരിരക്ഷിതം] .
കത്തിൻ്റെ വിഷയം വ്യക്തമായിരിക്കണം, കൂടാതെ HTML ഫോമിൽ ഉപയോക്താവ് വ്യക്തമാക്കിയത് കത്തിൻ്റെ സന്ദേശത്തിൽ അടങ്ങിയിരിക്കണം.
മെയിൽ(" [ഇമെയിൽ പരിരക്ഷിതം] ", "സൈറ്റിൽ നിന്നുള്ള അപേക്ഷ", "മുഴുവൻ പേര്:".$fio.". ഇ-മെയിൽ: ".$email ,"ഇതിൽ നിന്ന്: [ഇമെയിൽ പരിരക്ഷിതം] \r\n");
നിർദ്ദിഷ്ട ഇമെയിൽ വിലാസത്തിലേക്ക് PHP ഉപയോഗിച്ചാണോ ഫോം അയച്ചതെന്ന് പരിശോധിക്കുന്ന ഒരു വ്യവസ്ഥ ചേർക്കേണ്ടത് ആവശ്യമാണ്.
എങ്കിൽ (മെയിൽ(" [ഇമെയിൽ പരിരക്ഷിതം] ", "സൈറ്റിൽ നിന്നുള്ള ഓർഡർ", "മുഴുവൻ പേര്:".$fio.". ഇ-മെയിൽ: ".$email ,"ഇതിൽ നിന്ന്: [ഇമെയിൽ പരിരക്ഷിതം] \r\n")) { എക്കോ "സന്ദേശം വിജയകരമായി അയച്ചു"; ) വേറെ ( }
അതിനാൽ, HTML ഫോം ഡാറ്റ ഇമെയിലിലേക്ക് അയയ്ക്കുന്ന send.php ഫയലിൻ്റെ പ്രോഗ്രാം കോഡ് ഇതുപോലെ കാണപ്പെടും:
$fio = $_POST["fio"]; $ഇമെയിൽ = $_POST["ഇമെയിൽ"]; $fio = htmlspecialchars($fio); $email = htmlspecialchars($email); $fio = urldecode($fio); $ ഇമെയിൽ = urldecode ($ ഇമെയിൽ); $ ഫിയോ = ട്രിം ($ ഫിയോ); $ ഇമെയിൽ = ട്രിം ($ ഇമെയിൽ); //എക്കോ $ഫിയോ; //എക്കോ" "; //എക്കോ $ ഇമെയിൽ; എങ്കിൽ (മെയിൽ(" [ഇമെയിൽ പരിരക്ഷിതം] ", "സൈറ്റിൽ നിന്നുള്ള അപേക്ഷ", "മുഴുവൻ പേര്:".$fio.". ഇ-മെയിൽ: ".$email ,"ഇതിൽ നിന്ന്: [ഇമെയിൽ പരിരക്ഷിതം] \r\n")) (എക്കോ "സന്ദേശം വിജയകരമായി അയച്ചു"; ) വേറെ ( പ്രതിധ്വനി "സന്ദേശം അയയ്ക്കുമ്പോൾ പിശകുകൾ സംഭവിച്ചു"; }?>
ഫയലിലേക്ക് ഡാറ്റ കൈമാറ്റം ചെയ്യപ്പെടുന്നുണ്ടോ എന്ന് പരിശോധിക്കാൻ മൂന്ന് വരികൾ കമൻ്റ് ചെയ്തു. ആവശ്യമെങ്കിൽ, അവ നീക്കംചെയ്യാം, കാരണം അവ ഡീബഗ്ഗിംഗിന് മാത്രം ആവശ്യമായിരുന്നു.
ഒരു ഫയലിൽ ഫോം സമർപ്പിക്കുന്നതിന് ഞങ്ങൾ HTML, PHP കോഡ് സ്ഥാപിക്കുന്നു ഈ ലേഖനത്തിലെ അഭിപ്രായങ്ങളിൽ, ഇമെയിലിലേക്ക് ഡാറ്റ അയയ്ക്കുന്നതിനുള്ള HTML ഫോമും PHP കോഡും ഒരു ഫയലിലാണെന്നും രണ്ടല്ലെന്നും എങ്ങനെ ഉറപ്പാക്കാം എന്ന ചോദ്യം പലരും ചോദിക്കുന്നു.
ഈ വർക്ക് നടപ്പിലാക്കാൻ, നിങ്ങൾ send.php ഫയലിൽ ഫോമിൻ്റെ HTML കോഡ് സ്ഥാപിക്കുകയും POST അറേയിലെ വേരിയബിളുകളുടെ സാന്നിധ്യം പരിശോധിക്കുന്ന ഒരു വ്യവസ്ഥ ചേർക്കുകയും വേണം (ഈ അറേ ഫോമിൽ നിന്ന് അയച്ചതാണ്). അതായത്, അറേയിലെ വേരിയബിളുകൾ നിലവിലില്ലെങ്കിൽ, നിങ്ങൾ ഉപയോക്താവിനെ ഫോം കാണിക്കേണ്ടതുണ്ട്. അല്ലെങ്കിൽ, നിങ്ങൾ അറേയിൽ നിന്ന് ഡാറ്റ സ്വീകരിച്ച് സ്വീകർത്താവിന് അയയ്ക്കേണ്ടതുണ്ട്.
send.php ഫയലിലെ PHP കോഡ് എങ്ങനെ മാറ്റാമെന്ന് നോക്കാം:
സൈറ്റിൽ നിന്നുള്ള അപേക്ഷാ ഫോം //പോസ്റ്റ് അറേയിൽ വേരിയബിളുകൾ ഉണ്ടോയെന്ന് പരിശോധിക്കുക if(!isset($_POST["fio"]) കൂടാതെ !isset($_POST["email"]))( ?>
) വേറെ ( //ഫോം കാണിക്കുക $fio = $_POST["fio"]; $ഇമെയിൽ = $_POST["ഇമെയിൽ"]; $fio = htmlspecialchars($fio); $email = htmlspecialchars($email); $fio = urldecode($fio); $ ഇമെയിൽ = urldecode ($ ഇമെയിൽ); $ ഫിയോ = ട്രിം ($ ഫിയോ); $ ഇമെയിൽ = ട്രിം ($ ഇമെയിൽ); എങ്കിൽ (മെയിൽ(" [ഇമെയിൽ പരിരക്ഷിതം] ", "സൈറ്റിൽ നിന്നുള്ള അപേക്ഷ", "മുഴുവൻ പേര്:".$fio.". ഇ-മെയിൽ: ".$email ,"ഇതിൽ നിന്ന്: [ഇമെയിൽ പരിരക്ഷിതം] \r\n"))( പ്രതിധ്വനി "സന്ദേശം വിജയകരമായി അയച്ചു"; ) വേറെ ( പ്രതിധ്വനി "സന്ദേശം അയയ്ക്കുമ്പോൾ പിശകുകൾ സംഭവിച്ചു"; } } ?>
isset() PHP ഫംഗ്ഷൻ ഉപയോഗിച്ച് POST അറേയിൽ ഒരു വേരിയബിളിൻ്റെ അസ്തിത്വം ഞങ്ങൾ പരിശോധിക്കുന്നു. ഒരു അവസ്ഥയിൽ ഈ ഫംഗ്ഷന് മുമ്പുള്ള ആശ്ചര്യചിഹ്നം നിഷേധത്തെ അർത്ഥമാക്കുന്നു. അതായത്, വേരിയബിൾ നിലവിലില്ലെങ്കിൽ, നമ്മുടെ രൂപം കാണിക്കേണ്ടതുണ്ട്. ഞാൻ ആശ്ചര്യചിഹ്നം ഇട്ടില്ലെങ്കിൽ, വ്യവസ്ഥയുടെ അക്ഷരാർത്ഥത്തിൽ "ഉണ്ടെങ്കിൽ, ഫോം കാണിക്കുക" എന്നാണ് അർത്ഥമാക്കുന്നത്. ഞങ്ങളുടെ കാര്യത്തിൽ ഇത് തെറ്റാണ്. സ്വാഭാവികമായും, നിങ്ങൾക്ക് ഇതിനെ index.php എന്ന് പുനർനാമകരണം ചെയ്യാം. നിങ്ങൾ ഫയലിൻ്റെ പേര് മാറ്റുകയാണെങ്കിൽ, വരിയിലെ ഫയലിൻ്റെ പേര് പുനർനാമകരണം ചെയ്യാൻ മറക്കരുത്
ഈ കോഡ് ഒരു HTML ഫയലിൽ സംരക്ഷിച്ച് നിങ്ങളുടെ പ്രിയപ്പെട്ട ബ്രൗസർ ഉപയോഗിച്ച് കാണുന്നതിലൂടെ, നിങ്ങൾക്ക് പരിചിതമായ ഒരു HTML ഫോം കാണാം:
ടാഗ് ചെയ്യുക
, യഥാർത്ഥത്തിൽ ഫോം സജ്ജമാക്കുന്നു. അതിൻ്റെ ആട്രിബ്യൂട്ടുകൾ രണ്ടും ഓപ്ഷണൽ ആണ്:
പ്രവർത്തനം - ഫോം അയയ്ക്കുന്ന URL (പൂർണ്ണമോ ആപേക്ഷികമോ) വ്യക്തമാക്കുന്നു. ഈ ആട്രിബ്യൂട്ട് വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, മിക്ക ബ്രൗസറുകളും (കൂടുതൽ കൃത്യമായി പറഞ്ഞാൽ, എനിക്ക് അറിയാവുന്ന എല്ലാ ബ്രൗസറുകളും) ഫോം നിലവിലെ ഡോക്യുമെൻ്റിലേക്ക് അയയ്ക്കുന്നു, അതായത് "തനിക്ക് തന്നെ." ഇതൊരു സൗകര്യപ്രദമായ ചുരുക്കെഴുത്താണ്, എന്നാൽ HTML സ്റ്റാൻഡേർഡ് അനുസരിച്ച്, പ്രവർത്തന ആട്രിബ്യൂട്ട് ആവശ്യമാണ്.
രീതി - ഫോം സമർപ്പിക്കുന്ന രീതി. അവയിൽ രണ്ടെണ്ണം ഉണ്ട്. രീതി ആട്രിബ്യൂട്ട് വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, GET അനുമാനിക്കപ്പെടുന്നു.
ടാഗ് ചെയ്യുക - തരം ആട്രിബ്യൂട്ട് നിർവചിച്ചിരിക്കുന്ന ഒരു ഫോം ഘടകം വ്യക്തമാക്കുന്നു:
"ടെക്സ്റ്റ്" എന്ന മൂല്യം ഒരു ഒറ്റ-വരി ടെക്സ്റ്റ് ഇൻപുട്ട് ഫീൽഡ് വ്യക്തമാക്കുന്നു
"സമർപ്പിക്കുക" മൂല്യം ഒരു ബട്ടൺ വ്യക്തമാക്കുന്നു, അത് ക്ലിക്ക് ചെയ്യുമ്പോൾ, സെർവറിലേക്ക് ഫോം അയയ്ക്കുന്നു
മറ്റ് മൂല്യങ്ങൾ സാധ്യമാണ് (കൂടാതെ - ഒരു ഫോം ഘടകം വ്യക്തമാക്കുന്ന ഒരേയൊരു ടാഗ് അല്ല).
അപ്പോൾ നമ്മൾ "ശരി" ക്ലിക്ക് ചെയ്യുമ്പോൾ എന്ത് സംഭവിക്കും?
ബ്രൗസർ ഫോമിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്ന ഘടകങ്ങൾ നോക്കുകയും അവയുടെ പേരും മൂല്യ ആട്രിബ്യൂട്ടുകളിൽ നിന്നും ഫോം ഡാറ്റ നിർമ്മിക്കുകയും ചെയ്യുന്നു. വാസ്യ എന്ന പേര് നൽകിയെന്ന് പറയാം. ഈ സാഹചര്യത്തിൽ, ഫോം ഡാറ്റ name=Vasya&okbutton=OK ആണ്
ബ്രൗസർ സെർവറുമായി ഒരു കണക്ഷൻ സ്ഥാപിക്കുന്നു, ടാഗിൻ്റെ പ്രവർത്തന ആട്രിബ്യൂട്ടിൽ വ്യക്തമാക്കിയ പ്രമാണത്തിനായുള്ള അഭ്യർത്ഥന സെർവറിലേക്ക് അയയ്ക്കുന്നു.
ലഭിച്ച അഭ്യർത്ഥന സെർവർ വിശകലനം ചെയ്യുകയും പ്രതികരണം സൃഷ്ടിക്കുകയും ബ്രൗസറിലേക്ക് അയയ്ക്കുകയും കണക്ഷൻ അടയ്ക്കുകയും ചെയ്യുന്നു
സെർവറിൽ നിന്ന് ലഭിച്ച പ്രമാണം ബ്രൗസർ പ്രദർശിപ്പിക്കുന്നു
സമാന അഭ്യർത്ഥന സ്വമേധയാ അയയ്ക്കുന്നത് (ടെൽനെറ്റ് ഉപയോഗിച്ച്) ഇതുപോലെയാണ് (സൈറ്റിൻ്റെ ഡൊമെയ്ൻ നാമം 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 രീതി ഉപയോഗിക്കുന്നു. ഉപയോഗിക്കുന്നത്
8-12 വരികളിൽ കാണിച്ചിരിക്കുന്ന ഫോമിൽ രണ്ട് ഘടകങ്ങൾ അടങ്ങിയിരിക്കുന്നു: പേര്, ഒക്ബട്ടൺ. മെത്തേഡ് ആട്രിബ്യൂട്ട് POST ഫോം സമർപ്പിക്കൽ രീതി വ്യക്തമാക്കുന്നു, അതേസമയം ആക്ഷൻ ആട്രിബ്യൂട്ട് ഫോം അയച്ച URL വ്യക്തമാക്കുന്നു, കൂടാതെ PHP_SELF സെർവർ വേരിയബിളിൻ്റെ മൂല്യം കൊണ്ട് നിറഞ്ഞിരിക്കുന്നു - നിലവിൽ പ്രവർത്തിക്കുന്ന സ്ക്രിപ്റ്റിൻ്റെ വിലാസം.
=$_SERVER["PHP_SELF"]?>- വേണ്ടി ചുരുക്കിയ ഫോം echo $_SERVER["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-ൽ ഒരാൾക്ക് എളുപ്പത്തിൽ എഴുതാൻ കഴിയും
പുതിയ സാങ്കേതിക വിദ്യകളൊന്നും ഇവിടെ ഉപയോഗിക്കാറില്ല. അത് മനസിലാക്കുക, കോഡ് പ്രവർത്തിപ്പിക്കുക, പരിഷ്ക്കരിക്കാൻ ശ്രമിക്കുക...
അവസാനത്തെ ഉദാഹരണം മാറ്റാം, അങ്ങനെ ഉപയോക്താവിന് വീണ്ടും ഫീൽഡുകൾ പൂരിപ്പിക്കേണ്ടതില്ല. ഇത് ചെയ്യുന്നതിന്, ഞങ്ങൾ ഇപ്പോൾ നൽകിയ മൂല്യങ്ങൾ ഉപയോഗിച്ച് ഫോം ഘടകങ്ങളുടെ മൂല്യ ആട്രിബ്യൂട്ടുകൾ പൂരിപ്പിക്കുക.
$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 അഭ്യർത്ഥന ജീവിതചക്രം
ബ്രൗസർ കണക്ഷൻ തുറക്കുന്നു സെർവറിനൊപ്പം പേജ് സ്വീകരിക്കുന്നതിന് ബ്രൗസർ സെർവറിലേക്ക് ഒരു അഭ്യർത്ഥന അയയ്ക്കുന്നു സെർവർ ബ്രൗസറിലേക്ക് ഒരു പ്രതികരണം (മിക്കപ്പോഴും HTML കോഡ്) സൃഷ്ടിക്കുന്നു കണക്ഷൻ അടയ്ക്കുന്നു ബ്രൗസർ HTML കോഡ് പ്രോസസ്സ് ചെയ്യുകയും പേജ് പ്രദർശിപ്പിക്കുകയും ചെയ്യുന്നു
ഹൈലൈറ്റ് ചെയ്തവ ശ്രദ്ധിക്കുക ധീരമായ . നിങ്ങൾ അഭ്യർത്ഥിച്ച പേജ് സ്ക്രീനിൽ കാണുന്നതിന് മുമ്പുതന്നെ, സെർവറിലേക്കുള്ള കണക്ഷൻ അടച്ചു, അത് നിങ്ങളെ മറന്നു. നിങ്ങൾ മറ്റൊരു (അല്ലെങ്കിൽ അതേ) വിലാസം നൽകുമ്പോൾ, അല്ലെങ്കിൽ ഒരു ലിങ്കിൽ ക്ലിക്ക് ചെയ്യുക, അല്ലെങ്കിൽ ഒരു HTML ഫോം ബട്ടണിൽ ക്ലിക്ക് ചെയ്യുക, അതേ പാറ്റേൺ വീണ്ടും ആവർത്തിക്കും.
ഇത്തരത്തിലുള്ള ജോലിയെ വിളിക്കുന്നു "ക്ലയൻ്റ്-സെർവർ" . ഈ കേസിൽ ക്ലയൻ്റ് ബ്രൗസറാണ്.
അതിനാൽ, വെബ് സെർവറിലേക്കുള്ള കണക്ഷൻ ഏതാനും സെക്കൻഡുകൾ (അല്ലെങ്കിൽ സെക്കൻഡുകളുടെ ഭിന്നസംഖ്യകൾ) മാത്രമേ നിലനിൽക്കൂ - ഇത് ഒരു ലിങ്കിൽ (അല്ലെങ്കിൽ മറ്റ് തരത്തിലുള്ള അഭ്യർത്ഥനകൾ) ക്ലിക്ക് ചെയ്യുന്നതിനും പേജ് പ്രദർശിപ്പിക്കാൻ തുടങ്ങുന്നതിനും ഇടയിലുള്ള സമയമാണ്. മിക്ക ബ്രൗസറുകളും കണക്ഷൻ സമയത്ത് ഏതെങ്കിലും തരത്തിലുള്ള സൂചകങ്ങൾ പ്രദർശിപ്പിക്കുന്നു, ഉദാഹരണത്തിന്, MS Internet Explorer മുകളിൽ വലത് കോണിൽ ഒരു ആനിമേഷൻ പ്രദർശിപ്പിക്കുന്നു.
"ബ്ലാക്ക് ബോക്സ്" എന്ന എച്ച്ടിടിപിയുടെ ധാരണ എന്നെന്നേക്കുമായി ഇല്ലാതാക്കാൻ, നമുക്ക് ടെൽനെറ്റ് ഉപയോഗിച്ച് ഒരു ബ്രൗസറായി "നടിക്കാം":
നമുക്ക് ലോഞ്ച് ചെയ്യാം ടെൽനെറ്റ് ya.ru 80 ടെർമിനൽ വിൻഡോയിൽ ഇനിപ്പറയുന്നവ നൽകാം (ഇൻപുട്ട് പ്രദർശിപ്പിച്ചില്ലെങ്കിൽ, കുഴപ്പമില്ല):
നേടുക / HTTP/1.0 [ഇവിടെ എൻ്റർ അമർത്തുക] ഹോസ്റ്റ്: ya.ru [ഇവിടെ എൻ്റർ രണ്ടുതവണ അമർത്തുക]
എൻ്റർ അമർത്തുന്നത് സാധാരണയായി CR + LF എന്ന പ്രതീകങ്ങളുടെ സംയോജനവുമായി പൊരുത്തപ്പെടുന്നു \r\n . ഈ നൊട്ടേഷൻ താഴെ ഉപയോഗിക്കും.
http://ya.ru/ എന്ന പേജിൻ്റെ HTML കോഡ് സ്ക്രീനിലുടനീളം പ്രവർത്തിക്കും. നിങ്ങൾക്ക് കാണാനാകുന്നതുപോലെ, സങ്കീർണ്ണമായ ഒന്നും തന്നെയില്ല.
മെനുവിൽ നിന്ന് "കാണുക|ഉറവിടം" തിരഞ്ഞെടുത്ത് നിലവിലെ പേജിൻ്റെ സോഴ്സ് കോഡ് മിക്കവാറും ഏത് ബ്രൗസറിലും കാണാൻ കഴിയും.
ചിത്രങ്ങൾ, ഫ്രെയിമുകൾ - ഇവയെല്ലാം അധിക അഭ്യർത്ഥനകളാണ്, കൃത്യമായി സമാനമാണ്. യഥാർത്ഥത്തിൽ, ബ്രൗസർ വിൻഡോയിൽ ചിത്രങ്ങൾ എവിടെ നിന്നാണ് വരുന്നത്: HTML കോഡ് പാഴ്സ് ചെയ്യുമ്പോൾ (പ്രോസസ്സ് ചെയ്യുന്നു), ബ്രൗസർ https://i1.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 ഫോമുകൾ നേരിട്ടിട്ടുണ്ടാകാം:
നിങ്ങളുടെ പേര് നൽകുക: