შესანიშნავი სარეგისტრაციო სისტემის შექმნა PHP, MySQL და jQuery-ის გამოყენებით. ეტაპობრივი რეგისტრაცია jQuery-ის გამოყენებით ანიმაციური გადართვა ფორმებს შორის jQuery-ის გამოყენებით

თუ თქვენ გჭირდებათ თქვენი ვებსაიტის ერთ-ერთი განყოფილება ხელმისაწვდომი გახადოთ შეზღუდული, მაგრამ დაუზუსტებელი ადამიანთა წრეებისთვის, ამის გაკეთების ყველაზე მარტივი გზაა მომხმარებლების რეგისტრაცია და ავტორიზაცია. მომხმარებლების ავტორიზაციის მრავალი გზა არსებობს. თქვენ შეგიძლიათ გამოიყენოთ როგორც ვებ სერვერის ინსტრუმენტები, ასევე პროგრამირების ენის ინსტრუმენტები. ჩვენ ვისაუბრებთ შემთხვევაზე, როდესაც გამოიყენება PHP სესიები.

თქვენ ალბათ გსურთ ნახოთ ამ ფორმის შექმნის უფრო თანამედროვე გზა. ჯერ კიდევ მაქვს გეგმები, რომ სრულად წარმოვადგინო თანამედროვე და შესაბამისი სახით, მაგრამ ხედავთ, რომ ფორმა უკუკავშირიშეიძლება აშენდეს PHP-ში ობიექტზე ორიენტირებული ტექნიკის გამოყენებით.

პირველ რიგში, მოდით განვიხილოთ ყველა ის ნაბიჯი, რომელსაც შემდეგ გადავდგამთ. რა გვჭირდება კიდეც? ჩვენ გვჭირდება სკრიპტი, რომელიც დაარეგისტრირებს მომხმარებელს, ავტორიზაციას გაუწევს მომხმარებელს, ავტორიზაციის შემდეგ სადღაც გადამისამართებს მომხმარებელს. ასევე დაგვჭირდება გვერდის შექმნა, რომელიც დაცული იქნება არაავტორიზებული მომხმარებლების წვდომისგან. რეგისტრაციისა და ავტორიზაციისთვის დაგვჭირდება შექმნა HTML ფორმები. ჩვენ შევინახავთ ინფორმაციას რეგისტრირებული მომხმარებლების შესახებ მონაცემთა ბაზაში. ეს ნიშნავს, რომ ჩვენ ჯერ კიდევ გვჭირდება სკრიპტი DBMS-თან დასაკავშირებლად. მთელი ჩვენი სამუშაო შესრულდება ფუნქციებით, რომლებსაც ჩვენ თვითონ ვწერთ. ჩვენ შევინახავთ ამ ფუნქციებს ცალკე ფაილში.

ასე რომ, ჩვენ გვჭირდება შემდეგი ფაილები:

  • კავშირი DBMS-თან;
  • საბაჟო ფუნქციები;
  • ავტორიზაცია;
  • რეგისტრაცია;
  • დაცული გვერდი;
  • მომხმარებლის გამორთვის სკრიპტი;
  • სკრიპტი, რომელიც ამოწმებს მომხმარებლის ავტორიზაციის სტატუსს;
  • სტილის ფურცელი ჩვენი გვერდების უმარტივესი დიზაინისთვის.

ეს ყველაფერი უაზრო იქნება, თუ მონაცემთა ბაზაში შესაბამისი ცხრილი არ გექნებათ. გაუშვით თქვენი DBMS მართვის ინსტრუმენტი (PhpMyAdmin ან ბრძანების ხაზი, რაც უფრო მოსახერხებელია) და განახორციელეთ მასში შემდეგი მოთხოვნა:

