വീട് കുട്ടികളുടെ ദന്തചികിത്സ എക്സിക്യൂട്ടീവ് രജിസ്ട്രേഷൻ php. ലളിതമായ ഉപയോക്തൃ രജിസ്ട്രേഷൻ സംവിധാനം

എക്സിക്യൂട്ടീവ് രജിസ്ട്രേഷൻ php. ലളിതമായ ഉപയോക്തൃ രജിസ്ട്രേഷൻ സംവിധാനം

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

മുഴുവൻ പ്രക്രിയയും രണ്ട് വലിയ ഭാഗങ്ങൾ ഉൾക്കൊള്ളുന്നു: ഉപയോക്തൃ രജിസ്ട്രേഷനും ഉപയോക്തൃ പ്രാമാണീകരണവും. ആദ്യ ഭാഗത്തിൽ, ഞങ്ങൾ രജിസ്ട്രേഷൻ ഫോമിൻ്റെ നിർമ്മാണവും ഡാറ്റ MySQL ഡാറ്റാബേസിൽ സംഭരിക്കുന്നതും കവർ ചെയ്യാൻ പോകുന്നു. രണ്ടാം ഭാഗത്ത്, ഞങ്ങൾ ലോഗിൻ ഫോം സൃഷ്‌ടിക്കുകയും സുരക്ഷിത ഏരിയയിൽ ഉപയോക്താക്കളെ ആക്‌സസ് ചെയ്യാൻ അനുവദിക്കുകയും ചെയ്യും.

കോഡ് ഡൗൺലോഡ് ചെയ്യുക

രജിസ്ട്രേഷൻ/ലോഗിൻ സിസ്റ്റത്തിനായുള്ള മുഴുവൻ സോഴ്സ് കോഡും ചുവടെയുള്ള ലിങ്കിൽ നിന്ന് നിങ്ങൾക്ക് ഡൗൺലോഡ് ചെയ്യാം:

കോൺഫിഗറേഷനും അപ്‌ലോഡും
ReadMe ഫയലിൽ വിശദമായ നിർദ്ദേശങ്ങൾ അടങ്ങിയിരിക്കുന്നു.

തുറക്കുക source\include\membersite_config.phpഒരു ടെക്സ്റ്റ് എഡിറ്ററിൽ ഫയൽ ചെയ്ത് കോൺഫിഗറേഷൻ അപ്ഡേറ്റ് ചെയ്യുക. (ഡാറ്റാബേസ് ലോഗിൻ, നിങ്ങളുടെ വെബ്‌സൈറ്റിൻ്റെ പേര്, നിങ്ങളുടെ ഇമെയിൽ വിലാസം മുതലായവ).

മുഴുവൻ ഡയറക്‌ടറി ഉള്ളടക്കങ്ങളും അപ്‌ലോഡ് ചെയ്യുക. ഫോം സമർപ്പിച്ചുകൊണ്ട് register.php പരിശോധിക്കുക.

രജിസ്ട്രേഷൻ ഫോം

ഒരു ഉപയോക്തൃ അക്കൗണ്ട് സൃഷ്‌ടിക്കുന്നതിന്, ഉപയോക്താവിൽ നിന്ന് ഞങ്ങൾക്ക് കുറഞ്ഞ അളവിലുള്ള വിവരങ്ങൾ ശേഖരിക്കേണ്ടതുണ്ട്. ഞങ്ങൾക്ക് അവൻ്റെ പേരും ഇമെയിൽ വിലാസവും ആവശ്യമുള്ള ഉപയോക്തൃനാമവും പാസ്‌വേഡും ആവശ്യമാണ്. തീർച്ചയായും, ഈ ഘട്ടത്തിൽ ഞങ്ങൾക്ക് കൂടുതൽ വിവരങ്ങൾ ആവശ്യപ്പെടാം, എന്നാൽ ഒരു നീണ്ട ഫോം എല്ലായ്പ്പോഴും ഒരു ടേൺ ഓഫ് ആണ്. അതുകൊണ്ട് നമുക്ക് ആ മേഖലകളിൽ മാത്രം ഒതുങ്ങാം.

രജിസ്ട്രേഷൻ ഫോം ഇതാ:

രജിസ്റ്റർ ചെയ്യുക

അതിനാൽ, പേര്, ഇമെയിൽ, പാസ്‌വേഡ് എന്നിവയ്‌ക്കായി ഞങ്ങൾക്ക് ടെക്‌സ്‌റ്റ് ഫീൽഡുകൾ ഉണ്ട്. മികച്ച ഉപയോഗക്ഷമതയ്ക്കായാണ് ഞങ്ങൾ ഉപയോഗിക്കുന്നത് എന്നത് ശ്രദ്ധിക്കുക.

ഫോം മൂല്യനിർണ്ണയം

ഈ ഘട്ടത്തിൽ കുറച്ച് ഫോം മൂല്യനിർണ്ണയ കോഡ് സ്ഥാപിക്കുന്നത് നല്ല ആശയമാണ്, അതിനാൽ ഉപയോക്തൃ അക്കൗണ്ട് സൃഷ്ടിക്കുന്നതിന് ആവശ്യമായ എല്ലാ ഡാറ്റയും ഞങ്ങളുടെ പക്കലുണ്ടെന്ന് ഞങ്ങൾ ഉറപ്പാക്കുന്നു. പേരും ഇമെയിലും പാസ്‌വേഡും പൂരിപ്പിച്ചിട്ടുണ്ടോയെന്നും ഇമെയിൽ ശരിയായ ഫോർമാറ്റിലാണോയെന്നും പരിശോധിക്കേണ്ടതുണ്ട്.

ഫോം സമർപ്പിക്കൽ കൈകാര്യം ചെയ്യുന്നു

ഇപ്പോൾ ഞങ്ങൾ സമർപ്പിച്ച ഫോം ഡാറ്റ കൈകാര്യം ചെയ്യണം.

ക്രമം ഇതാണ് (ഡൗൺലോഡ് ചെയ്ത ഉറവിടത്തിലെ fg_membersite.php ഫയൽ കാണുക):