შექმენით ცხრილი `მომხმარებლები` (`id` int(11) NOT NULL AUTO_INCREMENT, `login` char(16) NOT NULL, `პაროლი` char(40) NOT NULL, `reg_date` დროის შტამპი NOT NULL DEFAULT CURRENT_TIMEYSTAMP, PRI id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

მე დავასახელებ ჩვენს სკრიპტის ფაილებს ასე (ისინი ყველა იქნება ერთ დირექტორიაში):

  • database.php;
  • ფუნქციები.php;
  • login.php;
  • რეგისტრაცია.php;
  • index.php;
  • გამოსვლა.php;
  • checkAuth.php;
  • სტილი.css.

თითოეული მათგანის მიზანი, დარწმუნებული ვარ, თქვენთვის გასაგებია. დავიწყოთ DBMS-თან დაკავშირების სკრიპტით. თქვენ უკვე ნახეთ. უბრალოდ შეინახეთ ამ სკრიპტის კოდი ფაილში, სახელწოდებით database.php. ჩვენ გამოვაცხადებთ მორგებულ ფუნქციებს functions.php ფაილში. როგორ იმუშავებს ეს ყველაფერი? არაავტორიზებული მომხმარებელი ცდილობს შევიდეს დაცულ დოკუმენტზე index.php, სისტემა ამოწმებს ავტორიზებულია თუ არა მომხმარებელი, თუ მომხმარებელი არ არის ავტორიზებული, ის გადამისამართებულია ავტორიზაციის გვერდზე. შესვლის გვერდზე მომხმარებელმა უნდა ნახოს ავტორიზაციის ფორმა. Მოდი გავაკეთოთ ეს.

მომხმარებლის ავტორიზაცია თქვენი შესვლა: პაროლი:

რეგისტრაცია.

ახლა ჩვენს ფორმას გარკვეული ფორმა უნდა მიეცეს. ამავე დროს, ჩვენ განვსაზღვრავთ წესებს სხვა ელემენტებისთვის. ველოდები წინ, სრულად წარმოგიდგენთ სტილის ფურცლის შინაარსს.

/* style.css ფაილი */ .row ( margin-bottom:10px; width:220px;) .row label ( display:block; font-weight:bold; ) .row input.text (font-size:1.2em; padding:2px 5px;) .to_reg (font-size:0.9em;) .ინსტრუქცია (font-size:0.8em; ფერი:#aaaaaa; margin-left:2px; კურსორი:default;) .error (ფერი:წითელი; ზღვარი მარცხნივ: 3 პიქსელი)

თუ ყველაფერი სწორად გაკეთდა, ბრაუზერში უნდა გქონდეთ შემდეგი:

რა თქმა უნდა, ჯერ ერთი დარეგისტრირებული მომხმარებელი არ გვყავს და შესასვლელად საჭიროა დარეგისტრირება. მოდით გავაკეთოთ სარეგისტრაციო ფორმა.

მომხმარებლის რეგისტრაცია შეიყვანეთ თქვენი შესვლა: მომხმარებლის რეგისტრაცია შეიყვანეთ თქვენი შესვლა:

ეს ფაილი dbconnect.phpუნდა იყოს დაკავშირებული ფორმის დამმუშავებლებთან.

დააკვირდით ცვლადს $address_site, აქ მე მივუთითე ჩემი სატესტო საიტის სახელი, რომელზეც ვიმუშავებ. გთხოვთ მიუთითოთ თქვენი საიტის დასახელება შესაბამისად.

საიტის სტრუქტურა

ახლა მოდით შევხედოთ ჩვენი საიტის HTML სტრუქტურას.

ჩვენ გადავიტანთ საიტის სათაურს და ქვედა ნაწილს ცალკეულ ფაილებში, header.phpდა ძირი.php. ჩვენ მათ ყველა გვერდზე შევიტანთ. კერძოდ მთავარ გვერდზე (ფაილი index.php), სარეგისტრაციო ფორმის მქონე გვერდზე (ფაილი form_register.php) და ავტორიზაციის ფორმის მქონე გვერდზე (ფაილი form_auth.php).

დაბლოკეთ ჩვენი ბმულებით, რეგისტრაციადა ავტორიზაცია, დაამატეთ ისინი საიტის სათაურში ისე, რომ ისინი ყველა გვერდზე იყოს ნაჩვენები. ერთი ბმული შევა სარეგისტრაციო ფორმის გვერდზე (ფაილი form_register.php) და მეორე გვერდზე ავტორიზაციის ფორმის (ფაილი form_auth.php).

header.php ფაილის შიგთავსი:

ჩვენი საიტის სახელი

შედეგად, ჩვენი მთავარი გვერდი ასე გამოიყურება:


რა თქმა უნდა, თქვენს საიტს შეიძლება ჰქონდეს სრულიად განსხვავებული სტრუქტურა, მაგრამ ეს ჩვენთვის ახლა არ არის მნიშვნელოვანი. მთავარი ის არის, რომ არსებობს ბმულები (ღილაკები) რეგისტრაციისა და ავტორიზაციისთვის.

ახლა გადავიდეთ რეგისტრაციის ფორმაზე. როგორც უკვე გესმით, ჩვენ გვაქვს ფაილში form_register.php.

გადადით მონაცემთა ბაზაში (phpMyAdmin-ში), გახსენით ცხრილის სტრუქტურა მომხმარებლებიდა ნახეთ რა სფეროები გვჭირდება. ეს ნიშნავს, რომ ჩვენ გვჭირდება ველები სახელისა და გვარის ჩასაწერად, ველი საფოსტო მისამართის (ელ. ფოსტა) და პაროლის შეყვანის ველი. და უსაფრთხოების მიზნით, ჩვენ დავამატებთ ველს captcha-ს შესაყვანად.

სერვერზე, სარეგისტრაციო ფორმის დამუშავების შედეგად, შეიძლება მოხდეს სხვადასხვა შეცდომები, რის გამოც მომხმარებელი ვერ დარეგისტრირდება. ამიტომ, იმისათვის, რომ მომხმარებელმა გაიგოს, რატომ ვერ ხერხდება რეგისტრაცია, აუცილებელია ამ შეცდომების შესახებ შეტყობინებების ჩვენება.

ფორმის ჩვენებამდე დაამატეთ ბლოკი სესიიდან შეცდომის შეტყობინებების საჩვენებლად.

და კიდევ ერთი, თუ მომხმარებელი უკვე ავტორიზებულია და ცნობისმოყვარეობის გამო, ბრაუზერის მისამართების ზოლში ჩაწერით პირდაპირ გადადის რეგისტრაციის გვერდზე. site_address/form_register.php, მაშინ ამ შემთხვევაში სარეგისტრაციო ფორმის ნაცვლად გამოვაჩენთ სათაურს, რომ ის უკვე რეგისტრირებულია.

ზოგადად, ფაილის კოდი form_register.phpჩვენ ეს შეგვიძლია:

თქვენ უკვე დარეგისტრირებული ხართ

ბრაუზერში რეგისტრაციის ფორმის გვერდი ასე გამოიყურება:


საჭირო ატრიბუტის გამოყენებით ჩვენ ყველა ველი სავალდებულო გავხადეთ.

ყურადღება მიაქციეთ სარეგისტრაციო ფორმის კოდს, სადაც ნაჩვენებია captcha:


ჩვენ დავაზუსტეთ ფაილის გზა გამოსახულების src ატრიბუტის მნიშვნელობაში captcha.php, რომელიც ქმნის ამ captcha-ს.

მოდით შევხედოთ ფაილის კოდს captcha.php:

კოდი კარგად არის კომენტირებული, ამიტომ მხოლოდ ერთ წერტილზე გავამახვილებ ყურადღებას.

ფუნქციის შიგნით imageTtfText(), მითითებულია შრიფტისკენ მიმავალი გზა ვერდანა.ტტფ. ასე რომ, რომ captcha-მ სწორად იმუშაოს, ჩვენ უნდა შევქმნათ საქაღალდე შრიფტებიდა განათავსეთ შრიფტის ფაილი იქ ვერდანა.ტტფ. შეგიძლიათ იპოვოთ და გადმოწეროთ ინტერნეტიდან, ან წაიღოთ არქივიდან ამ სტატიის მასალებით.

ჩვენ დავასრულეთ HTML სტრუქტურა, დროა გადავიდეთ.

ელ.ფოსტის მოქმედების შემოწმება jQuery-ის გამოყენებით

ნებისმიერ ფორმას სჭირდება შეყვანილი მონაცემების ვალიდობის შემოწმება, როგორც კლიენტის მხარეს ( JavaScript, jQuery-ის გამოყენებით), ასევე სერვერის მხარეს.

განსაკუთრებული ყურადღება უნდა მივაქციოთ ელფოსტის ველს. ძალიან მნიშვნელოვანია, რომ შეყვანილი საფოსტო მისამართი მოქმედებს.

ამ შეყვანის ველისთვის ჩვენ დავაყენეთ ელ.ფოსტის ტიპი (type="email"), ეს ოდნავ გვაფრთხილებს არასწორი ფორმატების შესახებ. მაგრამ ეს საკმარისი არ არის, რადგან კოდის ინსპექტორის საშუალებით, რომელსაც ბრაუზერი გვაწვდის, ჩვენ მარტივად შეგვიძლია შევცვალოთ ატრიბუტის მნიშვნელობა ტიპითან ელ on ტექსტიდა ეს არის ის, ჩვენი ჩეკი აღარ იქნება ძალაში.


და ამ შემთხვევაში, ჩვენ უნდა გავაკეთოთ უფრო საიმედო შემოწმება. ამისათვის ჩვენ გამოვიყენებთ jQuery ბიბლიოთეკას JavaScript-დან.

jQuery ბიბლიოთეკის დასაკავშირებლად, ფაილში header.phpტეგებს შორის , დახურვის ტეგამდე , დაამატეთ ეს ხაზი:

ამ ხაზის შემდეგ, ჩვენ დავამატებთ ელ.ფოსტის დადასტურების კოდს. აქ ჩვენ დავამატებთ კოდს შეყვანილი პაროლის სიგრძის შესამოწმებლად. მისი სიგრძე უნდა იყოს მინიმუმ 6 სიმბოლო.

ამ სკრიპტის გამოყენებით, ჩვენ ვამოწმებთ შეყვანილ ელ.ფოსტის მისამართს მოქმედებისთვის. თუ მომხმარებელმა შეიყვანა არასწორი ელფოსტა, ჩვენ ვაჩვენებთ შეცდომის შეტყობინებას ამის შესახებ და გამორთეთ ფორმის გაგზავნის ღილაკი. თუ ყველაფერი კარგადაა, მაშინ ჩვენ ვხსნით შეცდომას და ვააქტიურებთ ფორმის გაგზავნის ღილაკს.

ასე რომ, ჩვენ დავასრულეთ ფორმის ვალიდაცია კლიენტის მხარეს. ახლა ჩვენ შეგვიძლია გავაგზავნოთ ის სერვერზე, სადაც ასევე გავაკეთებთ რამდენიმე შემოწმებას და დავამატებთ მონაცემებს მონაცემთა ბაზაში.

Მომხმარებლის რეგისტრაცია

ფორმას ვაგზავნით ფაილში დასამუშავებლად რეგისტრაცია.php, POST მეთოდით. ამ დამმუშავებლის ფაილის სახელი მითითებულია ატრიბუტის მნიშვნელობაში მოქმედება. და გაგზავნის მეთოდი მითითებულია ატრიბუტის მნიშვნელობაში მეთოდი.

გახსენით ეს ფაილი რეგისტრაცია.phpდა პირველი, რაც უნდა გავაკეთოთ, არის დავწეროთ სესიის გაშვების ფუნქცია და დავაკავშიროთ ადრე შექმნილი ფაილი dbconnect.php(ამ ფაილში ჩვენ დავაკავშირეთ მონაცემთა ბაზა). და ასევე, მოდით დაუყოვნებლივ გამოვაცხადოთ უჯრედები შეცდომის_შეტყობინებებიდა წარმატების_შეტყობინებებიგლობალურ სესიების მასივში. IN შეცდომის_შეტყობინებებიჩვენ ჩავწერთ ყველა შეცდომის შეტყობინებას, რომელიც წარმოიქმნება ფორმის დამუშავების დროს და ში succes_messagesჩვენ ჩავწერთ სასიხარულო შეტყობინებებს.

სანამ გავაგრძელებთ, უნდა შევამოწმოთ, იყო თუ არა ფორმა წარმოდგენილი. თავდამსხმელს შეუძლია შეხედოს ატრიბუტის მნიშვნელობას მოქმედებაფორმიდან და გაარკვიეთ რომელი ფაილი ამუშავებს ამ ფორმას. და მას შეიძლება ჰქონდეს იდეა, გადავიდეს პირდაპირ ამ ფაილზე, ბრაუზერის მისამართის ზოლში შემდეგი მისამართის აკრეფით: http://site_address/register.php

ასე რომ, ჩვენ უნდა შევამოწმოთ უჯრედი გლობალურ POST მასივში, რომლის სახელი ემთხვევა ფორმიდან ჩვენი "რეგისტრაციის" ღილაკის სახელს. ამ გზით ვამოწმებთ, დააწკაპუნეთ თუ არა ღილაკზე „რეგისტრაცია“.

თუ თავდამსხმელი შეეცდება პირდაპირ ამ ფაილზე გადასვლას, ისინი მიიღებენ შეცდომის შეტყობინებას. შეგახსენებთ, რომ $address_site ცვლადი შეიცავს საიტის სახელს და ის დეკლარირებული იყო ფაილში dbconnect.php.

სესიაში captcha მნიშვნელობა დაემატა ფაილში მისი გენერირებისას captcha.php. შეგახსენებთ, მე კვლავ გაჩვენებთ კოდის ამ ნაწილს ფაილიდან captcha.php, სადაც captcha მნიშვნელობა ემატება სესიას:

ახლა მოდით გადავიდეთ თავად გადამოწმებაზე. ფაილში რეგისტრაცია.php, if ბლოკის შიგნით, სადაც ვამოწმებთ დააწკაპუნეთ თუ არა ღილაკზე "რეგისტრაცია", უფრო სწორად სად არის მითითებული "კომენტარი" // (1) ადგილი კოდის შემდეგი ნაწილისთვის"ჩვენ ვწერთ:

//შეამოწმეთ მიღებული captcha //შეამცირეთ შუალედები სტრიქონის დასაწყისიდან და ბოლოდან $captcha = trim($_POST["captcha"]); if(isset($_POST["captcha"]) && !empty($captcha))( //შეადარეთ მიღებული მნიშვნელობა სესიის მნიშვნელობასთან. if(($_SESSION["rand"] != $captcha) && ($_SESSION ["rand"] != ""))( // თუ captcha არ არის სწორი, მაშინ ჩვენ ვაბრუნებთ მომხმარებელს რეგისტრაციის გვერდზე და იქ გამოვაჩენთ შეცდომის შეტყობინებას, რომ მან არასწორი captcha შეიყვანა $error_message = ".

შეცდომა! თქვენ შეიყვანეთ არასწორი captcha

"; // შეინახეთ შეცდომის შესახებ შეტყობინება სესიაზე. $_SESSION["error_messages"] = $error_message; // დააბრუნეთ მომხმარებელი რეგისტრაციის გვერდის სათაურში ("HTTP/1.1 301 Moved Permanently"); header("Location: " .$address_site ."/form_register.php" //Stop the script exit( // (2) მოათავსეთ კოდის შემდეგი ნაწილი )else( //თუ captcha არ არის გადაცემული ან ის ცარიელია); "

შეცდომა! არ არსებობს დამადასტურებელი კოდი, ანუ captcha კოდი. შეგიძლიათ გადახვიდეთ მთავარ გვერდზე.

"); }

შემდეგი, ჩვენ უნდა დავამუშაოთ მიღებული მონაცემები POST მასივიდან. უპირველეს ყოვლისა, ჩვენ უნდა შევამოწმოთ გლობალური POST მასივის შინაარსი, ანუ არის თუ არა იქ უჯრედები, რომელთა სახელები შეესაბამება ჩვენი ფორმის შეყვანის ველების სახელებს.

თუ უჯრედი არსებობს, მაშინ ამ უჯრიდან ვჭრით სივრცეებს ​​ხაზის დასაწყისიდან და ბოლოდან, წინააღმდეგ შემთხვევაში, მომხმარებელს სარეგისტრაციო ფორმის საშუალებით ვაბრუნებთ გვერდზე.

შემდეგ, მას შემდეგ, რაც ინტერვალები მოვაჭრით, ვამატებთ ხაზს ცვლადში და ვამოწმებთ ამ ცვლადს, თუ ის ცარიელი არ არის, შემდეგ გადავდივართ, წინააღმდეგ შემთხვევაში, მომხმარებელს ვაბრუნებთ უკან სარეგისტრაციო ფორმით.

ჩასვით ეს კოდი მითითებულ ადგილას" // (2) სივრცე კოდის შემდეგი ნაწილისთვის".

/* შეამოწმეთ არის თუ არა ფორმიდან გამოგზავნილი მონაცემები გლობალურ მასივში $_POST და გაგზავნილი მონაცემები ჩაალაგეთ ჩვეულებრივ ცვლადებში.*/ if(isset($_POST["first_name"]))( //შეამცირეთ სივრცეები თავიდანვე და სტრიქონის დასასრული $first_name = trim($_POST["first_name"] htmlspecialchars($first_name, ENT_QUOTES) )else( // შეინახეთ შეცდომის შეტყობინება სესიაზე. $_SESSION["error_messages"] .= "

შეიყვანეთ თქვენი სახელი

სახელის ველი აკლია

"; //მომხმარებლის დაბრუნება სარეგისტრაციო გვერდის სათაურში ("HTTP/1.1 301 გადაადგილებულია მუდმივად"); header("მდებარეობა: ".$address_site."/form_register.php"); //Stop the script exit(); ) 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 გადაადგილებულია მუდმივად"); header("მდებარეობა: ".$address_site."/form_register.php"); //Stop the script exit(); ) )else ( // შეინახეთ შეცდომის შეტყობინება სესიაზე. $_SESSION["error_messages"] .= "

გვარის ველი აკლია

"; //მომხმარებლის დაბრუნება სარეგისტრაციო გვერდის სათაურში ("HTTP/1.1 301 გადაადგილებულია მუდმივად"); header("მდებარეობა: ".$address_site."/form_register.php"); //Stop the script exit(); ) if( isset($_POST["ელფოსტა"]))( //შეამცირეთ სივრცეები სტრიქონის დასაწყისიდან და ბოლოდან $email = trim($_POST["email"]); if(!empty($email)) ( $email = htmlspecialchars ($email, ENT_QUOTES); // (3) კოდის მდებარეობა ელფოსტის მისამართის ფორმატის და მისი უნიკალურობის შესამოწმებლად )else( // შეინახეთ შეცდომის შეტყობინება სესიაზე. $_SESSION["error_messages"] .="

Შეიყვანეთ თქვენი ელექტრონული ფოსტა

"; //მომხმარებლის დაბრუნება სარეგისტრაციო გვერდის სათაურში ("HTTP/1.1 301 გადაადგილებულია მუდმივად"); header("მდებარეობა: ".$address_site."/form_register.php"); //Stop the script exit(); ) )else ( // შეინახეთ შეცდომის შეტყობინება სესიაზე. $_SESSION["error_messages"] .= "

"; //მომხმარებლის დაბრუნება სარეგისტრაციო გვერდის სათაურში ("HTTP/1.1 301 გადაადგილებულია მუდმივად"); header("მდებარეობა: ".$address_site."/form_register.php"); //Stop the script exit(); ) if( isset($_POST["პაროლი"]))( //შეამცირეთ სივრცეები სტრიქონის დასაწყისიდან და ბოლოდან $password = trim($_POST["პაროლი"]); if(!empty($password)) ( $password = htmlspecialchars ($password, ENT_QUOTES); //დაშიფრეთ პაროლი $password = md5($password."top_secret");else( //შეინახეთ შეცდომის შეტყობინება სესიაზე. $_SESSION["error_messages"] . = "

Შეიყვანეთ თქვენი პაროლი

"; //მომხმარებლის დაბრუნება სარეგისტრაციო გვერდის სათაურში ("HTTP/1.1 301 გადაადგილებულია მუდმივად"); header("მდებარეობა: ".$address_site."/form_register.php"); //Stop the script exit(); ) )else ( // შეინახეთ შეცდომის შეტყობინება სესიაზე. $_SESSION["error_messages"] .= "

"; //მომხმარებლის დაბრუნება სარეგისტრაციო გვერდის სათაურში ("HTTP/1.1 301 გადაადგილებულია მუდმივად"); header("მდებარეობა: ".$address_site."/form_register.php"); //Stop the script exit(); ) // (4) ადგილი მონაცემთა ბაზაში მომხმარებლის დამატების კოდისთვის

განსაკუთრებული მნიშვნელობა აქვს სფეროს ელ. ჩვენ უნდა შევამოწმოთ მიღებული საფოსტო მისამართის ფორმატი და მისი უნიკალურობა მონაცემთა ბაზაში. ანუ არის თუ არა უკვე დარეგისტრირებული მომხმარებელი იგივე ელ.ფოსტის მისამართით?

მითითებულ ადგილას" // (3) კოდის მდებარეობა საფოსტო მისამართის ფორმატის და მისი უნიკალურობის შესამოწმებლად"დაამატეთ შემდეგი კოდი:

//შეამოწმეთ მიღებული ელ.ფოსტის მისამართის ფორმატი ჩვეულებრივი გამოთქმის გამოყენებით $reg_email = "/^**@(+(*+)*\.)++/i"; //თუ მიღებული ელფოსტის მისამართის ფორმატი არ ემთხვევა ჩვეულებრივ გამონათქვამს if(!preg_match($reg_email, $email))( // შეინახეთ შეცდომის შეტყობინება სესიაზე. $_SESSION["error_messages"] .= "

თქვენ შეიყვანეთ არასწორი ელფოსტა

"; //მომხმარებლის დაბრუნება სარეგისტრაციო გვერდის სათაურში ("HTTP/1.1 301 გადაადგილებულია მუდმივად"); header("მდებარეობა: ".$address_site."/form_register.php"); //Stop the script exit(); ) // ვამოწმებთ, არის თუ არა ასეთი მისამართი მონაცემთა ბაზაში $result_query = $mysqli->query ("SELECT `email` FROM `users` WHERE `email`="".$email.""); არის ზუსტად ერთი მწკრივი, რაც ნიშნავს, რომ მომხმარებელი ამ ელფოსტის მისამართით უკვე დარეგისტრირებულია, თუ($result_query->num_rows == 1)( //თუ მიღებული შედეგი არ არის მცდარი if(($row = $result_query->fetch_assoc() ) != false) ( // შეინახეთ შეცდომის შეტყობინება სესიაზე. $_SESSION["error_messages"] .= "

მომხმარებელი ამ ელფოსტის მისამართით უკვე დარეგისტრირებულია

"; //მომხმარებლის დაბრუნება სარეგისტრაციო გვერდის სათაურში ("HTTP/1.1 301 გადაადგილებულია მუდმივად"); header("მდებარეობა: ".$address_site."/form_register.php"); )else( // შეცდომის შეტყობინების შენახვა სესიაზე $_SESSION["error_messages"] .= "

შეცდომა მონაცემთა ბაზის მოთხოვნაში

"; //მომხმარებლის დაბრუნება სარეგისტრაციო გვერდის სათაურში ("HTTP/1.1 301 გადავიდა მუდმივად"); header("მდებარეობა: ".$address_site."/form_register.php"); ) /* არჩევის დახურვა */ $ result_query-> close( //Stop the script exit( ) /* შერჩევის დახურვა */ $result_query->close();

ასე რომ, ჩვენ დავასრულეთ ყველა შემოწმება, დროა დავამატოთ მომხმარებელი მონაცემთა ბაზაში. მითითებულ ადგილას" // (4) ადგილი მონაცემთა ბაზაში მომხმარებლის დამატების კოდისთვის"დაამატეთ შემდეგი კოდი:

//შეკითხვა მომხმარებლის მონაცემთა ბაზაში დასამატებლად $result_query_insert = $mysqli->query("INSERT INTO `users` (first_name, name, email, password) VALUES ("".$first_name."", "".$last_name ." ", "".$email.", "".$პაროლი.")"); if(!$result_query_insert)( // შეინახეთ შეცდომის შეტყობინება სესიაზე. $_SESSION["error_messages"] .= "

შეცდომა მომხმარებლის მონაცემთა ბაზაში დამატების მოთხოვნაში

"; //მომხმარებლის დაბრუნება სარეგისტრაციო გვერდის სათაურში ("HTTP/1.1 301 გადაადგილებულია მუდმივად"); header("მდებარეობა: ".$address_site."/form_register.php"); //Stop the script exit(); )else( $_SESSION["success_messages"] = "

რეგისტრაცია წარმატებით დასრულდა!!!
ახლა თქვენ შეგიძლიათ შეხვიდეთ თქვენი მომხმარებლის სახელისა და პაროლის გამოყენებით.

"; //მომხმარებლის გაგზავნა ავტორიზაციის გვერდის სათაურში ("HTTP/1.1 301 გადავიდა მუდმივად"); header("მდებარეობა: ".$address_site."/form_auth.php"); ) /* მოთხოვნის დასრულება */ $ result_query_insert-> close( //დახურე კავშირი მონაცემთა ბაზასთან $mysqli->close();

თუ მონაცემთა ბაზაში მომხმარებლის დამატების მოთხოვნაში მოხდა შეცდომა, ჩვენ ვამატებთ შეტყობინებას ამ შეცდომის შესახებ სესიაზე და ვაბრუნებთ მომხმარებელს რეგისტრაციის გვერდზე.

წინააღმდეგ შემთხვევაში, თუ ყველაფერი კარგად წავიდა, ჩვენც ვამატებთ შეტყობინებას სესიაზე, მაგრამ ამჯერად ეს უფრო სასიამოვნოა, კერძოდ, მომხმარებელს ვეუბნებით, რომ რეგისტრაცია წარმატებით დასრულდა. და ჩვენ მას გადავიყვანთ გვერდზე ავტორიზაციის ფორმით.

ელ.ფოსტის მისამართის ფორმატის და პაროლის სიგრძის შემოწმების სკრიპტი არის ფაილში header.php, ასე რომ, ის ასევე ვრცელდება ამ ფორმის ველებზე.

სხდომა ასევე იწყება ფაილში header.php, ასე რომ ფაილში form_auth.phpარ არის საჭირო სესიის დაწყება, რადგან ჩვენ მივიღებთ შეცდომას.


როგორც უკვე ვთქვი, ელ.ფოსტის მისამართის ფორმატის და პაროლის სიგრძის შემოწმების სკრიპტი ასევე მუშაობს აქ. ამიტომ, თუ მომხმარებელი არასწორ ელ.ფოსტის მისამართს ან მოკლე პაროლს შეიყვანს, მაშინვე მიიღებს შეცდომის შეტყობინებას. Ღილი შემოსვლაგახდება უმოქმედო.

შეცდომების გამოსწორების შემდეგ ღილაკი შემოსვლაგააქტიურდება და მომხმარებელი შეძლებს ფორმის გაგზავნას სერვერზე, სადაც მოხდება მისი დამუშავება.

მომხმარებლის ავტორიზაცია

მნიშვნელობის ატრიბუტისთვის მოქმედებაავტორიზაციის უნარს აქვს მითითებული ფაილი auth.php, ეს ნიშნავს, რომ ფორმა დამუშავდება ამ ფაილში.

ასე რომ, გახსენით ფაილი auth.phpდა დაწერეთ კოდი ავტორიზაციის ფორმის დასამუშავებლად. პირველი რაც უნდა გააკეთოთ არის სესიის დაწყება და ფაილის დაკავშირება dbconnect.phpმონაცემთა ბაზასთან დასაკავშირებლად.

როდესაც თქვენ დააწკაპუნებთ საიტიდან გასვლის ბმულზე, ჩვენ გადავდივართ ფაილში გამოსვლა.php, სადაც ჩვენ უბრალოდ ვანადგურებთ უჯრედებს ელ.ფოსტის მისამართით და პაროლით სესიიდან. ამის შემდეგ მომხმარებელს ვუბრუნებთ იმ გვერდზე, რომელზეც დააწკაპუნეთ ბმულზე გასასვლელი.

ფაილის კოდი logout.php:

Სულ ეს არის. ახლა თქვენ იცით, როგორ დანერგოთ და დაამუშავოთ მომხმარებლის რეგისტრაციისა და ავტორიზაციის ფორმები თქვენს ვებსაიტზე. ეს ფორმები გვხვდება თითქმის ყველა ვებსაიტზე, ამიტომ ყველა პროგრამისტმა უნდა იცოდეს როგორ შექმნას ისინი.

ჩვენ ასევე ვისწავლეთ შეყვანის მონაცემების დამოწმება, როგორც კლიენტის მხარეს (ბრაუზერში, JavaScript, jQuery-ის გამოყენებით) და სერვერის მხარეს (PHP-ის გამოყენებით). ჩვენ ასევე ვისწავლეთ როგორ განვახორციელოთ საიტიდან გასვლის პროცედურა.

ყველა სკრიპტი დატესტილია და მუშაობს. თქვენ შეგიძლიათ ჩამოტვირთოთ არქივი ამ პატარა საიტის ფაილებით ამ ბმულიდან.

მომავალში დავწერ სტატიას სადაც აღვწერ. და ასევე ვგეგმავ სტატიის დაწერას, სადაც ავხსნი (გვერდის გადატვირთვის გარეშე). ასე რომ, იმისათვის, რომ იყოთ ინფორმირებული ახალი სტატიების გამოშვების შესახებ, შეგიძლიათ გამოიწეროთ ჩემი ვებგვერდი.

თუ თქვენ გაქვთ რაიმე შეკითხვები, გთხოვთ დამიკავშირდეთ და თუ შეამჩნევთ რაიმე შეცდომას სტატიაში, გთხოვთ შემატყობინოთ.

გაკვეთილის გეგმა (ნაწილი 5):

  • ავტორიზაციის ფორმისთვის HTML სტრუქტურის შექმნა
  • ჩვენ ვამუშავებთ მიღებულ მონაცემებს
  • ჩვენ ვაჩვენებთ მომხმარებლის მისალმებას საიტის სათაურში
  • მოგეწონათ სტატია?

    ამ სტატიაში ჩვენ განვიხილავთ ეტაპობრივ რეგისტრაციას jQuery-ის გამოყენებით.

    თუ თქვენს საიტზე რეგისტრაცია მოითხოვს რამდენიმე ათეული ველის შევსებას, ძალიან ირაციონალურია მათი ერთ გვერდზე განთავსება. ბოლოს და ბოლოს, მომხმარებელი ძალიან ზარმაცი არსებაა და არ სურს ყველა ამ ველის შევსება.

    ალტერნატიული ვარიანტია რეგისტრაციის რამდენიმე ეტაპად დაყოფა. ეს მაშინვე წარმოშობს ბევრ დადებით პასუხს - ბოლოს და ბოლოს, როდესაც იწყებს ნაბიჯების შესრულებას, მომხმარებელს ყველაზე ხშირად უჩნდება მათი დასრულების სურვილი.

    ასევე ლოგიკურია რეგისტრაციის გაყოფა ლოგიკურ ბლოკებად - საკონტაქტო ინფორმაცია, მისამართი, პერსონალური მონაცემები და ა.შ.

    ეტაპობრივი რეგისტრაციისთვის არ არის საჭირო რამდენიმე ფორმის შექმნა და მონაცემების ცალკე გაგზავნა სერვერზე. ბევრად უფრო მოსახერხებელია ყველაფრის ერთ ფორმაში განთავსება, მაგრამ მომხმარებლისთვის მხოლოდ ფორმის გარკვეული ნაწილის ჩვენება ყოველ ნაბიჯზე. ეს არის ზუსტად ლოგიკა ჩვენს მაგალითში.

    ლოგიკის გარდა, გასათვალისწინებელია, რომ თავიდან მხოლოდ ბმული ჩანს "წინ"/"Შემდეგი ნაბიჯი", და ბოლო საფეხურზე ის არ ჩანს, მაგრამ ჩანს "უკან"და "რეგისტრაცია".

    მოდით შევხედოთ თავად მაგალითს:

    გვერდი

    Ნაბიჯი 1

    Შესვლა:

    ელფოსტა:

    პაროლი:

    ნაბიჯი 2

    სახელი:

    გვარი:

    ასაკი:

    ნაბიჯი 3

    Ქვეყანა:

    ქალაქი:

    ქუჩა:

    უკან შემდეგი ნაბიჯი

    body ( ზღვარი: 0; ) /* ზოგადი სტილი მეტია */ ფორმა ( სიგანე: 30%; ზღვარი: 0 ავტომატური; ) form div.step ( ჩვენება: არცერთი; ) form div.step p.step ( ტექსტის გასწორება: ცენტრი ; font-size: 28px ) form div.step p( ) form div.step p input( float:right; ) a.back ( display:none; ) form input ( display:none; ) a (color:#) 006600 text-decoration:none) form p.talign(text-align:center;)

    ჩვენ განვათავსებთ სკრიპტს, რომელიც პასუხისმგებელია ნაბიჯების გადართვაზე js/steps_registration.js-ში, არ უნდა დაგვავიწყდეს, რომ ასევე ჩართოთ jQuery ბიბლიოთეკა:

    $(document).ready(function() ( // დაელოდეთ გვერდის ჩატვირთვას var step = $("form").children(".step"); // იპოვეთ ფორმის ყველა ნაბიჯი $(steps) .show( / / აჩვენე პირველი ნაბიჯი var current_step = 0 // დააყენე მიმდინარე ნაბიჯი $("a.next"). (მიმდინარე_საფეხური == ნაბიჯები.სიგრძე-2) ( // შეამოწმეთ, იქნება თუ არა შემდეგი ნაბიჯი ბოლო $(this).hide(); // დამალე "შემდეგი ნაბიჯი" ბმული $("ფორმის შეყვანა").show( // აჩვენე ღილაკი "რეგისტრაცია" ) $("a.back"). შეცვალეთ ნაბიჯი ) $("a.back").click(function()( // დააწკაპუნეთ მოვლენაზე, თუ (current_step == 1) ( // შეამოწმეთ, არის თუ არა წინა ნაბიჯი პირველი $(ეს. დამალვა ( // დამალვა "უკან" ) $("ფორმის შეყვანა") .დამალე ღილაკი "რეგისტრაცია" ("a.next"). აჩვენე "შემდეგი ნაბიჯი" ბმული current_step-- // შეამცირე მიმდინარე სლაიდის მრიცხველი changeStep(current_step);// შეცვალე ნაბიჯი)); ფუნქცია changeStep(i) ( // ნაბიჯის შეცვლის ფუნქცია $(steps).hide(); // დამალე ყველა ნაბიჯი $(steps[i]).show(); // აჩვენე მიმდინარე ) ));

    ჩვენ აქ არ დავწერთ PHP-ის გაგზავნის კოდს, რადგან ის მთლიანად არ არის შესაბამისი ამ გაკვეთილისთვის. აღსანიშნავია მხოლოდ ის, რომ წერილი იგზავნება ფორმის პირველ ეტაპზე მითითებულ მისამართზე. ნებისმიერ შემთხვევაში, შეგიძლიათ ჩამოტვირთოთ დემო ფაილები და თავად ნახოთ.

    გააზიარეთ