ഫംഗ്ഷൻ RegisterUser() ( if(!isset($_POST["submitted"])) ( false return; ) $formvars = array(); if(!$this->ValidateRegistrationSubmission()) (തെറ്റായി തിരികെ നൽകുക; >CollectRegistrationSubmission($formvars); if(!$this->SaveToDatabase($formvars)) (തെറ്റായി തിരികെ നൽകുക; formvars); സത്യമായി മടങ്ങുക;

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

ഡാറ്റാബേസിൽ ഡാറ്റ സംരക്ഷിക്കുന്നു

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

ഫംഗ്‌ഷൻ SaveToDatabase(&$formvars) ( if(!$this->DBLogin()) ($this->HandleError("Database login Failed!"); false മടങ്ങുക; ) if(!$this->Ensuretable()) ( തെറ്റായി തിരികെ നൽകുക; $formvars,"username")) ( $this->HandleError("ഈ ഉപയോക്തൃനാമം ഇതിനകം ഉപയോഗിച്ചിട്ടുണ്ട്. ദയവായി മറ്റൊരു ഉപയോക്തൃനാമം ശ്രമിക്കുക"); തെറ്റായി നൽകുക; ) if(!$this->InsertIntoDB($formvars)) ( $this- >HandleError("ഡാറ്റാബേസിലേക്ക് തിരുകുന്നത് പരാജയപ്പെട്ടു!"

നിങ്ങൾ Memberite_config.php ഫയലിൽ ഡാറ്റാബേസ് ലോഗിൻ വിശദാംശങ്ങൾ ക്രമീകരിച്ചിട്ടുണ്ടെന്ന് ശ്രദ്ധിക്കുക. മിക്ക കേസുകളിലും, നിങ്ങൾക്ക് ഡാറ്റാബേസ് ഹോസ്റ്റിനായി "ലോക്കൽഹോസ്റ്റ്" ഉപയോഗിക്കാം.
ലോഗിൻ ചെയ്ത ശേഷം, പട്ടിക നിലവിലുണ്ടെന്ന് ഞങ്ങൾ ഉറപ്പാക്കുന്നു.(ഇല്ലെങ്കിൽ, സ്ക്രിപ്റ്റ് ആവശ്യമായ പട്ടിക സൃഷ്ടിക്കും).
തുടർന്ന് ഉപയോക്തൃനാമവും ഇമെയിലും അദ്വിതീയമാണെന്ന് ഞങ്ങൾ ഉറപ്പാക്കുന്നു. ഇത് അദ്വിതീയമല്ലെങ്കിൽ, ഞങ്ങൾ പിശക് ഉപയോക്താവിന് തിരികെ നൽകും.

ഡാറ്റാബേസ് പട്ടിക ഘടന

ഇതാണ് പട്ടികയുടെ ഘടന. fg_membersite.php ഫയലിലെ CreateTable() ഫംഗ്ഷൻ പട്ടിക സൃഷ്ടിക്കുന്നു. കോഡ് ഇതാ:

ഫംഗ്‌ഷൻ CreateTable() ( $qry = "ടേബിൾ സൃഷ്‌ടിക്കുക $this->tablename (". "id_user INT NULL AUTO_INCREMENT ," "name VARCHAR(128) NULL അല്ല ," "Email VARCHAR(64) ശൂന്യമല്ല ," " "phone_number VARCHAR(16) NULL അല്ല ," "Username VARCHAR(16) NULL അല്ല ," "password VARCHAR(32) NULL അല്ല ," "confirmcode VARCHAR(32) ," " ")"; if(!mysql_query($qry,$ this->കണക്ഷൻ)) ( $this->HandleDBError("പട്ടിക സൃഷ്‌ടിക്കുന്നതിൽ പിശക് \nഅന്വേഷണമായിരുന്നു\n $qry"); തെറ്റ് തിരികെ നൽകുക; ) ശരി തിരികെ നൽകുക )

id_user ഫീൽഡിൽ ഉപയോക്താവിൻ്റെ അദ്വിതീയ ഐഡി അടങ്ങിയിരിക്കും, കൂടാതെ ഇത് പട്ടികയുടെ പ്രാഥമിക കീയുമാണ്. പാസ്‌വേഡ് ഫീൽഡിനായി ഞങ്ങൾ 32 പ്രതീകങ്ങൾ അനുവദിക്കുന്നത് ശ്രദ്ധിക്കുക. ഞങ്ങൾ ഇത് ചെയ്യുന്നത്, ഒരു അധിക സുരക്ഷാ നടപടിയെന്ന നിലയിൽ, MD5 ഉപയോഗിച്ച് എൻക്രിപ്റ്റ് ചെയ്ത ഡാറ്റാബേസിൽ ഞങ്ങൾ രഹസ്യവാക്ക് സംഭരിക്കും. MD5 ഒരു വൺ-വേ എൻക്രിപ്ഷൻ രീതിയായതിനാൽ, ഉപയോക്താവ് പാസ്‌വേഡ് മറന്നുപോയാൽ അത് വീണ്ടെടുക്കാൻ ഞങ്ങൾക്ക് കഴിയില്ലെന്നത് ശ്രദ്ധിക്കുക.

പട്ടികയിലേക്ക് രജിസ്ട്രേഷൻ ചേർക്കുന്നു

ഡാറ്റാബേസിലേക്ക് ഡാറ്റ തിരുകാൻ ഞങ്ങൾ ഉപയോഗിക്കുന്ന കോഡ് ഇതാ. ഞങ്ങളുടെ എല്ലാ ഡാറ്റയും $formvars അറേയിൽ ലഭ്യമാകും.

ഫംഗ്‌ഷൻ InsertIntoDB(&$formvars) ( $confirmcode = $this->MakeConfirmationMd5($formvars["email"]); $insert_query = "".$this->ടേബിൾ നെയിമിലേക്ക് തിരുകുക."(പേര്, ഇമെയിൽ, ഉപയോക്തൃനാമം, പാസ്‌വേഡ്, കൺഫേംകോഡ്) മൂല്യങ്ങൾ ("" . $this->SanitizeForSQL($formvars["name"]) . "", "" . $this->SanitizeForSQL($formvars["email"]) . "", "" . $insert_query ,$this->കണക്ഷൻ)) ($this->HandleDBError("ടേബിളിൽ ഡാറ്റ ചേർക്കുന്നതിൽ പിശക്\nquery:$insert_query"); തെറ്റ് തിരികെ നൽകുക; ) ശരി തിരികെ നൽകുക )

ഡാറ്റാബേസിലേക്ക് ചേർക്കുന്നതിന് മുമ്പ് പാസ്‌വേഡ് എൻക്രിപ്റ്റ് ചെയ്യുന്നതിന് ഞങ്ങൾ PHP ഫംഗ്‌ഷൻ md5() ഉപയോഗിക്കുന്നു എന്നത് ശ്രദ്ധിക്കുക.
കൂടാതെ, ഉപയോക്താവിൻ്റെ ഇമെയിൽ വിലാസത്തിൽ നിന്ന് ഞങ്ങൾ അദ്വിതീയ സ്ഥിരീകരണ കോഡ് ഉണ്ടാക്കുന്നു.

ഇമെയിലുകൾ അയയ്ക്കുന്നു

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

ഫംഗ്ഷൻ SendUserConfirmationEmail(&$formvars) ($mailer = പുതിയ PHPMailer(); $mailer->CharSet = "utf-8"; $mailer->AddAddress($formvars["email"],$formvars["name"]) ; $mailer->Subject = "$this->Sitename; ])); $confirm_url = $this->GetAbsoluteURLFolder()." n\r\n". "".$this->സൈറ്റിൻ്റെ പേര്."\r\n" എന്നതിനൊപ്പം രജിസ്റ്റർ ചെയ്തതിന് നന്ദി. "നിങ്ങളുടെ രജിസ്ട്രേഷൻ സ്ഥിരീകരിക്കുന്നതിന് ദയവായി താഴെയുള്ള ലിങ്കിൽ ക്ലിക്ക് ചെയ്യുക.\r\n." "$confirm_url\r \n". "\r\n". "ആശംസകളോടെ,\r\n". "വെബ്മാസ്റ്റർ\r\n". $this->സൈറ്റിൻ്റെ പേര്; if(!$mailer->Send()) ( $this-> HandleError ("റജിസ്ട്രേഷൻ സ്ഥിരീകരണ ഇമെയിൽ അയയ്ക്കുന്നതിൽ പരാജയപ്പെട്ടു."

അപ്ഡേറ്റുകൾ

2012 ജനുവരി 9
പാസ്‌വേഡ് പുനഃസജ്ജമാക്കുക/പാസ്‌വേഡ് മാറ്റുക സവിശേഷതകൾ ചേർത്തു
കോഡ് ഇപ്പോൾ GitHub-ൽ പങ്കിട്ടു.

തിരികെ സ്വാഗതംUserFullName(); ?>!

ലൈസൻസ്


LGPL ലൈസൻസിന് കീഴിലാണ് കോഡ് പങ്കിടുന്നത്. വാണിജ്യപരമോ അല്ലാത്തതോ ആയ വെബ്‌സൈറ്റുകളിൽ നിങ്ങൾക്ക് ഇത് സ്വതന്ത്രമായി ഉപയോഗിക്കാം.

അനുബന്ധ പോസ്റ്റുകളൊന്നുമില്ല.

ഈ എൻട്രിയിലെ അഭിപ്രായങ്ങൾ അടച്ചിരിക്കുന്നു.

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

മിക്ക കേസുകളിലും, കൂടുതൽ ലളിതമായ രജിസ്ട്രേഷൻ സംവിധാനം ഉപയോഗിക്കുന്നു, അത് ഒരു ഫയലിൽ php ൽ എഴുതിയിരിക്കുന്നു register.php.

അതിനാൽ, ഞങ്ങൾ അൽപ്പം വ്യതിചലിച്ചു, ഇപ്പോൾ ഞങ്ങൾ രജിസ്ട്രേഷൻ ഫയലിൽ സൂക്ഷ്മമായി പരിശോധിക്കും.

Register.php ഫയൽ

ഇത് നിങ്ങളുടെ കൂടുതൽ സമയം എടുക്കുന്നില്ലെന്ന് ഉറപ്പാക്കാൻ, ഉപയോക്താക്കളിൽ നിന്ന് ചുരുങ്ങിയ കോൺടാക്റ്റ് വിവരങ്ങൾ സ്വീകരിച്ച് അവരെ ശേഖരിക്കുന്ന ഒരു സിസ്റ്റം ഞങ്ങൾ സൃഷ്ടിക്കും. ഈ സാഹചര്യത്തിൽ, ഞങ്ങൾ എല്ലാം mysql ഡാറ്റാബേസിലേക്ക് നൽകും. ഡാറ്റാബേസിൻ്റെ ഉയർന്ന വേഗതയ്ക്കായി, MyISAM ഫോർമാറ്റിലും utf-8 എൻകോഡിംഗിലും ഞങ്ങൾ ഉപയോക്താക്കളുടെ പട്ടിക സൃഷ്ടിക്കും.

കുറിപ്പ്! എല്ലാ സ്ക്രിപ്റ്റുകളും എല്ലായ്പ്പോഴും ഒരേ എൻകോഡിംഗിൽ എഴുതിയിരിക്കണം. എല്ലാ സൈറ്റ് ഫയലുകളും MySql ഡാറ്റാബേസും ഒരേ എൻകോഡിംഗിലായിരിക്കണം. UTF-8, Windows-1251 എന്നിവയാണ് ഏറ്റവും സാധാരണമായ എൻകോഡിംഗുകൾ.

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

സ്ക്രിപ്റ്റ് തന്നെ എങ്ങനെ പ്രവർത്തിക്കും?

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

ഇവിടെ തിരക്കഥ തന്നെ. എല്ലാം ഒരു ഫയലിൽ രേഖപ്പെടുത്തിയിട്ടുണ്ട് register.php:

! `; // ചുവന്ന ചോദ്യചിഹ്നം $sha=$sh."scripts/pro/"; //പ്രധാന ഫോൾഡറിലേക്കുള്ള പാത $bg=` bgcolor="#E1FFEB"`; // വരികളുടെ പശ്ചാത്തല നിറം?> ഉദാഹരണ രജിസ്ട്രേഷൻ സ്ക്രിപ്റ്റ് register.php style.css" />

ഈ സാഹചര്യത്തിൽ, സ്ക്രിപ്റ്റ് സ്വയം സൂചിപ്പിക്കുന്നു. കൂടാതെ ഇത് ഫോമിൽ നൽകിയ ഡാറ്റയുടെ ഒരു ഫോമും പ്രോസസറുമാണ്. ഫയൽ ഒരു zip ആർക്കൈവ് ആയി കംപ്രസ്സുചെയ്‌തിരിക്കുന്നു, അതിൽ ഒരു കോൺഫിഗറേഷൻ ഫയൽ config.php, ഒരു ഉപയോക്തൃ ഡാറ്റാബേസ് ഡംപ്, ഓക്സിലറി ഫംഗ്‌ഷനുകൾ അടങ്ങുന്ന ഒരു ഫയൽ, functions.php, ഒരു സ്റ്റൈൽ ഫയൽ, style.css, register.php ഫയൽ എന്നിവ അടങ്ങിയിരിക്കുന്നു. ക്യാപ്‌ച ചിഹ്നങ്ങളുടെ പ്രവർത്തനത്തിനും ഉൽപ്പാദനത്തിനും ഉത്തരവാദികളായ നിരവധി ഫയലുകളും ഉണ്ട്.

ഹലോ! ഇപ്പോൾ ഞങ്ങൾ PHP + MySQL ഉപയോഗിച്ച് സൈറ്റിലെ ഏറ്റവും ലളിതമായ രജിസ്ട്രേഷൻ നടപ്പിലാക്കാൻ ശ്രമിക്കും. ഇത് ചെയ്യുന്നതിന്, നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ അപ്പാച്ചെ ഇൻസ്റ്റാൾ ചെയ്യണം. ഞങ്ങളുടെ സ്ക്രിപ്റ്റിൻ്റെ പ്രവർത്തന തത്വം ചുവടെ കാണിച്ചിരിക്കുന്നു.

1. ഡാറ്റാബേസിൽ ഉപയോക്തൃ പട്ടിക സൃഷ്ടിച്ചുകൊണ്ട് നമുക്ക് ആരംഭിക്കാം. അതിൽ ഉപയോക്തൃ ഡാറ്റ (ലോഗിൻ, പാസ്‌വേഡ്) അടങ്ങിയിരിക്കും. നമുക്ക് phpmyadmin ലേക്ക് പോകാം (നിങ്ങൾ നിങ്ങളുടെ പിസിയിൽ ഒരു ഡാറ്റാബേസ് സൃഷ്ടിക്കുകയാണെങ്കിൽ http://localhost/phpmyadmin/). ഒരു പട്ടിക ഉണ്ടാക്കുക ഉപയോക്താക്കൾ, ഇതിന് 3 ഫീൽഡുകൾ ഉണ്ടാകും.

ഞാൻ ഇത് mysql ഡാറ്റാബേസിൽ സൃഷ്ടിക്കുന്നു, നിങ്ങൾക്ക് ഇത് മറ്റൊരു ഡാറ്റാബേസിൽ സൃഷ്ടിക്കാൻ കഴിയും. അടുത്തതായി, ചിത്രത്തിൽ കാണിച്ചിരിക്കുന്നതുപോലെ മൂല്യങ്ങൾ സജ്ജമാക്കുക:

2. ഈ പട്ടികയിലേക്ക് ഒരു കണക്ഷൻ ആവശ്യമാണ്.നമുക്ക് ഒരു ഫയൽ ഉണ്ടാക്കാം bd.php. അതിൻ്റെ ഉള്ളടക്കം:

$db = mysql_connect("നിങ്ങളുടെ MySQL സെർവർ","ഈ സെർവറിനായി ലോഗിൻ ചെയ്യുക","ഈ സെർവറിനുള്ള പാസ്‌വേഡ്");
mysql_select_db ("നാം ബന്ധിപ്പിക്കുന്ന ഡാറ്റാബേസിൻ്റെ പേര്", $db);
?>

എൻ്റെ കാര്യത്തിൽ, ഇത് ഇതുപോലെ കാണപ്പെടുന്നു:

$db = mysql_connect("localhost","user","1234");
mysql_select_db("mysql",$db);
?>

രക്ഷിക്കും bd.php.
കൊള്ളാം! ഞങ്ങൾക്ക് ഡാറ്റാബേസിൽ ഒരു ടേബിളും അതിലേക്ക് ഒരു കണക്ഷനും ഉണ്ട്. ഉപയോക്താക്കൾ അവരുടെ ഡാറ്റ ഉപേക്ഷിക്കുന്ന ഒരു പേജ് ഇപ്പോൾ നിങ്ങൾക്ക് സൃഷ്ടിക്കാൻ തുടങ്ങാം.

3. ഉള്ളടക്കങ്ങൾ ഉപയോഗിച്ച് ഒരു reg.php ഫയൽ സൃഷ്ടിക്കുക (എല്ലാ അഭിപ്രായങ്ങളും ഉള്ളിൽ):



രജിസ്ട്രേഷൻ


രജിസ്ട്രേഷൻ


















4. ഒരു ഫയൽ സൃഷ്ടിക്കുക, ഇത് ഡാറ്റാബേസിലേക്ക് ഡാറ്റ നൽകുകയും ഉപയോക്താവിനെ സംരക്ഷിക്കുകയും ചെയ്യും. save_user.php(അകത്തെ അഭിപ്രായങ്ങൾ):



{
}
//ലോഗിനും പാസ്‌വേഡും നൽകിയിട്ടുണ്ടെങ്കിൽ, ടാഗുകളും സ്‌ക്രിപ്റ്റുകളും പ്രവർത്തിക്കാതിരിക്കാൻ ഞങ്ങൾ അവ പ്രോസസ്സ് ചെയ്യും, ആളുകൾ എന്ത് നൽകുമെന്ന് നിങ്ങൾക്കറിയില്ല


//അധിക ഇടങ്ങൾ നീക്കം ചെയ്യുക
$ലോഗിൻ = ട്രിം ($ലോഗിൻ);
$ പാസ്വേഡ് = ട്രിം ($ പാസ്വേഡ്);
// ഡാറ്റാബേസിലേക്ക് ബന്ധിപ്പിക്കുക
// ഒരേ ലോഗിൻ ഉള്ള ഒരു ഉപയോക്താവിൻ്റെ നിലനിൽപ്പ് പരിശോധിക്കുക
$ഫലം = mysql_query("ലോഗിൻ "$ലോഗിൻ"",$db) ഉപയോക്താക്കളിൽ നിന്ന് ഐഡി തിരഞ്ഞെടുക്കുക;
എങ്കിൽ (!ശൂന്യ($myrow["id"])) (
എക്സിറ്റ് ("ക്ഷമിക്കണം, നിങ്ങൾ നൽകിയ ലോഗിൻ ഇതിനകം രജിസ്റ്റർ ചെയ്തിട്ടുണ്ട്. ദയവായി മറ്റൊരു ലോഗിൻ നൽകുക.");
}
// ഇത് അങ്ങനെയല്ലെങ്കിൽ, ഡാറ്റ സംരക്ഷിക്കുക
$result2 = mysql_query("ഉപയോക്താക്കൾക്ക് ഇൻസേർട്ട് ചെയ്യുക (ലോഗിൻ, പാസ്‌വേഡ്) മൂല്യങ്ങൾ("$ലോഗിൻ","$പാസ്‌വേഡ്")");
// പിശകുകൾ ഉണ്ടെങ്കിൽ പരിശോധിക്കുക
എങ്കിൽ ($result2=="TRUE")
{
echo "നിങ്ങൾ വിജയകരമായി രജിസ്റ്റർ ചെയ്തു! ഇപ്പോൾ നിങ്ങൾക്ക് സൈറ്റിൽ പ്രവേശിക്കാം. ഹോം പേജ്";
}
വേറെ (
echo "പിശക്! നിങ്ങൾ രജിസ്റ്റർ ചെയ്തിട്ടില്ല.";
}
?>

5. ഇപ്പോൾ ഞങ്ങളുടെ ഉപയോക്താക്കൾക്ക് രജിസ്റ്റർ ചെയ്യാം!അടുത്തതായി, ഇതിനകം രജിസ്റ്റർ ചെയ്ത ഉപയോക്താക്കൾക്ക് സൈറ്റിൽ പ്രവേശിക്കുന്നതിന് നിങ്ങൾ ഒരു "വാതിൽ" സൃഷ്ടിക്കേണ്ടതുണ്ട്. index.php(അകത്തെ അഭിപ്രായങ്ങൾ):

// മുഴുവൻ നടപടിക്രമവും സെഷനുകളിൽ പ്രവർത്തിക്കുന്നു. സൈറ്റിലായിരിക്കുമ്പോൾ ഉപയോക്താവിൻ്റെ ഡാറ്റ സംഭരിക്കുന്നത് ഇവിടെയാണ്. പേജിൻ്റെ തുടക്കത്തിൽ തന്നെ അവ സമാരംഭിക്കുന്നത് വളരെ പ്രധാനമാണ് !!!
സെഷൻ_ആരംഭം();
?>


ഹോം പേജ്


ഹോം പേജ്











രജിസ്റ്റർ ചെയ്യുക



// ലോഗിൻ, യൂസർ ഐഡി വേരിയബിളുകൾ ശൂന്യമാണോ എന്ന് പരിശോധിക്കുക
($_SESSION["ലോഗിൻ"]) അല്ലെങ്കിൽ ശൂന്യമാണെങ്കിൽ($_SESSION["id"]))
{
// ശൂന്യമാണെങ്കിൽ, ഞങ്ങൾ ലിങ്ക് പ്രദർശിപ്പിക്കില്ല
echo "നിങ്ങൾ ഒരു അതിഥിയായി ലോഗിൻ ചെയ്തിരിക്കുന്നു
ഈ ലിങ്ക് രജിസ്റ്റർ ചെയ്ത ഉപയോക്താക്കൾക്ക് മാത്രമേ ലഭ്യമാകൂ";
}
വേറെ
{

ഫയലിൽ index.phpരജിസ്റ്റർ ചെയ്ത ഉപയോക്താക്കൾക്ക് മാത്രം തുറക്കുന്ന ഒരു ലിങ്ക് ഞങ്ങൾ പ്രദർശിപ്പിക്കും. സ്ക്രിപ്റ്റിൻ്റെ മുഴുവൻ പോയിൻ്റും ഇതാണ് - ഏതെങ്കിലും ഡാറ്റയിലേക്കുള്ള ആക്സസ് പരിമിതപ്പെടുത്താൻ.

6. നൽകിയ ലോഗിൻ, പാസ്‌വേഡ് എന്നിവ പരിശോധിച്ചുറപ്പിക്കുന്ന ഒരു ഫയൽ അവശേഷിക്കുന്നു. testreg.php (അകത്തെ അഭിപ്രായങ്ങൾ):

session_start();// മുഴുവൻ നടപടിക്രമവും സെഷനുകളിൽ പ്രവർത്തിക്കുന്നു. സൈറ്റിലായിരിക്കുമ്പോൾ ഉപയോക്താവിൻ്റെ ഡാറ്റ സംഭരിക്കുന്നത് ഇവിടെയാണ്. പേജിൻ്റെ തുടക്കത്തിൽ തന്നെ അവ സമാരംഭിക്കുന്നത് വളരെ പ്രധാനമാണ് !!!
എങ്കിൽ (ഇസെറ്റ്($_POST["ലോഗിൻ"])) ($ലോഗിൻ = $_POST["ലോഗിൻ"]; എങ്കിൽ ($ലോഗിൻ == "") (അൺസെറ്റ്($ലോഗിൻ);) ) //നൽകിയ ലോഗിൻ നൽകുക $ലോഗിൻ വേരിയബിളിലേക്ക് ഉപയോക്താവ്, അത് ശൂന്യമാണെങ്കിൽ, വേരിയബിൾ നശിപ്പിക്കുക
എങ്കിൽ (ഇസെറ്റ്($_POST["പാസ്‌വേഡ്"])) ( $പാസ്‌വേഡ്=$_POST["പാസ്‌വേഡ്"]; എങ്കിൽ ($പാസ്‌വേഡ് =="") (അൺസെറ്റ്($പാസ്‌വേഡ്);) )
//ഉപയോക്താവ് നൽകിയ പാസ്‌വേഡ് $password വേരിയബിളിൽ ഇടുക, അത് ശൂന്യമാണെങ്കിൽ, വേരിയബിൾ നശിപ്പിക്കുക
എങ്കിൽ (ശൂന്യമായ($ലോഗിൻ) അല്ലെങ്കിൽ ശൂന്യമായ($പാസ്‌വേഡ്)) //ഉപയോക്താവ് ഒരു ലോഗിൻ അല്ലെങ്കിൽ പാസ്‌വേഡ് നൽകിയില്ലെങ്കിൽ, ഞങ്ങൾ ഒരു പിശക് നൽകി സ്‌ക്രിപ്റ്റ് നിർത്തുന്നു
{
എക്സിറ്റ് ("നിങ്ങൾ എല്ലാ വിവരങ്ങളും നൽകിയിട്ടില്ല, തിരികെ പോയി എല്ലാ ഫീൽഡുകളും പൂരിപ്പിക്കുക!");
}
//ലോഗിനും പാസ്‌വേഡും നൽകിയിട്ടുണ്ടെങ്കിൽ, ടാഗുകളും സ്‌ക്രിപ്റ്റുകളും പ്രവർത്തിക്കാതിരിക്കാൻ ഞങ്ങൾ അവ പ്രോസസ്സ് ചെയ്യും, ആളുകൾ എന്ത് നൽകുമെന്ന് നിങ്ങൾക്കറിയില്ല
$ലോഗിൻ = സ്ട്രിപ്പുകൾ ($ലോഗിൻ);
$ലോഗിൻ = htmlspecialchars($login);
$പാസ്‌വേഡ് = സ്ട്രിപ്പുകൾ ($പാസ്‌വേഡ്);
$password = htmlspecialchars($password);
//അധിക ഇടങ്ങൾ നീക്കം ചെയ്യുക
$ലോഗിൻ = ട്രിം ($ലോഗിൻ);
$ പാസ്വേഡ് = ട്രിം ($ പാസ്വേഡ്);
// ഡാറ്റാബേസിലേക്ക് ബന്ധിപ്പിക്കുക
ഉൾപ്പെടുത്തുക("bd.php");// bd.php ഫയൽ മറ്റുള്ളവയുടെ അതേ ഫോൾഡറിലായിരിക്കണം, അങ്ങനെയല്ലെങ്കിൽ പാത മാറ്റുക

$ഫലം = mysql_query("ലോഗിൻ "$ലോഗിൻ"",$db) ഉപയോക്താക്കളിൽ നിന്ന് തിരഞ്ഞെടുക്കുക; //നൽകിയ ലോഗിൻ ഉപയോഗിച്ച് ഉപയോക്താവിനെക്കുറിച്ചുള്ള എല്ലാ ഡാറ്റയും ഡാറ്റാബേസിൽ നിന്ന് വീണ്ടെടുക്കുക
$myrow = mysql_fetch_array($ഫലം);
ശൂന്യമാണെങ്കിൽ ($myrow["പാസ്‌വേഡ്"]))
{
//നൽകിയ ലോഗിൻ ഉള്ള ഉപയോക്താവ് നിലവിലില്ലെങ്കിൽ
}
വേറെ (
// നിലവിലുണ്ടെങ്കിൽ, പാസ്‌വേഡുകൾ പരിശോധിക്കുക
എങ്കിൽ ($myrow["password"]==$password) (
//പാസ്‌വേഡുകൾ പൊരുത്തപ്പെടുന്നെങ്കിൽ, ഞങ്ങൾ ഉപയോക്താവിനായി ഒരു സെഷൻ ആരംഭിക്കും! നിങ്ങൾക്ക് അദ്ദേഹത്തെ അഭിനന്ദിക്കാം, അവൻ അകത്തേക്ക് കയറി!
$_SESSION["login"]=$myrow["login"];
$_SESSION["id"]=$myrow["id"];//ഈ ഡാറ്റ പലപ്പോഴും ഉപയോഗിക്കാറുണ്ട്, അതിനാൽ ലോഗിൻ ചെയ്‌ത ഉപയോക്താവ് അത് "അവനോടൊപ്പം കൊണ്ടുപോകും"
echo "നിങ്ങൾ സൈറ്റിൽ വിജയകരമായി പ്രവേശിച്ചു! ഹോം പേജ്";
}
വേറെ (
//പാസ്‌വേഡുകൾ പൊരുത്തപ്പെടുന്നില്ലെങ്കിൽ

പുറത്തുകടക്കുക ("ക്ഷമിക്കണം, നിങ്ങൾ നൽകിയ ലോഗിൻ അല്ലെങ്കിൽ പാസ്‌വേഡ് തെറ്റാണ്.");
}
}
?>

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

ഞാൻ എല്ലാം പരിശോധിച്ചു, അത് ശരിയായി പ്രവർത്തിക്കുന്നു!

ഒക്‌ടോബർ അവസാനം ഇൻറർനെറ്റിൽ പൊട്ടിത്തെറിച്ച ജനപ്രിയ CMS ജൂംലയിലെ ഒരു നിർണായകമായ 1-ദിവസത്തെ ദുർബലതയുടെ ചൂഷണം ഇന്ന് നമ്മൾ നോക്കും. ഞങ്ങൾ അക്കങ്ങൾ ഉപയോഗിച്ച് കേടുപാടുകളെക്കുറിച്ച് സംസാരിക്കും CVE-2016-8869, CVE-2016-8870ഒപ്പം CVE-2016-9081. മൂന്ന് വർഷവും ചട്ടക്കൂടിൻ്റെ ആഴങ്ങളിൽ തളർന്ന്, ചിറകുകൾക്കുള്ളിൽ കാത്തിരുന്ന ഒരു കോഡിൽ നിന്നാണ് ഈ മൂന്ന് പേരും വരുന്നത്. മോണിറ്ററുകളുടെ വെളിച്ചത്തിൽ നിന്ന് കണ്ണുകൾ ചുവന്നതും കീബോർഡുകളിൽ ബ്രെഡ് നുറുക്കുകൾ നിറഞ്ഞതുമായ ഏറ്റവും ധീരരും ധീരരുമായ ഡെവലപ്പർമാർക്ക് മാത്രമേ പ്രകോപിതരായ ദുഷ്ടാത്മാക്കളെ വെല്ലുവിളിക്കാനും പരിഹാരങ്ങളുടെ ബലിപീഠത്തിൽ തലയിടാനും കഴിഞ്ഞുള്ളൂ.

മുന്നറിയിപ്പ്

എല്ലാ വിവരങ്ങളും വിവര ആവശ്യങ്ങൾക്കായി മാത്രമാണ് നൽകിയിരിക്കുന്നത്. ഈ ലേഖനത്തിൻ്റെ സാമഗ്രികൾ മൂലമുണ്ടായേക്കാവുന്ന എന്തെങ്കിലും ദോഷങ്ങൾക്ക് എഡിറ്റർമാരോ രചയിതാവോ ഉത്തരവാദികളല്ല.

എല്ലാം ആരംഭിച്ചത് എവിടെയാണ്

ഒക്‌ടോബർ 6, 2016-ന്, ഡെമിസ് പാൽമ സ്റ്റാക്ക് എക്‌സ്‌ചേഞ്ചിൽ ഒരു വിഷയം സൃഷ്‌ടിച്ചു, അതിൽ അദ്ദേഹം ചോദിച്ചു: എന്തുകൊണ്ടാണ്, ജൂംല പതിപ്പ് 3.6-ൽ ഒരേ പേരിൽ രജിസ്റ്റർ() ഉള്ള ഉപയോക്താക്കളെ രജിസ്റ്റർ ചെയ്യുന്നതിന് രണ്ട് രീതികൾ ഉള്ളത്? ആദ്യത്തേത് UsersControllerRegistration കൺട്രോളറിലും രണ്ടാമത്തേത് UsersControllerUser കൺട്രോളറിലും ആണ്. UsersControllerUser::register() രീതി എവിടെയെങ്കിലും ഉപയോഗിച്ചിട്ടുണ്ടോ, അതോ പഴയ ലോജിക്കിൽ നിന്ന് അവശേഷിച്ച പരിണാമപരമായ അനാക്രോണിസം മാത്രമാണോ ഡാമിസിന് അറിയേണ്ടത്. ഈ രീതി ഒരു വീക്ഷണവും ഉപയോഗിക്കുന്നില്ലെങ്കിലും, ഒരു ക്രാഫ്റ്റ് ചെയ്ത അന്വേഷണത്തിലൂടെ ഇത് വിളിക്കാമെന്നായിരുന്നു അദ്ദേഹത്തിൻ്റെ ആശങ്ക. ഇറ്റോക്‌ടോപ്പസ് എന്ന വിളിപ്പേരിലുള്ള ഒരു ഡെവലപ്പറിൽ നിന്ന് എനിക്ക് ഒരു പ്രതികരണം ലഭിച്ചു, അദ്ദേഹം സ്ഥിരീകരിച്ചു: പ്രശ്നം ശരിക്കും നിലവിലുണ്ട്. ഒപ്പം ജൂംല ഡെവലപ്പർമാർക്ക് ഒരു റിപ്പോർട്ട് അയച്ചു.

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

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

ഒക്‌ടോബർ 25 ജൂംല സെക്യൂരിറ്റി സ്‌ട്രൈക്ക് ടീം ഡാമിസ് കണ്ടെത്തിയ കോഡിൻ്റെ ഏറ്റവും പുതിയ പ്രശ്‌നം കണ്ടെത്തി. 3.6.4 സ്റ്റേബിൾ റിലീസ് തയ്യാറാക്കുക എന്ന അവ്യക്തമായ പേരിൽ ഒക്ടോബർ 21-ന് ഒരു കമ്മിറ്റ് ഔദ്യോഗിക ജൂംല ശേഖരണത്തിൻ്റെ പ്രധാന ശാഖയിലേക്ക് തള്ളപ്പെടും, ഇത് നിർഭാഗ്യകരമായ ബഗ് പരിഹരിക്കുന്നു.

ഇത് പുറത്തുവന്നതിനുശേഷം, താൽപ്പര്യമുള്ള നിരവധി വ്യക്തികൾ ഡവലപ്പർ കമ്മ്യൂണിറ്റിയിൽ ചേരുന്നു - അവർ ദുർബലത പ്രോത്സാഹിപ്പിക്കാനും ചൂഷണങ്ങൾ തയ്യാറാക്കാനും തുടങ്ങുന്നു.

ഒക്‌ടോബർ 27-ന്, ഗവേഷകനായ ഹാരി റോബർട്ട്‌സ് സിഫോസ് റിസർച്ച് റിപ്പോസിറ്ററിയിലേക്ക് ഒരു റെഡിമെയ്ഡ് എക്‌പ്ലോയിറ്റ് അപ്‌ലോഡ് ചെയ്യുന്നു, അത് ദുർബലമായ CMS ഉള്ള സെർവറിലേക്ക് ഒരു PHP ഫയൽ അപ്‌ലോഡ് ചെയ്യാൻ കഴിയും.

വിശദാംശങ്ങൾ

ശരി, പശ്ചാത്തലം അവസാനിച്ചു, നമുക്ക് ഏറ്റവും രസകരമായ ഭാഗത്തേക്ക് പോകാം - ദുർബലതയുടെ വിശകലനം. ഞാൻ ഒരു ടെസ്റ്റ് പതിപ്പായി ജൂംല 3.6.3 ഇൻസ്റ്റാൾ ചെയ്തു, അതിനാൽ ഈ പതിപ്പിന് എല്ലാ ലൈൻ നമ്പറുകളും പ്രസക്തമായിരിക്കും. നിങ്ങൾ താഴെ കാണുന്ന ഫയലുകളിലേക്കുള്ള എല്ലാ പാതകളും ഇൻസ്റ്റാൾ ചെയ്ത CMS-ൻ്റെ റൂട്ടുമായി ബന്ധപ്പെട്ട് സൂചിപ്പിക്കും.

ഡാമിസ് പാൽമയുടെ കണ്ടെത്തലിന് നന്ദി, സിസ്റ്റത്തിൽ ഉപയോക്തൃ രജിസ്ട്രേഷൻ നടത്തുന്ന രണ്ട് രീതികളുണ്ടെന്ന് ഞങ്ങൾക്കറിയാം. ആദ്യത്തേത് CMS ഉപയോഗിക്കുന്നു, അത് /components/com_users/controllers/registration.php:108 എന്ന ഫയലിലാണ് സ്ഥിതി ചെയ്യുന്നത്. രണ്ടാമത്തേത് (നമ്മൾ വിളിക്കേണ്ട ഒന്ന്) /components/com_users/controllers/user.php:293 എന്നതിൽ താമസിക്കുന്നു. നമുക്ക് അത് സൂക്ഷ്മമായി പരിശോധിക്കാം.

286: /** 287: * ഒരു ഉപയോക്താവിനെ രജിസ്റ്റർ ചെയ്യുന്നതിനുള്ള രീതി. 288. ("JINVALID_TOKEN") ... 300: 301 ഫോം നേടുക: $data = $this->post->get("user", array(), "array"); 315: $return = $model->validate($form, $data); 318: ($Return === false) രജിസ്ട്രേഷൻ പൂർത്തിയാക്കുക 346: $return = $model->register($data);

ഇവിടെ ഞാൻ രസകരമായ വരികൾ മാത്രം ഉപേക്ഷിച്ചു. ദുർബലമായ രീതിയുടെ പൂർണ്ണ പതിപ്പ് ജൂംല ശേഖരണത്തിൽ കാണാൻ കഴിയും.

സാധാരണ ഉപയോക്തൃ രജിസ്ട്രേഷൻ സമയത്ത് എന്താണ് സംഭവിക്കുന്നതെന്ന് നമുക്ക് നോക്കാം: എന്ത് ഡാറ്റയാണ് അയച്ചത്, അത് എങ്ങനെ പ്രോസസ്സ് ചെയ്യുന്നു. ക്രമീകരണങ്ങളിൽ ഉപയോക്തൃ രജിസ്ട്രേഷൻ പ്രവർത്തനക്ഷമമാക്കിയിട്ടുണ്ടെങ്കിൽ, ഫോം http://joomla.local/index.php/component/users/?view=registration എന്നതിൽ കണ്ടെത്താനാകും.


നിയമാനുസൃതമായ ഒരു ഉപയോക്തൃ രജിസ്ട്രേഷൻ അഭ്യർത്ഥന ഇനിപ്പറയുന്ന സ്ക്രീൻഷോട്ട് പോലെയാണ്.


com_users ഘടകം ഉപയോക്താക്കളുമായി പ്രവർത്തിക്കുന്നതിന് ഉത്തരവാദിയാണ്. അഭ്യർത്ഥനയിലെ ടാസ്ക് പാരാമീറ്റർ ശ്രദ്ധിക്കുക. ഇതിന് $controller.$method എന്ന ഫോർമാറ്റ് ഉണ്ട്. ഫയൽ ഘടന നോക്കാം.

ഫോൾഡറിലെ സ്ക്രിപ്റ്റുകളുടെ പേരുകൾ കൺട്രോളറുകൾവിളിക്കപ്പെടുന്ന കൺട്രോളറുകളുടെ പേരുകളുമായി പൊരുത്തപ്പെടുന്നു. ഞങ്ങളുടെ അഭ്യർത്ഥനയിൽ ഇപ്പോൾ $controller = "രജിസ്ട്രേഷൻ" അടങ്ങിയിരിക്കുന്നതിനാൽ, ഫയൽ വിളിക്കപ്പെടും രജിസ്ട്രേഷൻ.phpഅതിൻ്റെ രജിസ്റ്റർ() രീതിയും.

ശ്രദ്ധിക്കുക, ചോദ്യം: കോഡിലെ ഒരു ദുർബലമായ സ്ഥലത്തേക്ക് രജിസ്ട്രേഷൻ പ്രോസസ്സിംഗ് എങ്ങനെ മാറ്റാം? നിങ്ങൾ ഇതിനകം ഊഹിച്ചിരിക്കാം. ദുർബലവും യഥാർത്ഥവുമായ രീതികളുടെ പേരുകൾ ഒന്നുതന്നെയാണ് (രജിസ്റ്റർ ചെയ്യുക), അതിനാൽ നമ്മൾ വിളിക്കുന്ന കൺട്രോളറിൻ്റെ പേര് മാറ്റേണ്ടതുണ്ട്. ഞങ്ങളുടെ ദുർബലമായ കൺട്രോളർ എവിടെയാണ് സ്ഥിതി ചെയ്യുന്നത്? അത് ശരിയാണ്, ഫയലിൽ user.php. ഇത് $controller = "ഉപയോക്താവ്" ആയി മാറുന്നു. എല്ലാം ഒരുമിച്ച് ചേർത്താൽ നമുക്ക് ടാസ്ക് = user.register ലഭിക്കും. ഇപ്പോൾ രജിസ്ട്രേഷൻ അഭ്യർത്ഥന നമുക്ക് ആവശ്യമുള്ള രീതിയിൽ പ്രോസസ്സ് ചെയ്യുന്നു.


നമ്മൾ ചെയ്യേണ്ട രണ്ടാമത്തെ കാര്യം ശരിയായ ഫോർമാറ്റിൽ ഡാറ്റ അയയ്ക്കുക എന്നതാണ്. ഇവിടെ എല്ലാം ലളിതമാണ്. നിയമാനുസൃത രജിസ്റ്റർ() ഞങ്ങളിൽ നിന്ന് jform എന്ന് വിളിക്കുന്ന ഒരു അറേ പ്രതീക്ഷിക്കുന്നു, അതിൽ ഞങ്ങൾ രജിസ്ട്രേഷൻ ഡാറ്റ കൈമാറുന്നു - പേര്, ലോഗിൻ, പാസ്‌വേഡ്, ഇമെയിൽ (അഭ്യർത്ഥനയ്‌ക്കൊപ്പം സ്‌ക്രീൻഷോട്ട് കാണുക).

  • /components/com_users/controllers/registration.php: 124: // ഉപയോക്തൃ ഡാറ്റ നേടുക. 125: $requestData = $this->input->post->get("jform", array(), "array");

ഉപയോക്താവ് എന്ന് വിളിക്കപ്പെടുന്ന ഒരു ശ്രേണിയിൽ നിന്നാണ് ഞങ്ങളുടെ ക്ലയൻ്റിന് ഈ ഡാറ്റ ലഭിക്കുന്നത്.

  • /components/com_users/controllers/user.php: 301: // ഫോം ഡാറ്റ നേടുക. 302: $data = $this->input->post->get("user", array(), "array");

അതിനാൽ, അഭ്യർത്ഥനയിലെ എല്ലാ പാരാമീറ്ററുകളുടെയും പേരുകൾ ഞങ്ങൾ jfrom-ൽ നിന്ന് ഉപയോക്താവിലേക്ക് മാറ്റുന്നു.

ഞങ്ങളുടെ മൂന്നാമത്തെ ഘട്ടം സാധുവായ CSRF ടോക്കൺ കണ്ടെത്തുക എന്നതാണ്, കാരണം അതില്ലാതെ രജിസ്ട്രേഷൻ ഉണ്ടാകില്ല.

  • /components/com_users/controllers/user.php: 296: JSession::checkToken("post") അല്ലെങ്കിൽ jexit(JText::_("JINVALID_TOKEN"));

ഇത് ഒരു MD5 ഹാഷ് പോലെ തോന്നുന്നു, നിങ്ങൾക്ക് ഇത് എടുക്കാം, ഉദാഹരണത്തിന്, /index.php/component/users/?view=login എന്ന സൈറ്റിലെ അംഗീകാര ഫോമിൽ നിന്ന്.


ഇപ്പോൾ നിങ്ങൾക്ക് ആവശ്യമുള്ള രീതി ഉപയോഗിച്ച് ഉപയോക്താക്കളെ സൃഷ്ടിക്കാൻ കഴിയും. എല്ലാം ശരിയായിരുന്നുവെങ്കിൽ, അഭിനന്ദനങ്ങൾ - നിങ്ങൾ ഒരു ദുർബലത മുതലെടുത്തു CVE-2016-8870"പുതിയ ഉപയോക്താക്കളെ രജിസ്റ്റർ ചെയ്യുന്നതിനുള്ള അനുമതി പരിശോധന നഷ്‌ടമായി."

UsersControllerRegistration കൺട്രോളറിൽ നിന്നുള്ള “വർക്കിംഗ്” രജിസ്‌റ്റർ() രീതിയിൽ ഇത് ഇങ്ങനെയാണ് കാണപ്പെടുന്നത്:

  • /components/com_users/controllers/registration.php: 113: // രജിസ്ട്രേഷൻ അപ്രാപ്തമാക്കിയാൽ - ലോഗിൻ പേജിലേക്ക് റീഡയറക്‌ട് ചെയ്യുക. 114: if (JComponentHelper::getParams("com_users")->get("allowUserRegistration") == 0) 115: ( 116: $this->setRedirect(JRoute::_("index.php?option=com_users&view= ലോഗിൻ", തെറ്റ്)); 117: 118: തെറ്റായി മടങ്ങുക; 119: )

അതിനാൽ ദുർബലരിൽ:

  • /components/com_users/controllers/user.php:

അതെ, വഴിയില്ല.

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

അംഗങ്ങൾക്ക് മാത്രമേ തുടർച്ച ലഭ്യമാകൂ

ഓപ്ഷൻ 1. സൈറ്റിലെ എല്ലാ മെറ്റീരിയലുകളും വായിക്കാൻ "സൈറ്റ്" കമ്മ്യൂണിറ്റിയിൽ ചേരുക

നിർദ്ദിഷ്‌ട കാലയളവിനുള്ളിൽ കമ്മ്യൂണിറ്റിയിലെ അംഗത്വം നിങ്ങൾക്ക് എല്ലാ ഹാക്കർ മെറ്റീരിയലുകളിലേക്കും ആക്‌സസ് നൽകും, നിങ്ങളുടെ വ്യക്തിഗത ക്യുമുലേറ്റീവ് ഡിസ്‌കൗണ്ട് വർദ്ധിപ്പിക്കുകയും ഒരു പ്രൊഫഷണൽ Xakep സ്‌കോർ റേറ്റിംഗ് ശേഖരിക്കാൻ നിങ്ങളെ അനുവദിക്കുകയും ചെയ്യും!

ഈ ലേഖനത്തിൽ നിങ്ങൾ പഠിക്കും ഒരു രജിസ്ട്രേഷനും അംഗീകാര ഫോമും എങ്ങനെ സൃഷ്ടിക്കാം HTML, JavaScript, PHP, MySql എന്നിവ ഉപയോഗിച്ച്. അത്തരം ഫോമുകൾ അതിൻ്റെ തരം പരിഗണിക്കാതെ തന്നെ മിക്കവാറും എല്ലാ വെബ്‌സൈറ്റുകളിലും ഉപയോഗിക്കുന്നു. അവ ഒരു ഫോറം, ഒരു ഓൺലൈൻ സ്റ്റോർ, സോഷ്യൽ നെറ്റ്‌വർക്കുകൾ (ഫേസ്‌ബുക്ക്, ട്വിറ്റർ, ഒഡ്‌നോക്ലാസ്‌നിക്കി പോലുള്ളവ) കൂടാതെ മറ്റ് പല തരത്തിലുള്ള സൈറ്റുകൾക്കുമായി സൃഷ്‌ടിച്ചതാണ്.

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

ഡാറ്റാബേസിൽ ഒരു പട്ടിക ഉണ്ടാക്കുന്നു

ഉപയോക്തൃ രജിസ്ട്രേഷൻ നടപ്പിലാക്കുന്നതിന്, ആദ്യം നമുക്ക് ഒരു ഡാറ്റാബേസ് ആവശ്യമാണ്. നിങ്ങൾക്കത് ഇതിനകം ഉണ്ടെങ്കിൽ, അത് മികച്ചതാണ്, അല്ലാത്തപക്ഷം, നിങ്ങൾ അത് സൃഷ്ടിക്കേണ്ടതുണ്ട്. ലേഖനത്തിൽ, ഇത് എങ്ങനെ ചെയ്യണമെന്ന് ഞാൻ വിശദമായി വിവരിക്കുന്നു.

അതിനാൽ, ഞങ്ങൾക്ക് ഒരു ഡാറ്റാബേസ് ഉണ്ട് (DB എന്ന് ചുരുക്കി), ഇപ്പോൾ നമുക്ക് ഒരു പട്ടിക സൃഷ്ടിക്കേണ്ടതുണ്ട് ഉപയോക്താക്കൾഅതിൽ ഞങ്ങളുടെ രജിസ്റ്റർ ചെയ്ത ഉപയോക്താക്കളെ ഞങ്ങൾ ചേർക്കും.

ഒരു ഡാറ്റാബേസിൽ ഒരു ടേബിൾ എങ്ങനെ സൃഷ്ടിക്കാമെന്നും ഞാൻ ലേഖനത്തിൽ വിശദീകരിച്ചു. ഒരു പട്ടിക സൃഷ്ടിക്കുന്നതിന് മുമ്പ്, അതിൽ ഏതൊക്കെ ഫീൽഡുകൾ അടങ്ങിയിരിക്കുമെന്ന് ഞങ്ങൾ നിർണ്ണയിക്കേണ്ടതുണ്ട്. ഈ ഫീൽഡുകൾ രജിസ്ട്രേഷൻ ഫോമിൽ നിന്നുള്ള ഫീൽഡുകളുമായി പൊരുത്തപ്പെടും.

അതിനാൽ, ഞങ്ങളുടെ ഫോമിന് എന്ത് ഫീൽഡുകൾ ഉണ്ടായിരിക്കുമെന്ന് ഞങ്ങൾ ചിന്തിച്ചു, ഒരു പട്ടിക സൃഷ്ടിച്ചു ഉപയോക്താക്കൾഈ ഫീൽഡുകൾക്കൊപ്പം:

  • ഐഡി- ഐഡൻ്റിഫയർ. ഫീൽഡ് ഐഡിഡാറ്റാബേസിലെ എല്ലാ പട്ടികയിലും അത് ഉണ്ടായിരിക്കണം.
  • പേരിന്റെ ആദ്യഭാഗം- പേര് സംരക്ഷിക്കാൻ.
  • പേരിന്റെ അവസാന ഭാഗം- കുടുംബപ്പേര് സംരക്ഷിക്കാൻ.
  • ഇമെയിൽ- തപാൽ വിലാസം സംരക്ഷിക്കാൻ. ഞങ്ങൾ ഇ-മെയിൽ ഒരു ലോഗിൻ ആയി ഉപയോഗിക്കും, അതിനാൽ ഈ ഫീൽഡ് അദ്വിതീയമായിരിക്കണം, അതായത്, UNIQUE സൂചിക ഉണ്ടായിരിക്കണം.
  • ഇമെയിൽ_സ്റ്റാറ്റസ്- മെയിൽ സ്ഥിരീകരിച്ചിട്ടുണ്ടോ ഇല്ലയോ എന്ന് സൂചിപ്പിക്കുന്ന ഫീൽഡ്. മെയിൽ സ്ഥിരീകരിച്ചാൽ, അതിന് 1 മൂല്യം ഉണ്ടായിരിക്കും, അല്ലാത്തപക്ഷം മൂല്യം 0 ആയിരിക്കും.
  • password- രഹസ്യവാക്ക് സംരക്ഷിക്കാൻ.


നിങ്ങളുടെ രജിസ്ട്രേഷൻ ഫോമിൽ മറ്റ് ചില ഫീൽഡുകൾ വേണമെങ്കിൽ, നിങ്ങൾക്ക് അവ ഇവിടെ ചേർക്കാനും കഴിയും.

അത്രയേയുള്ളൂ, ഞങ്ങളുടെ മേശ ഉപയോക്താക്കൾതയ്യാറാണ്. നമുക്ക് അടുത്ത ഘട്ടത്തിലേക്ക് കടക്കാം.

ഡാറ്റാബേസ് കണക്ഷൻ

ഞങ്ങൾ ഡാറ്റാബേസ് സൃഷ്ടിച്ചു, ഇപ്പോൾ ഞങ്ങൾ അതിലേക്ക് കണക്റ്റുചെയ്യേണ്ടതുണ്ട്. PHP എക്സ്റ്റൻഷൻ MySQLi ഉപയോഗിച്ച് ഞങ്ങൾ ബന്ധിപ്പിക്കും.

ഞങ്ങളുടെ സൈറ്റിൻ്റെ ഫോൾഡറിൽ, പേരിൽ ഒരു ഫയൽ സൃഷ്ടിക്കുക dbconnect.php, അതിൽ ഇനിപ്പറയുന്ന സ്ക്രിപ്റ്റ് എഴുതുക:

DB കണക്ഷൻ പിശക്. പിശക് വിവരണം: ".mysqli_connect_error()."

"; exit(); ) // കണക്ഷൻ എൻകോഡിംഗ് $mysqli->set_charset("utf8") സജ്ജമാക്കുക; // സൗകര്യാർത്ഥം, ഞങ്ങളുടെ സൈറ്റിൻ്റെ പേര് അടങ്ങുന്ന ഒരു വേരിയബിൾ ഇവിടെ ചേർക്കുക $address_site = "http://testsite .ലോക്കൽ" ; ?>

ഈ ഫയൽ dbconnect.phpഫോം ഹാൻഡ്‌ലറുകളുമായി ബന്ധിപ്പിക്കേണ്ടതുണ്ട്.

വേരിയബിൾ ശ്രദ്ധിക്കുക $വിലാസം_സൈറ്റ്, ഞാൻ പ്രവർത്തിക്കാൻ പോകുന്ന എൻ്റെ ടെസ്റ്റ് സൈറ്റിൻ്റെ പേര് ഇവിടെ സൂചിപ്പിച്ചു. അതിനനുസരിച്ച് നിങ്ങളുടെ സൈറ്റിൻ്റെ പേര് സൂചിപ്പിക്കുക.

സൈറ്റ് ഘടന

ഇനി നമ്മുടെ സൈറ്റിൻ്റെ HTML ഘടന നോക്കാം.

ഞങ്ങൾ സൈറ്റിൻ്റെ തലക്കെട്ടും അടിക്കുറിപ്പും പ്രത്യേക ഫയലുകളിലേക്ക് നീക്കും, header.phpഒപ്പം അടിക്കുറിപ്പ്.php. ഞങ്ങൾ അവ എല്ലാ പേജുകളിലും ഉൾപ്പെടുത്തും. അതായത് പ്രധാന പേജിൽ (ഫയൽ index.php), രജിസ്ട്രേഷൻ ഫോം ഉള്ള പേജിലേക്ക് (ഫയൽ form_register.php) കൂടാതെ അംഗീകാര ഫോമുള്ള പേജിലേക്കും (ഫയൽ form_auth.php).

ഞങ്ങളുടെ ലിങ്കുകൾ ഉപയോഗിച്ച് തടയുക, രജിസ്ട്രേഷൻഒപ്പം അംഗീകാരം, അവയെ സൈറ്റ് ഹെഡറിലേക്ക് ചേർക്കുക, അങ്ങനെ അവ എല്ലാ പേജുകളിലും പ്രദർശിപ്പിക്കും. എന്നതിൽ ഒരു ലിങ്ക് നൽകപ്പെടും രജിസ്ട്രേഷൻ ഫോം പേജ്(ഫയൽ form_register.php) കൂടാതെ മറ്റൊന്ന് കൂടെ പേജിലേക്ക് അംഗീകാര ഫോം(ഫയൽ form_auth.php).

header.php ഫയലിൻ്റെ ഉള്ളടക്കം:

ഞങ്ങളുടെ സൈറ്റിൻ്റെ പേര്

തൽഫലമായി, ഞങ്ങളുടെ പ്രധാന പേജ് ഇതുപോലെ കാണപ്പെടുന്നു:


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

ഇനി നമുക്ക് രജിസ്ട്രേഷൻ ഫോമിലേക്ക് പോകാം. നിങ്ങൾ ഇതിനകം മനസ്സിലാക്കിയതുപോലെ, ഞങ്ങൾ അത് ഫയലിലുണ്ട് form_register.php.

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

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

ഫോം പ്രദർശിപ്പിക്കുന്നതിന് മുമ്പ്, സെഷനിൽ നിന്നുള്ള പിശക് സന്ദേശങ്ങൾ പ്രദർശിപ്പിക്കുന്നതിന് ഒരു ബ്ലോക്ക് ചേർക്കുക.

ഒരു കാര്യം കൂടി, ഉപയോക്താവിന് ഇതിനകം അധികാരമുണ്ടെങ്കിൽ, ജിജ്ഞാസ നിമിത്തം അദ്ദേഹം ബ്രൗസറിൻ്റെ വിലാസ ബാറിൽ എഴുതി രജിസ്ട്രേഷൻ പേജിലേക്ക് നേരിട്ട് പോകുന്നു. site_address/form_register.php, ഈ സാഹചര്യത്തിൽ, രജിസ്ട്രേഷൻ ഫോമിന് പകരം, അവൻ ഇതിനകം രജിസ്റ്റർ ചെയ്തിട്ടുണ്ടെന്ന് വ്യക്തമാക്കുന്ന ഒരു തലക്കെട്ട് ഞങ്ങൾ പ്രദർശിപ്പിക്കും.

പൊതുവേ, ഫയൽ കോഡ് form_register.phpഞങ്ങൾക്ക് ഇത് ലഭിച്ചു:

നിങ്ങൾ ഇതിനകം രജിസ്റ്റർ ചെയ്തിട്ടുണ്ട്

ബ്രൗസറിൽ, രജിസ്ട്രേഷൻ ഫോമിലുള്ള പേജ് ഇതുപോലെ കാണപ്പെടുന്നു:


ഉപയോഗിച്ച് ആവശ്യമായ ആട്രിബ്യൂട്ട്, ഞങ്ങൾ എല്ലാ ഫീൽഡുകളും നിർബന്ധമാക്കിയിട്ടുണ്ട്.

എവിടെ രജിസ്ട്രേഷൻ ഫോം കോഡ് ശ്രദ്ധിക്കുക captcha പ്രദർശിപ്പിക്കുന്നു:


ചിത്രത്തിനായുള്ള src ആട്രിബ്യൂട്ടിൻ്റെ മൂല്യത്തിൽ ഞങ്ങൾ ഫയലിലേക്കുള്ള പാത വ്യക്തമാക്കി captcha.php, ഈ ക്യാപ്‌ച ജനറേറ്റുചെയ്യുന്നു.

ഫയൽ കോഡ് നോക്കാം captcha.php:

കോഡ് നന്നായി അഭിപ്രായപ്പെട്ടിരിക്കുന്നു, അതിനാൽ ഞാൻ ഒരു പോയിൻ്റിൽ മാത്രം ശ്രദ്ധ കേന്ദ്രീകരിക്കും.

ഒരു ചടങ്ങിനുള്ളിൽ imageTtfText(), ഫോണ്ടിലേക്കുള്ള പാത വ്യക്തമാക്കിയിരിക്കുന്നു verdana.ttf. അതിനാൽ ക്യാപ്‌ച ശരിയായി പ്രവർത്തിക്കുന്നതിന്, നമ്മൾ ഒരു ഫോൾഡർ സൃഷ്‌ടിക്കണം ഫോണ്ടുകൾ, ഫോണ്ട് ഫയൽ അവിടെ സ്ഥാപിക്കുക verdana.ttf. നിങ്ങൾക്ക് ഇത് കണ്ടെത്താനും ഇൻ്റർനെറ്റിൽ നിന്ന് ഡൗൺലോഡ് ചെയ്യാനും അല്ലെങ്കിൽ ഈ ലേഖനത്തിൻ്റെ മെറ്റീരിയലുകൾ ഉപയോഗിച്ച് ആർക്കൈവിൽ നിന്ന് എടുക്കാനും കഴിയും.

ഞങ്ങൾ HTML ഘടന പൂർത്തിയാക്കി, മുന്നോട്ട് പോകാനുള്ള സമയമാണിത്.

jQuery ഉപയോഗിച്ച് ഇമെയിൽ സാധുത പരിശോധിക്കുന്നു

ക്ലയൻ്റ് ഭാഗത്തും (JavaScript, jQuery ഉപയോഗിച്ച്) സെർവർ ഭാഗത്തും നൽകിയ ഡാറ്റയുടെ സാധുത ഏത് ഫോമിനും പരിശോധിക്കേണ്ടതുണ്ട്.

ഇമെയിൽ ഫീൽഡിൽ നാം പ്രത്യേക ശ്രദ്ധ നൽകണം. നൽകിയ തപാൽ വിലാസം സാധുതയുള്ളതാണെന്നത് വളരെ പ്രധാനമാണ്.

ഈ ഇൻപുട്ട് ഫീൽഡിനായി, ഞങ്ങൾ ഇമെയിൽ തരം സജ്ജീകരിച്ചിരിക്കുന്നു (type="email"), ഇത് തെറ്റായ ഫോർമാറ്റുകൾക്കെതിരെ ചെറുതായി മുന്നറിയിപ്പ് നൽകുന്നു. എന്നാൽ ഇത് പര്യാപ്തമല്ല, കാരണം ബ്രൗസർ നമുക്ക് നൽകുന്ന കോഡ് ഇൻസ്പെക്ടർ വഴി നമുക്ക് ആട്രിബ്യൂട്ട് മൂല്യം എളുപ്പത്തിൽ മാറ്റാൻ കഴിയും തരംകൂടെ ഇമെയിൽഓൺ വാചകം, അത്രയേയുള്ളൂ, ഞങ്ങളുടെ ചെക്ക് ഇനി സാധുവായിരിക്കില്ല.


ഈ സാഹചര്യത്തിൽ, ഞങ്ങൾ കൂടുതൽ വിശ്വസനീയമായ ഒരു പരിശോധന നടത്തണം. ഇത് ചെയ്യുന്നതിന്, ഞങ്ങൾ JavaScript-ൽ നിന്നുള്ള jQuery ലൈബ്രറി ഉപയോഗിക്കും.

ഫയലിൽ jQuery ലൈബ്രറി കണക്‌റ്റ് ചെയ്യാൻ header.phpടാഗുകൾക്കിടയിൽ , ക്ലോസിംഗ് ടാഗിന് മുമ്പ് , ഈ വരി ചേർക്കുക:

ഈ വരി കഴിഞ്ഞയുടനെ, ഞങ്ങൾ ഇമെയിൽ മൂല്യനിർണ്ണയ കോഡ് ചേർക്കും. നൽകിയ പാസ്‌വേഡിൻ്റെ ദൈർഘ്യം പരിശോധിക്കാൻ ഞങ്ങൾ ഇവിടെ ഒരു കോഡ് ചേർക്കും. അതിൻ്റെ ദൈർഘ്യം കുറഞ്ഞത് 6 പ്രതീകങ്ങൾ ആയിരിക്കണം.

ഈ സ്ക്രിപ്റ്റ് ഉപയോഗിച്ച്, ഞങ്ങൾ നൽകിയ ഇമെയിൽ വിലാസം സാധുത പരിശോധിക്കുന്നു. ഉപയോക്താവ് തെറ്റായ ഇമെയിൽ നൽകിയാൽ, ഞങ്ങൾ ഇതിനെക്കുറിച്ച് ഒരു പിശക് സന്ദേശം പ്രദർശിപ്പിക്കുകയും ഫോം സമർപ്പിക്കൽ ബട്ടൺ പ്രവർത്തനരഹിതമാക്കുകയും ചെയ്യും. എല്ലാം ശരിയാണെങ്കിൽ, ഞങ്ങൾ പിശക് നീക്കം ചെയ്യുകയും ഫോം സമർപ്പിക്കൽ ബട്ടൺ സജീവമാക്കുകയും ചെയ്യുന്നു.

അതിനാൽ, ക്ലയൻ്റ് ഭാഗത്ത് ഫോം മൂല്യനിർണ്ണയം ഞങ്ങൾ പൂർത്തിയാക്കി. ഇപ്പോൾ നമുക്ക് അത് സെർവറിലേക്ക് അയയ്‌ക്കാൻ കഴിയും, അവിടെ ഞങ്ങൾ രണ്ട് പരിശോധനകൾ നടത്തുകയും ഡാറ്റാബേസിലേക്ക് ഡാറ്റ ചേർക്കുകയും ചെയ്യും.

ഉപയോക്തൃ രജിസ്ട്രേഷൻ

പ്രോസസ്സിംഗിനായി ഞങ്ങൾ ഫോം ഫയലിലേക്ക് അയയ്ക്കുന്നു register.php, POST രീതി വഴി. ഈ ഹാൻഡ്‌ലർ ഫയലിൻ്റെ പേര് ആട്രിബ്യൂട്ട് മൂല്യത്തിൽ വ്യക്തമാക്കിയിട്ടുണ്ട് നടപടി. അയയ്‌ക്കുന്ന രീതി ആട്രിബ്യൂട്ട് മൂല്യത്തിൽ വ്യക്തമാക്കിയിരിക്കുന്നു രീതി.

ഈ ഫയൽ തുറക്കുക register.phpഞങ്ങൾ ആദ്യം ചെയ്യേണ്ടത് ഒരു സെഷൻ ലോഞ്ച് ഫംഗ്‌ഷൻ എഴുതുകയും ഞങ്ങൾ മുമ്പ് സൃഷ്‌ടിച്ച ഫയൽ ബന്ധിപ്പിക്കുകയും ചെയ്യുക എന്നതാണ് dbconnect.php(ഈ ഫയലിൽ ഞങ്ങൾ ഡാറ്റാബേസിലേക്ക് ഒരു കണക്ഷൻ ഉണ്ടാക്കി). കൂടാതെ, നമുക്ക് ഉടൻ തന്നെ സെല്ലുകൾ പ്രഖ്യാപിക്കാം error_messagesഒപ്പം വിജയം_സന്ദേശങ്ങൾആഗോള സെഷൻ ശ്രേണിയിൽ. IN പിശക്_സന്ദേശങ്ങൾഫോം പ്രോസസ്സിംഗ് സമയത്ത് സംഭവിക്കുന്ന എല്ലാ പിശക് സന്ദേശങ്ങളും ഞങ്ങൾ റെക്കോർഡ് ചെയ്യും സക്സസ്_മെസേജുകൾ, ഞങ്ങൾ സന്തോഷകരമായ സന്ദേശങ്ങൾ രേഖപ്പെടുത്തും.

ഞങ്ങൾ തുടരുന്നതിന് മുമ്പ്, ഞങ്ങൾ പരിശോധിക്കേണ്ടതുണ്ട് ഫോം സമർപ്പിച്ചിരുന്നോ?. ഒരു ആക്രമണകാരിക്ക് ആട്രിബ്യൂട്ട് മൂല്യം നോക്കാനാകും നടപടിഫോമിൽ നിന്ന്, ഏത് ഫയലാണ് ഈ ഫോം പ്രോസസ്സ് ചെയ്യുന്നതെന്ന് കണ്ടെത്തുക. ബ്രൗസറിൻ്റെ വിലാസ ബാറിൽ ഇനിപ്പറയുന്ന വിലാസം ടൈപ്പ് ചെയ്തുകൊണ്ട് ഈ ഫയലിലേക്ക് നേരിട്ട് പോകാനുള്ള ആശയം അദ്ദേഹത്തിന് ഉണ്ടായിരിക്കാം: http://site_address/register.php

അതിനാൽ, ഫോമിൽ നിന്നുള്ള ഞങ്ങളുടെ "രജിസ്റ്റർ" ബട്ടണിൻ്റെ പേരുമായി പൊരുത്തപ്പെടുന്ന ഒരു സെല്ലിനായി ആഗോള POST അറേയിൽ ഞങ്ങൾ പരിശോധിക്കേണ്ടതുണ്ട്. ഈ രീതിയിൽ "രജിസ്റ്റർ" ബട്ടൺ ക്ലിക്ക് ചെയ്തോ ഇല്ലയോ എന്ന് ഞങ്ങൾ പരിശോധിക്കുന്നു.

ഒരു ആക്രമണകാരി നേരിട്ട് ഈ ഫയലിലേക്ക് പോകാൻ ശ്രമിച്ചാൽ, അവർക്ക് ഒരു പിശക് സന്ദേശം ലഭിക്കും. $address_site വേരിയബിളിൽ സൈറ്റിൻ്റെ പേര് അടങ്ങിയിട്ടുണ്ടെന്നും അത് ഫയലിൽ പ്രഖ്യാപിച്ചിട്ടുണ്ടെന്നും ഞാൻ നിങ്ങളെ ഓർമ്മിപ്പിക്കട്ടെ dbconnect.php.

പിശക്!പ്രധാന പേജ്.

"); } ?>

ഫയലിൽ ജനറേറ്റ് ചെയ്യുമ്പോൾ സെഷനിലെ ക്യാപ്‌ച മൂല്യം ചേർത്തു captcha.php. ഒരു ഓർമ്മപ്പെടുത്തൽ എന്ന നിലയിൽ, ഫയലിൽ നിന്നുള്ള ഈ കോഡ് ഞാൻ വീണ്ടും കാണിക്കും captcha.php, സെഷനിലേക്ക് ക്യാപ്‌ച മൂല്യം ചേർക്കുന്നിടത്ത്:

ഇനി നമുക്ക് സ്ഥിരീകരണത്തിലേക്ക് തന്നെ പോകാം. ഫയലിൽ register.php, if ബ്ലോക്കിനുള്ളിൽ, "രജിസ്റ്റർ" ബട്ടൺ ക്ലിക്ക് ചെയ്‌തിട്ടുണ്ടോ എന്ന് ഞങ്ങൾ പരിശോധിക്കുന്നു, അതോ കമൻ്റ് " സൂചിപ്പിച്ചിരിക്കുന്നിടത്ത്" // (1) കോഡിൻ്റെ അടുത്ത ഭാഗത്തിനുള്ള ഇടം"ഞങ്ങള് എഴുതുന്നു:

// ലഭിച്ച ക്യാപ്‌ച പരിശോധിക്കുക // വരിയുടെ തുടക്കത്തിലും അവസാനത്തിലും ഉള്ള സ്‌പെയ്‌സുകൾ ട്രിം ചെയ്യുക $ captcha = trim($_POST["captcha"]); if(isset($_POST["captcha"]) && !empty($captcha))( //സെഷനിൽ നിന്നുള്ള മൂല്യവുമായി ലഭിച്ച മൂല്യം താരതമ്യം ചെയ്യുക. if(($_SESSION["rand"] != $captcha) && ($_SESSION ["rand"] != ""))( // ക്യാപ്‌ച ശരിയല്ലെങ്കിൽ, ഞങ്ങൾ ഉപയോക്താവിനെ രജിസ്‌ട്രേഷൻ പേജിലേക്ക് തിരികെ നൽകുന്നു, അവിടെ അയാൾ തെറ്റായ ക്യാപ്‌ച നൽകിയതായി ഒരു പിശക് സന്ദേശം കാണിക്കും. $error_message = "

പിശക്!നിങ്ങൾ തെറ്റായ ക്യാപ്‌ചയാണ് നൽകിയത്

"; // പിശക് സന്ദേശം സെഷനിൽ സംരക്ഷിക്കുക. $_SESSION["error_messages"] = $error_message; // രജിസ്ട്രേഷൻ പേജ് തലക്കെട്ടിലേക്ക് ഉപയോക്താവിനെ തിരികെ നൽകുക ("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: " .$address_site ."/form_register.php"); //സ്ക്രിപ്റ്റ് എക്സിറ്റ് നിർത്തുക (); "

പിശക്!സ്ഥിരീകരണ കോഡ് ഇല്ല, അതായത് ഒരു ക്യാപ്‌ച കോഡ്. നിങ്ങൾക്ക് പ്രധാന പേജിലേക്ക് പോകാം.

"); }

അടുത്തതായി, POST അറേയിൽ നിന്ന് ലഭിച്ച ഡാറ്റ പ്രോസസ്സ് ചെയ്യേണ്ടതുണ്ട്. ഒന്നാമതായി, ആഗോള POST അറേയിലെ ഉള്ളടക്കങ്ങൾ പരിശോധിക്കേണ്ടതുണ്ട്, അതായത്, നമ്മുടെ ഫോമിൽ നിന്നുള്ള ഇൻപുട്ട് ഫീൽഡുകളുടെ പേരുകളുമായി പൊരുത്തപ്പെടുന്ന സെല്ലുകൾ അവിടെ ഉണ്ടോ എന്ന്.

സെൽ നിലവിലുണ്ടെങ്കിൽ, ഈ സെല്ലിൽ നിന്ന് വരിയുടെ തുടക്കത്തിലും അവസാനത്തിലും ഉള്ള സ്‌പെയ്‌സുകൾ ഞങ്ങൾ ട്രിം ചെയ്യുന്നു, അല്ലാത്തപക്ഷം, രജിസ്‌ട്രേഷൻ ഫോം ഉപയോഗിച്ച് ഉപയോക്താവിനെ ഞങ്ങൾ പേജിലേക്ക് റീഡയറക്‌ട് ചെയ്യുന്നു.

അടുത്തതായി, ഞങ്ങൾ സ്‌പെയ്‌സുകൾ ട്രിം ചെയ്‌തതിനുശേഷം, ഞങ്ങൾ വേരിയബിളിലേക്ക് ലൈൻ ചേർക്കുകയും ഈ വേരിയബിൾ ശൂന്യമല്ലെങ്കിൽ, ഞങ്ങൾ മുന്നോട്ട് പോകുകയും ചെയ്യുന്നു, അല്ലാത്തപക്ഷം രജിസ്‌ട്രേഷൻ ഫോം ഉപയോഗിച്ച് ഞങ്ങൾ ഉപയോക്താവിനെ പേജിലേക്ക് റീഡയറക്‌ട് ചെയ്യുന്നു.

ഈ കോഡ് നിർദ്ദിഷ്ട സ്ഥലത്ത് ഒട്ടിക്കുക" // (2) കോഡിൻ്റെ അടുത്ത ഭാഗത്തിനുള്ള ഇടം".

/* ആഗോള അറേ $_POST-ൽ ഫോമിൽ നിന്ന് ഡാറ്റ അയച്ചിട്ടുണ്ടോയെന്ന് പരിശോധിക്കുക, സമർപ്പിച്ച ഡാറ്റ സാധാരണ വേരിയബിളുകളിൽ പൊതിയുക.*/ if(isset($_POST["first_name"]))( //ആദ്യം മുതൽ സ്‌പെയ്‌സുകൾ ട്രിം ചെയ്യുക $first_name = ട്രിം ($_POST["first_name"]) എന്ന സ്ട്രിംഗിൻ്റെ അവസാനം //(!empty($first_name))( // സുരക്ഷയ്ക്കായി, പ്രത്യേക പ്രതീകങ്ങളെ HTML എൻ്റിറ്റികളാക്കി $first_name = മാറ്റുക. htmlspecialchars($first_name, ENT_QUOTES) )else( // പിശക് സന്ദേശം സെഷനിൽ സംരക്ഷിക്കുക. $_SESSION["error_messages"] .= "

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

നെയിം ഫീൽഡ് കാണുന്നില്ല

"; //ഉപയോക്താവിനെ രജിസ്ട്രേഷൻ പേജ് ഹെഡറിലേക്ക് മടങ്ങുക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_register.php"); //സ്ക്രിപ്റ്റ് എക്സിറ്റ് നിർത്തുക(); ) if( isset($_POST["last_name"]))( //ലൈനിൻ്റെ തുടക്കത്തിലും അവസാനത്തിലും ഉള്ള ഇടങ്ങൾ ട്രിം ചെയ്യുക $last_name = trim($_POST["last_name"]); if(!empty($last_name)) ( // സുരക്ഷയ്ക്കായി, പ്രത്യേക പ്രതീകങ്ങളെ HTML എൻ്റിറ്റികളാക്കി മാറ്റുക $last_name = htmlspecialchars($last_name, ENT_QUOTES); )else( // പിശക് സന്ദേശം സെഷനിൽ സംരക്ഷിക്കുക. $_SESSION["error_messages"] .= "

ദയവായി നിങ്ങളുടെ അവസാന നാമം നൽകുക

"; //ഉപയോക്താവിനെ രജിസ്ട്രേഷൻ പേജ് ഹെഡറിലേക്ക് മടങ്ങുക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_register.php"); //സ്ക്രിപ്റ്റ് എക്സിറ്റ് നിർത്തുക(); ) )else ( // പിശക് സന്ദേശം സെഷനിൽ സംരക്ഷിക്കുക. $_SESSION["error_messages"] .= "

അവസാന നാമ ഫീൽഡ് കാണുന്നില്ല

"; //ഉപയോക്താവിനെ രജിസ്ട്രേഷൻ പേജ് ഹെഡറിലേക്ക് മടങ്ങുക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_register.php"); //സ്ക്രിപ്റ്റ് എക്സിറ്റ് നിർത്തുക(); ) if( isset($_POST["email"]))( //ലൈനിൻ്റെ തുടക്കത്തിലും അവസാനത്തിലും ഉള്ള ഇടങ്ങൾ ട്രിം ചെയ്യുക $email = trim($_POST["email"]); if(!empty($email)) ( $email = htmlspecialchars ($email, ENT_QUOTES); // (3) ഇമെയിൽ വിലാസത്തിൻ്റെ ഫോർമാറ്റും അതിൻ്റെ പ്രത്യേകതയും പരിശോധിക്കുന്നതിനുള്ള കോഡ് ലൊക്കേഷൻ )else( // പിശക് സന്ദേശം സെഷനിൽ സംരക്ഷിക്കുക. $_SESSION["error_messages"] .= "

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

"; //ഉപയോക്താവിനെ രജിസ്ട്രേഷൻ പേജ് ഹെഡറിലേക്ക് മടങ്ങുക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_register.php"); //സ്ക്രിപ്റ്റ് എക്സിറ്റ് നിർത്തുക(); ) )else ( // പിശക് സന്ദേശം സെഷനിൽ സംരക്ഷിക്കുക. $_SESSION["error_messages"] .= "

"; //ഉപയോക്താവിനെ രജിസ്ട്രേഷൻ പേജ് ഹെഡറിലേക്ക് മടങ്ങുക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_register.php"); //സ്ക്രിപ്റ്റ് എക്സിറ്റ് നിർത്തുക(); ) if( isset($_POST["password"]))( //സ്‌ട്രിംഗിൻ്റെ തുടക്കത്തിലും അവസാനത്തിലും ഉള്ള സ്‌പെയ്‌സുകൾ ട്രിം ചെയ്യുക $password = trim($_POST["password"]); if(!empty($password)) ($password = htmlspecialchars ($password, ENT_QUOTES); //പാസ്‌വേഡ് എൻക്രിപ്റ്റ് ചെയ്യുക $password = md5($password."top_secret");else( //എറർ സന്ദേശം സെഷനിൽ സേവ് ചെയ്യുക. $_SESSION["error_messages"] . = "

നിങ്ങളുടെ പാസ്‌വേഡ് നൽകുക

"; //ഉപയോക്താവിനെ രജിസ്ട്രേഷൻ പേജ് ഹെഡറിലേക്ക് മടങ്ങുക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_register.php"); //സ്ക്രിപ്റ്റ് എക്സിറ്റ് നിർത്തുക(); ) )else ( // പിശക് സന്ദേശം സെഷനിൽ സംരക്ഷിക്കുക. $_SESSION["error_messages"] .= "

"; //ഉപയോക്താവിനെ രജിസ്ട്രേഷൻ പേജ് ഹെഡറിലേക്ക് മടങ്ങുക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_register.php"); //സ്ക്രിപ്റ്റ് എക്സിറ്റ് നിർത്തുക(); ) // (4) ഡാറ്റാബേസിലേക്ക് ഒരു ഉപയോക്താവിനെ ചേർക്കുന്നതിനുള്ള കോഡിനുള്ള സ്ഥലം

പ്രത്യേക പ്രാധാന്യം വയലാണ് ഇമെയിൽ. ലഭിച്ച തപാൽ വിലാസത്തിൻ്റെ ഫോർമാറ്റും ഡാറ്റാബേസിൽ അതിൻ്റെ പ്രത്യേകതയും ഞങ്ങൾ പരിശോധിക്കണം. അതായത്, ഇതിനകം രജിസ്റ്റർ ചെയ്ത അതേ ഇമെയിൽ വിലാസമുള്ള ഏതെങ്കിലും ഉപയോക്താവ് ഉണ്ടോ?

നിർദ്ദിഷ്ട സ്ഥലത്ത്" // (3) തപാൽ വിലാസത്തിൻ്റെ ഫോർമാറ്റും അതിൻ്റെ പ്രത്യേകതയും പരിശോധിക്കുന്നതിനുള്ള കോഡ് ലൊക്കേഷൻ"ഇനിപ്പറയുന്ന കോഡ് ചേർക്കുക:

//$reg_email = "/^**@(+(*+)*\.)++/i" എന്ന പതിവ് പദപ്രയോഗം ഉപയോഗിച്ച് സ്വീകരിച്ച ഇമെയിൽ വിലാസത്തിൻ്റെ ഫോർമാറ്റ് പരിശോധിക്കുക; //സ്വീകരിച്ച ഇമെയിൽ വിലാസത്തിൻ്റെ ഫോർമാറ്റ് പതിവ് പദപ്രയോഗവുമായി പൊരുത്തപ്പെടുന്നില്ലെങ്കിൽ if(!preg_match($reg_email, $email))( // പിശക് സന്ദേശം സെഷനിൽ സംരക്ഷിക്കുക. $_SESSION["error_messages"] .= "

നിങ്ങൾ തെറ്റായ ഒരു ഇമെയിൽ നൽകി

"; //ഉപയോക്താവിനെ രജിസ്ട്രേഷൻ പേജ് ഹെഡറിലേക്ക് മടങ്ങുക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_register.php"); //സ്ക്രിപ്റ്റ് എക്സിറ്റ് നിർത്തുക(); ) // അത്തരത്തിലുള്ള ഒരു വിലാസം ഇതിനകം തന്നെ $result_query = $mysqli->അന്വേഷണത്തിൽ ഉണ്ടോ എന്ന് ഞങ്ങൾ പരിശോധിക്കുന്നു കൃത്യമായി ഒരു വരിയാണ്, അതായത് ($result_query->num_rows == 1)( // ലഭിച്ച ഫലം തെറ്റല്ലെങ്കിൽ (($row = $result_query->fetch_assoc() ) != തെറ്റ്) ( // പിശക് സന്ദേശം സെഷനിൽ സംരക്ഷിക്കുക. $_SESSION["error_messages"] .= "

ഈ ഇമെയിൽ വിലാസമുള്ള ഒരു ഉപയോക്താവ് ഇതിനകം രജിസ്റ്റർ ചെയ്തിട്ടുണ്ട്

"; //ഉപയോക്താവിനെ രജിസ്ട്രേഷൻ പേജ് ഹെഡറിലേക്ക് തിരികെ കൊണ്ടുവരിക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_register.php"); )else( // പിശക് സന്ദേശം സംരക്ഷിക്കുക സെഷനിലേക്ക് $_SESSION["error_messages"] .= "

ഡാറ്റാബേസ് അന്വേഷണത്തിൽ പിശക്

"; //ഉപയോക്താവിനെ രജിസ്ട്രേഷൻ പേജ് ഹെഡറിലേക്ക് മടങ്ങുക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_register.php"); ) /* തിരഞ്ഞെടുക്കൽ അടയ്ക്കുന്നു */ $ result_query-> close(); //സ്ക്രിപ്റ്റ് എക്സിറ്റ് നിർത്തുക ( ) /* സെലക്ഷൻ ക്ലോസ് ചെയ്യുക

അതിനാൽ, ഞങ്ങൾ എല്ലാ പരിശോധനകളും പൂർത്തിയാക്കി, ഉപയോക്താവിനെ ഡാറ്റാബേസിലേക്ക് ചേർക്കാനുള്ള സമയമാണിത്. നിർദ്ദിഷ്ട സ്ഥലത്ത്" // (4) ഡാറ്റാബേസിലേക്ക് ഒരു ഉപയോക്താവിനെ ചേർക്കുന്നതിനുള്ള കോഡിനുള്ള സ്ഥലം"ഇനിപ്പറയുന്ന കോഡ് ചേർക്കുക:

//ഒരു ഉപയോക്താവിനെ ഡാറ്റാബേസിലേക്ക് ചേർക്കാനുള്ള അന്വേഷണം $result_query_insert = $mysqli->query("ഉപയോക്താക്കൾ' (ആദ്യ നാമം, അവസാന_നാമം, ഇമെയിൽ, പാസ്‌വേഡ്) മൂല്യങ്ങൾ ("".$first_name."", "".$last_name ." ", "".$email.", "".$password."")"); if(!$result_query_insert)( // പിശക് സന്ദേശം സെഷനിൽ സംരക്ഷിക്കുക. $_SESSION["error_messages"] .= "

ഡാറ്റാബേസിലേക്ക് ഉപയോക്താവിനെ ചേർക്കുന്നതിനുള്ള അഭ്യർത്ഥനയിൽ പിശക്

"; //ഉപയോക്താവിനെ രജിസ്ട്രേഷൻ പേജ് ഹെഡറിലേക്ക് മടങ്ങുക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_register.php"); //സ്ക്രിപ്റ്റ് എക്സിറ്റ് നിർത്തുക(); )else( $_SESSION["success_messages"] = "

രജിസ്ട്രേഷൻ വിജയകരമായി പൂർത്തിയാക്കി!!!
ഇപ്പോൾ നിങ്ങൾക്ക് നിങ്ങളുടെ ഉപയോക്തൃനാമവും പാസ്‌വേഡും ഉപയോഗിച്ച് ലോഗിൻ ചെയ്യാം.

"; //അധികാര പേജ് തലക്കെട്ടിലേക്ക് ഉപയോക്താവിനെ അയയ്‌ക്കുക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_auth.php"); ) /* അഭ്യർത്ഥന പൂർത്തിയാക്കുന്നു */ $ result_query_insert-> close(); //$mysqli->ക്ലോസ് ();

ഡാറ്റാബേസിലേക്ക് ഒരു ഉപയോക്താവിനെ ചേർക്കുന്നതിനുള്ള അഭ്യർത്ഥനയിൽ ഒരു പിശക് സംഭവിച്ചിട്ടുണ്ടെങ്കിൽ, ഈ പിശകിനെക്കുറിച്ചുള്ള ഒരു സന്ദേശം ഞങ്ങൾ സെഷനിൽ ചേർക്കുകയും ഉപയോക്താവിനെ രജിസ്ട്രേഷൻ പേജിലേക്ക് തിരികെ നൽകുകയും ചെയ്യുന്നു.

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

ഇമെയിൽ വിലാസ ഫോർമാറ്റും പാസ്‌വേഡ് ദൈർഘ്യവും പരിശോധിക്കുന്നതിനുള്ള സ്‌ക്രിപ്റ്റ് ഫയലിലുണ്ട് header.php, അതിനാൽ ഈ ഫോമിൽ നിന്നുള്ള ഫീൽഡുകൾക്കും ഇത് ബാധകമാകും.

ഫയലിൽ സെഷനും ആരംഭിച്ചിട്ടുണ്ട് header.php, അങ്ങനെ ഫയലിൽ form_auth.phpഒരു സെഷൻ ആരംഭിക്കേണ്ട ആവശ്യമില്ല, കാരണം ഞങ്ങൾക്ക് ഒരു പിശക് ലഭിക്കും.


ഞാൻ ഇതിനകം പറഞ്ഞതുപോലെ, ഇമെയിൽ വിലാസ ഫോർമാറ്റും പാസ്‌വേഡ് ദൈർഘ്യവും പരിശോധിക്കുന്നതിനുള്ള സ്‌ക്രിപ്‌റ്റും ഇവിടെ പ്രവർത്തിക്കുന്നു. അതിനാൽ, ഉപയോക്താവ് തെറ്റായ ഇമെയിൽ വിലാസമോ ഹ്രസ്വ പാസ്‌വേഡോ നൽകിയാൽ, അയാൾക്ക് ഉടൻ ഒരു പിശക് സന്ദേശം ലഭിക്കും. ഒരു ബട്ടൺ അകത്തു വരാൻനിഷ്ക്രിയമാകും.

പിശകുകൾ പരിഹരിച്ച ശേഷം, ബട്ടൺ അകത്തു വരാൻസജീവമാകും, കൂടാതെ ഉപയോക്താവിന് ഫോം സെർവറിലേക്ക് സമർപ്പിക്കാൻ കഴിയും, അവിടെ അത് പ്രോസസ്സ് ചെയ്യും.

ഉപയോക്തൃ അംഗീകാരം

മൂല്യം ആട്രിബ്യൂട്ട് ചെയ്യാൻ നടപടിഅംഗീകാര വൈകല്യത്തിന് വ്യക്തമാക്കിയ ഒരു ഫയൽ ഉണ്ട് auth.php, ഫോം ഈ ഫയലിൽ പ്രോസസ്സ് ചെയ്യുമെന്നാണ് ഇതിനർത്ഥം.

അതിനാൽ, ഫയൽ തുറക്കുക auth.phpഅംഗീകാര ഫോം പ്രോസസ്സ് ചെയ്യുന്നതിന് കോഡ് എഴുതുക. നിങ്ങൾ ആദ്യം ചെയ്യേണ്ടത് ഒരു സെഷൻ ആരംഭിച്ച് ഫയൽ ബന്ധിപ്പിക്കുക എന്നതാണ് dbconnect.phpഡാറ്റാബേസിലേക്ക് ബന്ധിപ്പിക്കാൻ.

//ഫോം പ്രോസസ്സ് ചെയ്യുമ്പോൾ സംഭവിക്കാവുന്ന പിശകുകൾ ചേർക്കാൻ ഒരു സെൽ പ്രഖ്യാപിക്കുക. $_SESSION["error_messages"] = ""; //വിജയകരമായ സന്ദേശങ്ങൾ ചേർക്കുന്നതിന് ഒരു സെൽ പ്രഖ്യാപിക്കുക $_SESSION["success_messages"] = "";

/* ഫോം സമർപ്പിച്ചിട്ടുണ്ടോ എന്ന് പരിശോധിക്കുക, അതായത്, ലോഗിൻ ബട്ടൺ ക്ലിക്ക് ചെയ്തിട്ടുണ്ടോ എന്ന്. അതെ എങ്കിൽ, ഞങ്ങൾ മുന്നോട്ട് പോകും, ​​ഇല്ലെങ്കിൽ, ഉപയോക്താവ് ഈ പേജ് നേരിട്ട് ആക്സസ് ചെയ്തതായി സൂചിപ്പിക്കുന്ന ഒരു പിശക് സന്ദേശം ഞങ്ങൾ പ്രദർശിപ്പിക്കും. */ if(isset($_POST["btn_submit_auth"]) && !empty($_POST["btn_submit_auth"]))( //(1) അടുത്ത കോഡിനുള്ള ഇടം )else( എക്സിറ്റ്("

പിശക്!നിങ്ങൾ ഈ പേജ് നേരിട്ട് ആക്‌സസ് ചെയ്‌തതിനാൽ പ്രോസസ്സ് ചെയ്യാൻ ഡാറ്റയൊന്നുമില്ല. നിങ്ങൾക്ക് പ്രധാന പേജിലേക്ക് പോകാം.

"); }

//ലഭിച്ച ക്യാപ്‌ച if(isset($_POST["captcha"]))( //ലൈനിൻ്റെ തുടക്കത്തിലും അവസാനത്തിലും ഉള്ള ഇടങ്ങൾ ട്രിം ചെയ്യുക $captcha = trim($_POST["captcha"]); if(! ശൂന്യമായ($captcha ))( //സെഷനിൽ നിന്നുള്ള മൂല്യവുമായി ലഭിച്ച മൂല്യം താരതമ്യം ചെയ്യുക. if(($_SESSION["rand"] != $captcha) && ($_SESSION["rand"] != "")) (// ക്യാപ്‌ച തെറ്റാണെങ്കിൽ, ഞങ്ങൾ ഉപയോക്താവിനെ അംഗീകൃത പേജിലേക്ക് തിരികെ കൊണ്ടുവരും, കൂടാതെ അവൻ തെറ്റായ ക്യാപ്‌ച $error_message = " നൽകിയതായി ഒരു പിശക് സന്ദേശം ഞങ്ങൾ അവനു പ്രദർശിപ്പിക്കും.

പിശക്!നിങ്ങൾ തെറ്റായ ക്യാപ്‌ചയാണ് നൽകിയത്

"; // പിശക് സന്ദേശം സെഷനിൽ സംരക്ഷിക്കുക. $_SESSION["error_messages"] = $error_message; // അംഗീകൃത പേജ് തലക്കെട്ടിലേക്ക് ഉപയോക്താവിനെ തിരികെ നൽകുക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: " .$address_site ."/form_auth.php" //Stop thescript exit( )else( $error_message = "

പിശക്!ക്യാപ്‌ച എൻട്രി ഫീൽഡ് ശൂന്യമായിരിക്കരുത്.

"; // പിശക് സന്ദേശം സെഷനിൽ സംരക്ഷിക്കുക. $_SESSION["error_messages"] = $error_message; // അംഗീകൃത പേജ് തലക്കെട്ടിലേക്ക് ഉപയോക്താവിനെ തിരികെ നൽകുക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: " .$address_site ."/form_auth.php"); //(2) ഇമെയിൽ വിലാസം പ്രോസസ്സ് ചെയ്യുന്നതിനുള്ള സ്ഥലം //(4) രചിക്കുന്നതിനുള്ള സ്ഥലം. ഡാറ്റാബേസിലേക്കുള്ള ഒരു അഭ്യർത്ഥന )else ( //ക്യാപ്‌ച പാസ്സാക്കിയില്ലെങ്കിൽ പുറത്തുകടക്കുക("

പിശക്!സ്ഥിരീകരണ കോഡ് ഇല്ല, അതായത് ഒരു ക്യാപ്‌ച കോഡ്. നിങ്ങൾക്ക് പ്രധാന പേജിലേക്ക് പോകാം.

"); }

ഉപയോക്താവ് സ്ഥിരീകരണ കോഡ് ശരിയായി നൽകിയിട്ടുണ്ടെങ്കിൽ, ഞങ്ങൾ മുന്നോട്ട് പോകും, ​​അല്ലാത്തപക്ഷം ഞങ്ങൾ അവനെ അംഗീകാര പേജിലേക്ക് തിരികെ നൽകും.

മെയിലിംഗ് വിലാസം പരിശോധിക്കുന്നു

//ലൈനിൻ്റെ തുടക്കത്തിലും അവസാനത്തിലും ഇടങ്ങൾ ട്രിം ചെയ്യുക $email = trim($_POST["email"]); if(isset($_POST["email"]))( if(!empty($email))( $email = htmlspecialchars($email, ENT_QUOTES); //ഒരു സാധാരണ പദപ്രയോഗം ഉപയോഗിച്ച് ലഭിച്ച ഇമെയിൽ വിലാസത്തിൻ്റെ ഫോർമാറ്റ് പരിശോധിക്കുക $ reg_email = " /^**@(+(*+)*\.)++/i" //സ്വീകരിച്ച ഇമെയിൽ വിലാസത്തിൻ്റെ ഫോർമാറ്റ് സാധാരണ പദപ്രയോഗവുമായി പൊരുത്തപ്പെടുന്നില്ലെങ്കിൽ(!preg_match($reg_email, $email ))( // സെഷൻ പിശക് സന്ദേശത്തിലേക്ക് സംരക്ഷിക്കുക. $_SESSION["error_messages"] .= "

നിങ്ങൾ തെറ്റായ ഒരു ഇമെയിൽ നൽകി

"; //ഉപയോക്താവിനെ അംഗീകൃത പേജ് ഹെഡറിലേക്ക് തിരികെ കൊണ്ടുവരിക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_auth.php"); //സ്ക്രിപ്റ്റ് എക്സിറ്റ് നിർത്തുക(); ) )else ( // പിശക് സന്ദേശം സെഷനിൽ സംരക്ഷിക്കുക. $_SESSION["error_messages"] .= "

ഒരു തപാൽ വിലാസം (ഇമെയിൽ) നൽകുന്നതിനുള്ള ഫീൽഡ് ശൂന്യമായിരിക്കരുത്.

"; //ഉപയോക്താവിനെ രജിസ്ട്രേഷൻ പേജ് ഹെഡറിലേക്ക് മടങ്ങുക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_register.php"); //സ്ക്രിപ്റ്റ് എക്സിറ്റ് നിർത്തുക(); ) )else ( // പിശക് സന്ദേശം സെഷനിൽ സംരക്ഷിക്കുക. $_SESSION["error_messages"] .= "

ഇമെയിൽ ഇൻപുട്ട് ഫീൽഡ് കാണുന്നില്ല

"; //ഉപയോക്താവിനെ അംഗീകൃത പേജ് ഹെഡറിലേക്ക് തിരികെ കൊണ്ടുവരിക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_auth.php"); //സ്ക്രിപ്റ്റ് എക്സിറ്റ് നിർത്തുക(); ) // (3) പാസ്‌വേഡ് പ്രോസസ്സിംഗ് ഏരിയ

ഉപയോക്താവ് തെറ്റായ ഫോർമാറ്റിൽ ഒരു ഇമെയിൽ വിലാസം നൽകിയാൽ അല്ലെങ്കിൽ ഇമെയിൽ വിലാസ ഫീൽഡിൻ്റെ മൂല്യം ശൂന്യമാണെങ്കിൽ, ഞങ്ങൾ അവനെ അധികാരപ്പെടുത്തൽ പേജിലേക്ക് തിരികെ കൊണ്ടുവരുന്നു, അവിടെ ഞങ്ങൾ ഇതിനെക്കുറിച്ച് ഒരു സന്ദേശം പ്രദർശിപ്പിക്കും.

പാസ്‌വേഡ് സ്ഥിരീകരണം

പ്രോസസ്സ് ചെയ്യേണ്ട അടുത്ത ഫീൽഡ് പാസ്‌വേഡ് ഫീൽഡാണ്. നിർദ്ദിഷ്ട സ്ഥലത്തേക്ക്" //(3) പാസ്‌വേഡ് പ്രോസസ്സിംഗിനുള്ള സ്ഥലം", ഞങ്ങള് എഴുതുന്നു:

If(isset($_POST["പാസ്‌വേഡ്"]))( //സ്‌ട്രിംഗിൻ്റെ തുടക്കത്തിലും അവസാനത്തിലും സ്‌പെയ്‌സുകൾ ട്രിം ചെയ്യുക $password = trim($_POST["password"]); if(!empty($password))( $password = htmlspecialchars($password, ENT_QUOTES); "

നിങ്ങളുടെ പാസ്‌വേഡ് നൽകുക

"; //ഉപയോക്താവിനെ രജിസ്ട്രേഷൻ പേജ് ഹെഡറിലേക്ക് മടങ്ങുക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_auth.php"); //സ്ക്രിപ്റ്റ് എക്സിറ്റ് നിർത്തുക(); ) )else ( // പിശക് സന്ദേശം സെഷനിൽ സംരക്ഷിക്കുക. $_SESSION["error_messages"] .= "

പാസ്‌വേഡ് ഫീൽഡ് കാണുന്നില്ല

"; //ഉപയോക്താവിനെ രജിസ്ട്രേഷൻ പേജ് ഹെഡറിലേക്ക് മടങ്ങുക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_auth.php"); //സ്ക്രിപ്റ്റ് എക്സിറ്റ് നിർത്തുക(); )

ലഭിച്ച പാസ്‌വേഡ് എൻക്രിപ്റ്റ് ചെയ്യാൻ ഇവിടെ md5() ഫംഗ്‌ഷൻ ഉപയോഗിക്കുന്നു, കാരണം ഞങ്ങളുടെ പാസ്‌വേഡുകൾ ഡാറ്റാബേസിൽ എൻക്രിപ്റ്റ് ചെയ്ത രൂപത്തിലാണ്. എൻക്രിപ്ഷനിലെ ഒരു അധിക രഹസ്യ വാക്ക്, ഞങ്ങളുടെ കാര്യത്തിൽ " ഏറ്റവും_രഹസ്യം"ഉപയോക്താവിനെ രജിസ്റ്റർ ചെയ്യുമ്പോൾ ഉപയോഗിച്ച ഒന്നായിരിക്കണം.

ലഭിച്ച ഇമെയിൽ വിലാസത്തിന് തുല്യമായ ഇമെയിൽ വിലാസവും ലഭിച്ച പാസ്‌വേഡിന് തുല്യമായ പാസ്‌വേഡും ഉള്ള ഒരു ഉപയോക്താവിനെ തിരഞ്ഞെടുക്കുന്നതിന് നിങ്ങൾ ഇപ്പോൾ ഡാറ്റാബേസിലേക്ക് ഒരു അന്വേഷണം നടത്തേണ്ടതുണ്ട്.

//ഉപയോക്താവിൻ്റെ തിരഞ്ഞെടുപ്പിനെ അടിസ്ഥാനമാക്കി ഡാറ്റാബേസിൽ അന്വേഷണം. $result_query_select = $mysqli->query("ഉപയോക്താക്കളിൽ നിന്ന് തിരഞ്ഞെടുക്കുക * എവിടെ ഇമെയിൽ = "".$email."" കൂടാതെ പാസ്‌വേഡ് = "".$പാസ്‌വേഡ്."""); if(!$result_query_select)( // പിശക് സന്ദേശം സെഷനിൽ സംരക്ഷിക്കുക. $_SESSION["error_messages"] .= "

ഡാറ്റാബേസിൽ നിന്ന് ഒരു ഉപയോക്താവിനെ തിരഞ്ഞെടുക്കുമ്പോൾ ചോദ്യ പിശക്

"; //ഉപയോക്താവിനെ രജിസ്ട്രേഷൻ പേജ് ഹെഡറിലേക്ക് മടങ്ങുക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_auth.php"); //സ്ക്രിപ്റ്റ് എക്സിറ്റ് നിർത്തുക(); )else( //ഡാറ്റാബേസിൽ അത്തരത്തിലുള്ള ഡാറ്റയുള്ള ഉപയോക്താവ് ഇല്ലെങ്കിൽ പരിശോധിക്കുക, തുടർന്ന് ഒരു പിശക് സന്ദേശം പ്രദർശിപ്പിക്കുകയാണെങ്കിൽ ($result_query_select->num_rows == 1)( // നൽകിയ ഡാറ്റ ഡാറ്റാബേസിൽ നിന്നുള്ള ഡാറ്റയുമായി പൊരുത്തപ്പെടുന്നുവെങ്കിൽ, തുടർന്ന് സംരക്ഷിക്കുക $_SESSION["ഇമെയിൽ"] = $_SESSION-ലേക്കുള്ള ലോഗിൻ, പാസ്‌വേഡ് //ഉപയോക്താവിനെ പ്രധാന പേജ് തലക്കെട്ടിലേക്ക് തിരികെ കൊണ്ടുവരിക("HTTP/1.1 301" ."/index.php");else( // പിശക് സന്ദേശം സെഷനിൽ സംരക്ഷിക്കുക. $_SESSION["error_messages"] .= "

തെറ്റായ ലോഗിൻ കൂടാതെ/അല്ലെങ്കിൽ പാസ്‌വേഡ്

"; //ഉപയോക്താവിനെ അംഗീകൃത പേജ് ഹെഡറിലേക്ക് തിരികെ കൊണ്ടുവരിക("HTTP/1.1 301 ശാശ്വതമായി നീക്കി"); തലക്കെട്ട്("ലൊക്കേഷൻ: ".$address_site."/form_auth.php"); //സ്ക്രിപ്റ്റ് എക്സിറ്റ് നിർത്തുക(); ))

സൈറ്റിൽ നിന്ന് പുറത്തുകടക്കുക

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

സൈറ്റ് ഹെഡറിൽ (ഫയൽ header.php), സെഷൻ ഉപയോഗിച്ച് ഉപയോക്താവിന് ഇതിനകം അംഗീകാരം ലഭിച്ചിട്ടുണ്ടോ എന്ന് ഞങ്ങൾ പരിശോധിക്കുന്നു. ഇല്ലെങ്കിൽ, ഞങ്ങൾ രജിസ്ട്രേഷനും അംഗീകാര ലിങ്കുകളും പ്രദർശിപ്പിക്കും, അല്ലാത്തപക്ഷം (അദ്ദേഹത്തിന് അധികാരമുണ്ടെങ്കിൽ), രജിസ്ട്രേഷനും അംഗീകാര ലിങ്കുകൾക്കും പകരം ഞങ്ങൾ ലിങ്ക് പ്രദർശിപ്പിക്കും പുറത്ത്.

ഫയലിൽ നിന്ന് പരിഷ്കരിച്ച ഒരു കോഡ് header.php:

രജിസ്ട്രേഷൻ

പുറത്ത്

സൈറ്റിൽ നിന്നുള്ള എക്സിറ്റ് ലിങ്കിൽ നിങ്ങൾ ക്ലിക്ക് ചെയ്യുമ്പോൾ, ഞങ്ങൾ ഒരു ഫയലിലേക്ക് കൊണ്ടുപോകും logout.php, സെഷനിൽ നിന്നുള്ള ഇമെയിൽ വിലാസവും പാസ്‌വേഡും ഉപയോഗിച്ച് ഞങ്ങൾ സെല്ലുകളെ നശിപ്പിക്കുന്നു. ഇതിനുശേഷം, ലിങ്ക് ക്ലിക്ക് ചെയ്ത പേജിലേക്ക് ഞങ്ങൾ ഉപയോക്താവിനെ തിരികെ നൽകുന്നു പുറത്ത്.

ഫയൽ കോഡ് logout.php:

അത്രയേയുള്ളൂ. എങ്ങനെയെന്ന് ഇപ്പോൾ നിങ്ങൾക്കറിയാം രജിസ്ട്രേഷനും അംഗീകാര ഫോമുകളും നടപ്പിലാക്കുകയും പ്രോസസ്സ് ചെയ്യുകയും ചെയ്യുകനിങ്ങളുടെ വെബ്‌സൈറ്റിലെ ഉപയോക്താവ്. ഈ ഫോമുകൾ മിക്കവാറും എല്ലാ വെബ്‌സൈറ്റുകളിലും കാണപ്പെടുന്നു, അതിനാൽ അവ എങ്ങനെ സൃഷ്ടിക്കണമെന്ന് ഓരോ പ്രോഗ്രാമറും അറിഞ്ഞിരിക്കണം.

ക്ലയൻ്റ് സൈഡിലും (ബ്രൗസറിൽ, JavaScript, jQuery ഉപയോഗിച്ച്) സെർവർ വശത്തും (PHP ഉപയോഗിച്ച്) ഇൻപുട്ട് ഡാറ്റ എങ്ങനെ സാധൂകരിക്കാമെന്നും ഞങ്ങൾ പഠിച്ചു. ഞങ്ങളും പഠിച്ചു സൈറ്റ് വിടുന്നതിനുള്ള ഒരു നടപടിക്രമം നടപ്പിലാക്കുക.

എല്ലാ സ്ക്രിപ്റ്റുകളും പരീക്ഷിച്ചു, പ്രവർത്തിക്കുന്നു. ഈ ലിങ്കിൽ നിന്ന് ഈ ചെറിയ സൈറ്റിൻ്റെ ഫയലുകൾ ഉപയോഗിച്ച് നിങ്ങൾക്ക് ആർക്കൈവ് ഡൗൺലോഡ് ചെയ്യാം.

ഭാവിയിൽ ഞാൻ വിവരിക്കുന്ന ഒരു ലേഖനം എഴുതും. ഞാൻ വിശദീകരിക്കുന്ന ഒരു ലേഖനം എഴുതാനും ഞാൻ പദ്ധതിയിടുന്നു (പേജ് റീലോഡ് ചെയ്യാതെ). അതിനാൽ, പുതിയ ലേഖനങ്ങളുടെ പ്രകാശനത്തെക്കുറിച്ച് അറിയുന്നതിന്, നിങ്ങൾക്ക് എൻ്റെ വെബ്സൈറ്റ് സബ്സ്ക്രൈബ് ചെയ്യാം.

നിങ്ങൾക്ക് എന്തെങ്കിലും ചോദ്യങ്ങളുണ്ടെങ്കിൽ, ദയവായി എന്നെ ബന്ധപ്പെടുക, ലേഖനത്തിൽ എന്തെങ്കിലും പിശക് ശ്രദ്ധയിൽപ്പെട്ടാൽ, ദയവായി എന്നെ അറിയിക്കുക.

പാഠ പദ്ധതി (ഭാഗം 5):

  1. അംഗീകാര ഫോമിനായി ഒരു HTML ഘടന സൃഷ്ടിക്കുന്നു
  2. ലഭിച്ച ഡാറ്റ ഞങ്ങൾ പ്രോസസ്സ് ചെയ്യുന്നു
  3. സൈറ്റ് ഹെഡറിൽ ഞങ്ങൾ ഉപയോക്താവിൻ്റെ ആശംസകൾ പ്രദർശിപ്പിക്കുന്നു

നിങ്ങൾക്ക് ലേഖനം ഇഷ്ടപ്പെട്ടോ?



സൈറ്റിൽ പുതിയത്

>

ഏറ്റവും ജനപ്രിയമായ