მთავარი პროგრამები ჩვენ ვქმნით წარმოუდგენლად მარტივ სარეგისტრაციო სისტემას PHP-სა და MySQL-ში. წარმოუდგენლად მარტივი სარეგისტრაციო სისტემის შექმნა PHP-ში და MySQL-ში წევრების რეგისტრაციის თავიდან აცილება php

ჩვენ ვქმნით წარმოუდგენლად მარტივ სარეგისტრაციო სისტემას PHP-სა და MySQL-ში. წარმოუდგენლად მარტივი სარეგისტრაციო სისტემის შექმნა PHP-ში და MySQL-ში წევრების რეგისტრაციის თავიდან აცილება php

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

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

ჩამოტვირთეთ კოდი

რეგისტრაციის/შესვლის სისტემის სრული კოდის ჩამოტვირთვა შეგიძლიათ ქვემოთ მოცემული ბმულიდან:

კონფიგურაცია და ატვირთვა
ReadMe ფაილი შეიცავს დეტალურ ინსტრუქციებს.

Გააღე source\include\membersite_config.phpშეიყვანეთ ტექსტურ რედაქტორში და განაახლეთ კონფიგურაცია. (მონაცემთა ბაზის შესვლა, თქვენი ვებსაიტის სახელი, თქვენი ელექტრონული ფოსტის მისამართი და ა.შ.).

ატვირთეთ მთელი დირექტორია შინაარსი. შეამოწმეთ register.php ფორმის გაგზავნით.

სარეგისტრაციო ფორმა

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

აქ არის რეგისტრაციის ფორმა:

რეგისტრაცია

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

ფორმის დადასტურება

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

ფორმის წარდგენის დამუშავება

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

აქ არის თანმიმდევრობა (იხილეთ ფაილი fg_membersite.php გადმოწერილ წყაროში):

ფუნქცია RegisterUser() ( if(!isset($_POST["გამოგზავნილია"])) ( return false; ) $formvars = array(); if(!$this->ValidateRegistrationSubmission()) ( return false; ) $this- >CollectRegistrationSubmission($formvars); if(!$this->SaveToDatabase($formvars)) ( return false; ) if(!$this->SendUserConfirmationEmail($formvars)) ( return false; ) $this->SendAdminIntimationEmail($ formvars); დაბრუნება true;)

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

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

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

ფუნქცია SaveToDatabase(&$formvars) ( if(!$this->DBLlogin()) ( $this->HandleError("მონაცემთა ბაზის შესვლა ვერ მოხერხდა!"); return false; ) if(!$this->Ensuretable()) ( return false; ) if(!$this->IsFieldUnique($formvars,"email")) ($this->HandleError("ეს ელფოსტა უკვე დარეგისტრირებულია"); return false; ) if(!$this->IsFieldUnique( $formvars,"username")) ( $this->HandleError ("ეს მომხმარებლის სახელი უკვე გამოიყენება. გთხოვთ, სცადოთ სხვა მომხმარებლის სახელი"); დააბრუნეთ false; ) if(!$this->InsertIntoDB($formvars)) ($this- >HandleError ("მონაცემთა ბაზაში ჩასმა ვერ მოხერხდა!"); დაბრუნება false; ) დაბრუნება true; )

გაითვალისწინეთ, რომ თქვენ დააკონფიგურირეთ მონაცემთა ბაზის შესვლის დეტალები Memberite_config.php ფაილში. უმეტეს შემთხვევაში, შეგიძლიათ გამოიყენოთ "localhost" მონაცემთა ბაზის ჰოსტისთვის.
შესვლის შემდეგ ვრწმუნდებით, რომ ცხრილი არსებობს.(თუ არა, სკრიპტი შექმნის საჭირო ცხრილს).
შემდეგ ჩვენ დავრწმუნდებით, რომ მომხმარებლის სახელი და ელფოსტა უნიკალურია. თუ ის უნიკალური არ არის, შეცდომას ვუბრუნებთ მომხმარებელს.

მონაცემთა ბაზის ცხრილის სტრუქტურა

ეს არის მაგიდის სტრუქტურა. CreateTable() ფუნქცია fg_membersite.php ფაილში ქმნის ცხრილს. აქ არის კოდი:

function CreateTable() ( $qry = "შექმენით ცხრილი $this->tablename (". "id_user INT NOT NULL AUTO_INCREMENT ," "სახელი VARCHAR(128) NOT NULL ," "ელფოსტა VARCHAR(64) NOT NULL," " "ტელეფონის_ნომერი VARCHAR(16) NOT NULL ," "username VARCHAR(16) NOT NULL ," "პაროლი VARCHAR(32) NOT NULL ," "დაადასტურეთ კოდი VARCHAR(32)", "PRIMARY KEY (id_user)." ")"; if(( !mysql_query($qry,$this->კავშირი)) ($this->HandleDBError("შეცდომა ცხრილის შექმნისას \nშეკითხვა იყო\n$qry"); დაბრუნება false; ) დაბრუნება true; )

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

რეგისტრაციის ჩასმა მაგიდაზე

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

ფუნქცია InsertIntoDB(&$formvars) ($confirmcode = $this->MakeConfirmationMd5($formvars["email"]); $insert_query = "insert into ".$this->tablename."(სახელი, ელფოსტა, მომხმარებლის სახელი, პაროლი, დადასტურების კოდი) მნიშვნელობები ("" . $this->SanitizeForSQL($formvars["name"]). "", "" . $this->SanitizeForSQL($formvars["email"]) . "", "" $ this->SanitizeForSQL($formvars["მომხმარებლის სახელი"]) . "", "" . md5($formvars["პაროლი"]) . "", "" . $confirmcode . "")"; if(! mysql_query ( $insert_query ,$this->connection)) ( $this->HandleDBError("შეცდომა ცხრილში მონაცემთა ჩასმისას\nquery:$insert_query"); დაბრუნება false; ) return true; )

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

ელფოსტის გაგზავნა

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

ფუნქცია SendUserConfirmationEmail(&$formvars) ($mailer = new PHPMailer(); $mailer->CharSet = "utf-8"; $mailer->AddAddress($formvars["email"],$formvars["name"]) $mailer->Subject = "თქვენი რეგისტრაცია ".$this->sitename; $mailer->From = $this->GetFromAddress(); $confirmcode = urlencode($this->MakeConfirmationMd5($formvars["email" ])); $confirm_url = $this->GetAbsoluteURLFolder()."/confirmreg.php?code=".$confirmcode; $mailer->Body ="გამარჯობა.$formvars["name"]."\r\ n\r\n". "გმადლობთ რეგისტრაციისთვის ".$this->sitename."\r\n". "გთხოვთ დააწკაპუნოთ ქვემოთ მოცემულ ბმულზე თქვენი რეგისტრაციის დასადასტურებლად.\r\n." "$confirm_url\r \n". "\r\n". "პატივისცემით,\r\n". "Webmaster\r\n". $this->sitename; if(!$mailer->Send()) ($this-> HandleError ("რეგისტრაციის დამადასტურებელი ელ. ფოსტის გაგზავნა ვერ მოხერხდა."); დაბრუნება false; ) დაბრუნება true; )

განახლებები

2012 წლის 9 იანვარი
პაროლის აღდგენა/პაროლის შეცვლა ფუნქციები დაემატა
კოდი ახლა გაზიარებულია GitHub-ზე.

Კეთილი იყოს თქვენი დაბრუნებაUserFullName(); ?>!

ლიცენზია


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

არ არის დაკავშირებული პოსტები.

კომენტარები ამ ჩანაწერზე დახურულია.

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

გადამყიდველის ჰოსტინგი

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

ვებსაიტის მომხმარებლების უმეტესობა არის Linux ან Windows. ეს დაკავშირებულია მუშაობის დროთან. ორივე პლატფორმა უზრუნველყოფს, რომ თქვენი ვებსაიტი დროთა 99% -შია.

1.მორგება

ერთ-ერთი მთავარი განსხვავება Linux Reseller Hostingplan-სა და Windows-ის მიერ მოწოდებულს შორის არის პერსონალიზაცია. მიუხედავად იმისა, რომ თქვენ შეგიძლიათ ექსპერიმენტი ორივე მოთამაშესთან რამდენიმე გზით, Linux ბევრად უფრო კონფიგურირებადია, ვიდრე Windows. ამ უკანასკნელს უფრო მეტი ფუნქციები აქვს, ვიდრე მის კოლეგას და ამიტომაა, რომ ბევრი დეველოპერი და ადმინისტრატორი Linux ძალიან მოსახერხებელია მომხმარებლისთვის.

2. აპლიკაციები

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

თუმცა, გთხოვთ გაითვალისწინოთ, რომ თუ იყენებთ Linux-ს ვებ ჰოსტინგისთვის, მაგრამ ამავე დროს იყენებთ Windows OS-ს, მაშინ ზოგიერთმა აპლიკაციამ შეიძლება უბრალოდ არ იმუშაოს.

3.სტაბილურობა

მიუხედავად იმისა, რომ ორივე პლატფორმა სტაბილურია, Linux Reseller ჰოსტინგი უფრო სტაბილურია ამ ორიდან. ეს არის ღია კოდის პლატფორმა, შეუძლია იმუშაოს რამდენიმე გარემოში. ეს პლატფორმა შეიძლება შეიცვალოს და განვითარდეს დროდადრო.

4. .NET თავსებადობა

ეს არ არის ის, რომ Linux ყველა შესაძლო გზით აღემატება Windows-ს. რაც შეეხება .NET თავსებადობას, Windows იპარავს ყურადღების ცენტრში. ვებ აპლიკაციები მარტივად შეიძლება განვითარდეს Windows ჰოსტინგის პლატფორმაზე.

5. ღირებულების უპირატესობები

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

6. დაყენების სიმარტივე

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

7.უსაფრთხოება

აირჩიეთ Linux reseller ჰოსტინგი, რადგან ის უფრო უსაფრთხოა ვიდრე Windows. ეს განსაკუთრებით ეხება იმ ადამიანებს, რომლებიც მართავენ თავიანთ ელექტრონული კომერციის ბიზნესს.

დასკვნა

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



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

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

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

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

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

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

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

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

მიკროკომპიუტერები, რომლებიც შეიქმნა Raspberry Pi Foundation-ის მიერ 2012 წელს, უაღრესად წარმატებული იყო მცირეწლოვან ბავშვებში კრეატიულობის დონის ამაღლებაში და ამ ბრიტანულმა კომპანიამ დაიწყო სტარტაპ პროგრამების სწავლის კოდირების შეთავაზება, როგორიცაა pi-top an Kano. ახლა არის ახალი სტარტაპი, რომელიც იყენებს Pi ელექტრონიკას და მოწყობილობა ცნობილია როგორც Pip, ხელის კონსოლი, რომელიც გთავაზობთ სენსორულ ეკრანს, მრავალ პორტს, საკონტროლო ღილაკებს და დინამიკებს. მოწყობილობის იდეა არის ახალგაზრდების ჩართვა სათამაშო მოწყობილობით, რომელიც არის რეტრო, მაგრამ ასევე შესთავაზებს კოდის სწავლის გამოცდილებას ვებ პლატფორმის საშუალებით.

საოცარი პროგრამული პლატფორმა, რომელსაც სთავაზობენ Pip-ს, შესთავაზებს კოდირების დაწყებას Python-ში, HTML/CSS-ში, JavaScript-ში, Lua-სა და PHP-ში. მოწყობილობა გვთავაზობს ნაბიჯ-ნაბიჯ გაკვეთილებს, რათა ბავშვებს დაიწყონ კოდირება და საშუალებას აძლევს მათ, LED-ები გაანათონ. მიუხედავად იმისა, რომ პიპი ჯერ კიდევ პროტოტიპია, ის აუცილებლად იქნება დიდი დარტყმა ინდუსტრიაში და ჩაერთვება ბავშვებს, რომლებსაც აქვთ დაინტერესებული კოდირება და მიაწვდიან მათ განათლებას და რესურსებს, რომლებიც საჭიროა პატარა ასაკში კოდირების დასაწყებად.

კოდირების მომავალი

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

როგორ ართმევს პიპი ბავშვებს

რაც შეეხება კოდირების სწავლის შესაძლებლობას, ბავშვებს ბევრი ვარიანტი აქვთ. არსებობს მრავალი მოწყობილობა და ტექნიკის გიზმო, რომელთა შეძენაც შესაძლებელია, მაგრამ Pip განსხვავებული მიდგომა აქვს მათი მოწყობილობით. მოწყობილობის პორტაბელურობა და სენსორული ეკრანი უპირატესობას ანიჭებს ბაზარზე არსებულ სხვა კოდირების მოწყობილობებს. Pip სრულად თავსებადია ელექტრონულ კომპონენტებთან, გარდა Raspberry Pi HAT სისტემისა. მოწყობილობა იყენებს სტანდარტულ ენებს და აქვს ძირითადი ხელსაწყოები და შესანიშნავი მოწყობილობაა ნებისმიერი დამწყები კოდირებისთვის. მიზანია მოიხსნას ნებისმიერი ბარიერი იდეასა და შემოქმედებას შორის და ინსტრუმენტები დაუყოვნებლივ იყოს ხელმისაწვდომი გამოსაყენებლად. Pip-ის კიდევ ერთი დიდი უპირატესობა ის არის, რომ ის იყენებს SD ბარათს, ამიტომ მისი გამოყენება შესაძლებელია როგორც დესკტოპ კომპიუტერად, როდესაც ის დაკავშირებულია მონიტორთან და მაუსთან.
Pip მოწყობილობა დაეხმარებოდა ბავშვებს და დაინტერესებულ დამწყებ დამწერებს ენთუზიაზმით სწავლაში და კოდირების პრაქტიკაში. ამოცანების შესრულებისა და პრობლემების გადაჭრის კომბინაციის შეთავაზებით, მოწყობილობა აუცილებლად ჩაერთვება ახალგაზრდა თაობას. შემდეგ მოწყობილობა საშუალებას აძლევს ამ ახალგაზრდა კოდერებს გადავიდნენ კოდირების უფრო მოწინავე დონეზე სხვადასხვა ენაზე, როგორიცაა JavaScript და HTML/CSS. იმის გამო, რომ მოწყობილობა იმეორებს სათამაშო კონსოლს, ის დაუყოვნებლივ მიიპყრობს ბავშვების ყურადღებას და ჩაერთვება მათ მცირე ასაკში კოდირების შესახებ. მას ასევე მოყვება რამდენიმე წინასწარ ჩატვირთული თამაში ყურადღების შესანარჩუნებლად, როგორიცაა Pac-Man და Minecraft.

მომავალი ინოვაციები

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

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

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

შესავალი

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

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

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

  • მონაცემთა ბაზის ჰოსტის სახელი- ეს არის სერვერი, რომელზეც განთავსებულია თქვენი მონაცემთა ბაზა, უმეტეს შემთხვევაში ეს იქნება უბრალოდ "localhost".
  • მონაცემთა ბაზის სახელი, მონაცემთა ბაზის მომხმარებლის სახელი, მონაცემთა ბაზის პაროლი- ამ გაკვეთილის დაწყებამდე თქვენ უნდა შექმნათ MySQL მონაცემთა ბაზა, თუ გაქვთ შესაძლებლობა, ან გაქვთ ინფორმაცია არსებულ მონაცემთა ბაზასთან დასაკავშირებლად. ეს ინფორმაცია საჭიროა მთელი გაკვეთილის განმავლობაში.

თუ თქვენ არ გაქვთ ეს ინფორმაცია, მაშინ თქვენს ჰოსტინგის პროვაიდერს უნდა შეეძლოს ეს მოგაწოდოთ.

ახლა, როდესაც ჩვენ არ გვაქვს ფორმალობები, დავიწყოთ გაკვეთილი!

ნაბიჯი 1 - საწყისი კონფიგურაცია

მონაცემთა ბაზის დაყენება

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

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

  • Მომხმარებლის იდენტიფიკაცია (Მთავარი გასაღები)
  • მომხმარებლის სახელი
  • პაროლი
  • Ელექტრონული მისამართი

მონაცემთა ბაზის თვალსაზრისით, ა Მთავარი გასაღებიარის ველი, რომელიც ცალსახად განსაზღვრავს მწკრივს. ამ შემთხვევაში, მომხმარებლის ID იქნება ჩვენი ძირითადი გასაღები. ვინაიდან ჩვენ გვინდა, რომ ეს გაიზარდოს ყოველ ჯერზე, როდესაც მომხმარებელი დარეგისტრირდება, ჩვენ გამოვიყენებთ სპეციალურ MySQL ვარიანტს - auto_increment .

SQL მოთხოვნა ჩვენი ცხრილის შესაქმნელად მოყვება ქვემოთ და ჩვეულებრივ განხორციელდება phpMyAdmin-ის "SQL" ჩანართში.

შექმენით ცხრილი `მომხმარებლები` (`მომხმარებლის ID` INT(25) NOT NULL AUTO_INCREMENT PRIMARY KEY , `მომხმარებლის სახელი` VARCHAR(65) NOT NULL , `პაროლი` VARCHAR(32) NOT NULL , `ელფოსტის მისამართი` VARCHAR(NUL2)

საბაზისო ფაილის შექმნა

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

დაიწყეთ ახალი ფაილის შექმნით: base.php და შეიყვანეთ მასში შემდეგი კოდი:

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

სესიის_დაწყება();

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

Mysql_connect($dbhost, $dbuser, $dbpass) ან die("MySQL შეცდომა: " . mysql_error()); mysql_select_db($dbname) ან die("MySQL შეცდომა: " . mysql_error());

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

ნაბიჯი 2 - დაბრუნება წინა მხარეს

რა უნდა გავაკეთოთ პირველ რიგში?

ჩვენს გვერდზე ყველაზე მნიშვნელოვანი ელემენტია PHP-ის პირველი ხაზი; ეს სტრიქონი მოიცავს ფაილს, რომელიც ჩვენ შევქმენით ზემოთ (base.php) და არსებითად მოგვცემს საშუალებას მივიღოთ რაიმე ამ ფაილიდან ჩვენს მიმდინარე ფაილში. ჩვენ ამას გავაკეთებთ PHP კოდის შემდეგი ხაზით. შექმენით ფაილი სახელად index.php და განათავსეთ ეს კოდი ზედა.

დაიწყეთ HTML გვერდი

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

ჩვენ მიერ ახლახან შექმნილი ფაილის გამოყენებით (index.php), შეიყვანეთ შემდეგი HTML კოდი PHP-ის ხაზის ქვემოთ, რომელიც უკვე შევქმენით.

რა ვაჩვენოთ მათ?

სანამ გვერდის დანარჩენ ნაწილს გამოვაქვეყნებთ, გვაქვს რამდენიმე კითხვა, რომელიც უნდა დავუსვათ საკუთარ თავს:

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

    დამაბნეველად გამოიყურება, არა? მოდით, დავყოთ ის უფრო პატარა ნაწილებად და გადავხედოთ მათ სათითაოდ.

    If(!empty($_SESSION["LoggedIn"]) && !empty($_SESSION["მომხმარებლის სახელი"])) ( // მიეცით მომხმარებელს წვდომა მთავარ გვერდზე )

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

    თუ ცვლადი $_SESSION["LoggedIn"] არ არის ცარიელი და $_SESSION["მომხმარებლის სახელი"] ცარიელი, შეასრულეთ კოდის ეს ნაწილი.

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

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

    წევრის ტერიტორია

    და თქვენი ელ.ფოსტის მისამართი არის .

    წარმატებები"; ექო"

    ჩვენ ახლა გადაგამისამართებთ წევრების ზონაში.

    "; ექო" ";) სხვა (ექო"

    შეცდომა

    "; ექო"

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

    ";)) სხვა (?>

    წევრის შესვლა

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



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

    $username = mysql_real_escape_string($_POST["მომხმარებლის სახელი"]); $პაროლი = md5(mysql_real_escape_string($_POST["პაროლი"]));

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

    $checklogin = mysql_query("SELECT * FROM users WHERE მომხმარებლის სახელი = "".$username." AND Password = "".$პაროლი."""); if(mysql_num_rows($checklogin) == 1) ( $row = mysql_fetch_array ($checklogin); $email = $row ["ელფოსტის მისამართი"]; $_SESSION ["მომხმარებლის სახელი"] = $username; $_SESSION["ელფოსტის მისამართი"] = $email;$_SESSION["LoggedIn"] = 1;

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

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

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

    მაშ, როგორ გამოიყურება ჩვენი პროექტი ამჟამად მომხმარებლისთვის?

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

    დაე, ხალხს დარეგისტრირდეს

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

    მომხმარებლის მართვის სისტემა (ტომ კამერონი NetTuts-ისთვის)

    შეცდომა"; ექო"

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

    "; ) else ( $registerquery = mysql_query ("INSERT INTO მომხმარებლებს (მომხმარებლის სახელი, პაროლი, ელფოსტის მისამართი) VALUES("".$username."", "".$password.", "".$email."") " ); if($registerquery) (echo"

    წარმატებები

    "; ექო"

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

    ";) სხვა (ექო"

    შეცდომა

    "; ექო"

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

    ";))) სხვა (?>

    რეგისტრაცია

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




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

    $registerquery = mysql_query ("INSERT INTO მომხმარებლებს (მომხმარებლის სახელი, პაროლი, ელფოსტის მისამართი) VALUES ("".$username.", "".$password.", "".$email."")");

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

    დარწმუნდით, რომ მათ შეუძლიათ გამოსვლა

    ჩვენ თითქმის ამ განყოფილების ბოლოს ვართ, მაგრამ კიდევ ერთი რამ გვჭირდება, სანამ აქ დავასრულებთ - გზა მომხმარებლებისთვის, რომ გამოვიდნენ თავიანთი ანგარიშებიდან. ამის გაკეთება ძალიან მარტივია (ჩვენს საბედნიეროდ); შექმენით ახალი ფაილი სახელად logout.php და შეიყვანეთ მასში შემდეგი.

    ამ შემთხვევაში ჩვენ ჯერ ვაბრუნებთ ჩვენს გლობალურ $_SESSION მასივს, შემდეგ კი მთლიანად ვანადგურებთ სესიას.

    და ეს არის ამ განყოფილების დასასრული და PHP კოდის დასასრული. მოდით ახლა გადავიდეთ ჩვენს ბოლო განყოფილებაზე.

    ნაბიჯი 3 - მიიღეთ სტილი

    მე არ ვაპირებ ბევრის ახსნას ამ განყოფილებაში - თუ არ გესმით HTML/CSS, გირჩევთ, რომ დაიწყოთ ამ ვებსაიტზე არსებული მრავალი შესანიშნავი გაკვეთილი. შექმენით ახალი ფაილი სახელად style.css და შეიყვანეთ მასში შემდეგი; ეს იქნება ყველა გვერდის სტილი, რომელიც ჩვენ აქამდე შევქმენით.

    * ( ზღვარი: 0; შიგთავსი: 0; ) ტექსტი ( შრიფტი-ოჯახი: Trebuchet MS; ) a ( ფერი: #000; ) a:hover, a:active, a:visited ( text-decoration: none; ) #main ( სიგანე: 780 პიქსელი; ზღვარი: 0 ავტომატური; ზღვარი ზედა: 50 პიქსელი; შიგთავსი: 10 პიქსელი; კონტური: 1 პიქსელი მყარი #CCC; ფონის ფერი: #EEE; ) ფორმის ველების ნაკრები ( საზღვარი: 0; ) ფორმის ველების ნაკრები p br ( ნათელი: მარცხნივ; ) ლეიბლი (ზღვარი ზედა: 5 პიქსელი; დისპლეი: ბლოკი; სიგანე: 100 პიქსელი; ბალიშები: 0; ათწილადი: მარცხნივ; ) შეყვანა (შრიფტი-ოჯახი: Trebuchet MS; საზღვარი: 1 პიქსელი მყარი #CCC; ზღვარი ქვედა: 5 პიქსელი; ფონის ფერი: #FFF; შიგთავსი: 2 პიქსელი; ) შეყვანა: hover (საზღვარი: 1px მყარი #222; ფონის ფერი: #EEE; )

    ახლა მოდით გადავხედოთ რამდენიმე ეკრანის სურათს, თუ როგორი უნდა იყოს ჩვენი საბოლოო პროექტი:

    შესვლის ფორმა.

    წევრის ტერიტორია.

    სარეგისტრაციო ფორმა.

    Და ბოლოს...

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

    • გამოიწერეთ NETTUTS RSS Feed-ზე მეტი ყოველდღიური ვებ განვითარების სტატიებისა და სტატიებისთვის.

    დღეს ჩვენ განვიხილავთ პოპულარულ CMS Joomla-ში კრიტიკული 1-დღიანი დაუცველობის ექსპლუატაციას, რომელიც ოქტომბრის ბოლოს აფეთქდა ინტერნეტში. მოწყვლადობაზე ვისაუბრებთ ციფრებით CVE-2016-8869, CVE-2016-8870და CVE-2016-9081. სამივე მომდინარეობს კოდის ერთი ნაწილიდან, რომელიც ფრეიმურის სიღრმეში იწელებოდა ხუთი წლის განმავლობაში და ელოდა ფრთებში, მხოლოდ ამის შემდეგ გათავისუფლდა და მოიტანა ქაოსი, გატეხილი საიტები და ამ Joomla-ს უდანაშაულო მომხმარებლების ცრემლები. მხოლოდ ყველაზე მამაცი და გაბედული დეველოპერები, რომელთა თვალები მონიტორების შუქისგან წითელია და კლავიატურები სავსეა პურის ნამსხვრევებით, შეძლეს მძვინვარე ბოროტი სულების გამოწვევა და თავები გამოსწორების სამსხვერპლოზე დაედო.

    გაფრთხილება

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

    სადაც ყველაფერი დაიწყო

    2016 წლის 6 ოქტომბერს, დემის პალმამ შექმნა თემა Stack Exchange-ზე, სადაც ჰკითხა: რატომ არის სინამდვილეში Joomla-ს 3.6 ვერსიაში ორი მეთოდი, რომ დარეგისტრირდეთ იგივე სახელით register()? პირველი არის UsersControllerRegistration კონტროლერში და მეორე არის UsersControllerUser კონტროლერში. დამისს სურდა გაეგო, გამოყენებული იყო თუ არა სადმე UsersControllerUser::register() მეთოდი, თუ ეს იყო მხოლოდ ძველი ლოგიკიდან შემორჩენილი ევოლუციური ანაქრონიზმი. მისი საზრუნავი ის იყო, რომ მაშინაც კი, თუ ეს მეთოდი არ გამოიყენება რომელიმე ხედვის მიერ, ის შეიძლება გამოიძახოს შემუშავებული შეკითხვით. რაზეც მე მივიღე პასუხი დეველოპერისგან, მეტსახელად itoctopus, რომელმაც დაადასტურა: პრობლემა ნამდვილად არსებობს. და გაუგზავნა ანგარიში Joomla-ს დეველოპერებს.

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

    ამის შემდეგ, Davide Tampellini ატრიალებს შეცდომას იქამდე, რომ დაარეგისტრიროს არა მარტივი მომხმარებელი, არამედ ადმინისტრატორი. 21 ოქტომბერს კი ჯომლას უსაფრთხოების გუნდში ახალი საქმე მოდის. უკვე საუბარია პრივილეგიების გაზრდაზე. იმავე დღეს Joomla-ს ვებსაიტზე ჩნდება განცხადება, რომ სამშაბათს, 25 ოქტომბერს, გამოვა შემდეგი ვერსია სერიული ნომრით 3.6.3, რომელიც ასწორებს კრიტიკულ დაუცველობას სისტემის ბირთვში.

    25 ოქტომბერი Joomla Security Strike Team აღმოაჩენს Damis-ის მიერ აღმოჩენილი კოდის მიერ შექმნილ უახლეს პრობლემას. შემდეგ 21 ოქტომბრით დათარიღებული commit შეუმჩნეველი სახელწოდებით Prepare 3.6.4 Stable Release გადადის ჯომლას ოფიციალური საცავების მთავარ ფილიალში, რომელიც აფიქსირებს სამწუხარო შეცდომას.

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

    27 ოქტომბერს მკვლევარი ჰარი რობერტსი ატვირთავს მზა ექსპლოიტს Xiphos Research-ის საცავში, რომელსაც შეუძლია PHP ფაილის ატვირთვა სერვერზე დაუცველი CMS-ით.

    დეტალები

    ისე, ფონი დასრულდა, გადავიდეთ ყველაზე საინტერესო ნაწილზე - მოწყვლადობის ანალიზზე. მე დავაინსტალირე Joomla 3.6.3, როგორც სატესტო ვერსია, ამიტომ ყველა ხაზის ნომერი შესაბამისი იქნება ამ ვერსიისთვის. და ფაილებისკენ მიმავალი ყველა გზა, რომელსაც ქვემოთ ნახავთ, მითითებული იქნება დაინსტალირებული CMS-ის ფესვთან მიმართებაში.

    Damis Palma-ს აღმოჩენის წყალობით, ჩვენ ვიცით, რომ არსებობს ორი მეთოდი, რომელიც ასრულებს მომხმარებლის რეგისტრაციას სისტემაში. პირველს იყენებს CMS და მდებარეობს ფაილში /components/com_users/controllers/registration.php:108. მეორე (ის, ვისი დარეკვაც დაგვჭირდება) ცხოვრობს /components/com_users/controllers/user.php:293-ში. მოდით უფრო ახლოს მივხედოთ მას.

    286: /** 287: * მომხმარებლის რეგისტრაციის მეთოდი. 288: * 289: * @return boolean 290: * 291: * @since 1.6 292: */ 293: public function register() 294: ( 295: JSession::checkToken("post") ან jexit(JText::_ ("JINVALID_TOKEN")); ... 300: // მიიღეთ ფორმის მონაცემები. 301: $data = $this->input->post->get("user", array(), "array"); . .. 315: $return = $model->validate($form, $data); 316: 317: // შეამოწმეთ შეცდომები. 318: თუ ($return === false) 319: ( ... 345: / / დაასრულეთ რეგისტრაცია 346: $return = $model->register($data);

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

    მოდით გავარკვიოთ, რა ხდება მომხმარებლის ნორმალური რეგისტრაციის დროს: რა მონაცემები იგზავნება და როგორ მუშავდება. თუ მომხმარებლის რეგისტრაცია ჩართულია პარამეტრებში, ფორმა შეგიძლიათ იხილოთ მისამართზე http://joomla.local/index.php/component/users/?view=registration.


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


    com_users კომპონენტი პასუხისმგებელია მომხმარებლებთან მუშაობაზე. ყურადღება მიაქციეთ დავალების პარამეტრს მოთხოვნაში. მას აქვს ფორმატი $controller.$method . მოდით შევხედოთ ფაილის სტრუქტურას.

    სკრიპტების სახელები საქაღალდეში კონტროლერებიშეესაბამება გამოძახებული კონტროლერების სახელებს. ვინაიდან ჩვენი მოთხოვნა ახლა შეიცავს $controller = "რეგისტრაციას", ფაილი გამოიძახება რეგისტრაცია.phpდა მისი register() მეთოდი.

    ყურადღება, კითხვა: როგორ გადავიტანოთ სარეგისტრაციო პროცესი კოდში დაუცველ ადგილზე? თქვენ ალბათ უკვე მიხვდით. დაუცველი და რეალური მეთოდების სახელები იგივეა (რეგისტრაცია), ამიტომ უბრალოდ უნდა შევცვალოთ გამოძახებული კონტროლერის სახელი. სად მდებარეობს ჩვენი დაუცველი კონტროლერი? მართალია, ფაილში 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"გამოტოვებული ნებართვის შემოწმება ახალი მომხმარებლების რეგისტრაციისთვის."

    ასე გამოიყურება "მუშა" register() მეთოდში 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 Score რეიტინგი!

    გამარჯობა! ახლა ჩვენ შევეცდებით განვახორციელოთ საიტზე უმარტივესი რეგისტრაცია PHP + MySQL გამოყენებით. ამისათვის Apache უნდა იყოს დაინსტალირებული თქვენს კომპიუტერში. ჩვენი სკრიპტის მუშაობის პრინციპი ნაჩვენებია ქვემოთ.

    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(კომენტარები შიგნით):



    {
    }
    //თუ შესვლა და პაროლი შეყვანილია, მაშინ ჩვენ ვამუშავებთ მათ ისე, რომ ტეგები და სკრიპტები არ იმუშაოს, თქვენ არასოდეს იცით, რა შეიძლება შეიყვანონ ხალხმა


    //დამატებითი ადგილების ამოღება
    $login = trim($login);
    $პაროლი = მორთვა ($პაროლი);
    // დაკავშირება მონაცემთა ბაზასთან
    // შეამოწმეთ მომხმარებლის არსებობის იგივე შესვლა
    $result = mysql_query("SELECT id FROM users WHERE login="$login"",$db);
    თუ (! ცარიელი ($myrow["id"])) (
    exit("ბოდიში, თქვენ მიერ შეყვანილი შესვლა უკვე რეგისტრირებულია. გთხოვთ შეიყვანოთ სხვა შესვლა.");
    }
    // თუ ეს ასე არ არის, მაშინ შეინახეთ მონაცემები
    $result2 = mysql_query ("INSERT INTO მომხმარებლებს (შესვლა, პაროლი) VALUES ("$login","$პაროლი")");
    // შეამოწმეთ არის თუ არა შეცდომები
    თუ ($result2=="TRUE")
    {
    echo "თქვენ წარმატებით დარეგისტრირდით! ახლა შეგიძლიათ შეხვიდეთ საიტზე. მთავარი გვერდი";
    }
    სხვა (
    echo "შეცდომა! თქვენ არ ხართ დარეგისტრირებული.";
    }
    ?>

    5. ახლა ჩვენს მომხმარებლებს შეუძლიათ რეგისტრაცია!შემდეგი, თქვენ უნდა შექმნათ "კარი" უკვე დარეგისტრირებული მომხმარებლებისთვის საიტზე შესასვლელად. index.php(კომენტარები შიგნით) :

    // მთელი პროცედურა მუშაობს სესიებში. ეს არის სადაც მომხმარებლის მონაცემები ინახება საიტზე ყოფნისას. ძალიან მნიშვნელოვანია მათი გაშვება გვერდის დასაწყისში!!!
    session_start();
    ?>


    მთავარი გვერდი


    მთავარი გვერდი











    რეგისტრაცია



    // შეამოწმეთ, არის თუ არა შესვლის და მომხმარებლის ID ცვლადები ცარიელი
    თუ (ცარიელი ($_SESSION["შესვლა"]) ან ცარიელი ($_SESSION["id"]))
    {
    // თუ ცარიელია, მაშინ ჩვენ არ ვაჩვენებთ ბმულს
    echo "თქვენ შესული ხართ როგორც სტუმარი
    ეს ბმული ხელმისაწვდომია მხოლოდ დარეგისტრირებული მომხმარებლებისთვის";
    }
    სხვა
    {

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

    6. რჩება ფაილი შეყვანილი შესვლისა და პაროლის გადამოწმებით. testreg.php (კომენტარები შიგნით):

    session_start();// მთელი პროცედურა მუშაობს სესიებზე. ეს არის სადაც მომხმარებლის მონაცემები ინახება საიტზე ყოფნისას. ძალიან მნიშვნელოვანია მათი გაშვება გვერდის დასაწყისში!!!
    if (isset($_POST["login"])) ($login = $_POST["login"]; if ($login == "") ( unset($login);) ) //შეიყვანეთ ავტორის მიერ შეყვანილი შესვლა მომხმარებელი შევიდა $login ცვლადში, თუ ის ცარიელია, მაშინ გაანადგურეთ ცვლადი
    if (isset($_POST["პაროლი"])) ($პაროლი=$_POST["პაროლი"]; if ($password =="") ( გაუქმება ($პაროლი);) )
    //ჩადეთ მომხმარებლის მიერ შეყვანილი პაროლი $password ცვლადში, თუ ის ცარიელია, გაანადგურეთ ცვლადი
    თუ (ცარიელი($login) ან ცარიელი($პაროლი)) //თუ მომხმარებელმა არ შეიყვანა შესვლა ან პაროლი, მაშინ ჩვენ გამოვცდებით შეცდომას და ვაჩერებთ სკრიპტს
    {
    exit ("თქვენ არ შეიყვანეთ ყველა ინფორმაცია, დაბრუნდით და შეავსეთ ყველა ველი!");
    }
    //თუ შესვლა და პაროლი შეყვანილია, მაშინ ჩვენ ვამუშავებთ მათ ისე, რომ ტეგები და სკრიპტები არ იმუშაოს, თქვენ არასოდეს იცით, რა შეიძლება შეიყვანონ ხალხმა
    $login = stripslashes ($login);
    $login = htmlspecialchars($login);
    $პაროლი = stripslashes ($პაროლი);
    $პაროლი = htmlspecialchars($პაროლი);
    //დამატებითი ადგილების ამოღება
    $login = trim($login);
    $პაროლი = მორთვა ($პაროლი);
    // დაკავშირება მონაცემთა ბაზასთან
    include("bd.php");// bd.php ფაილი უნდა იყოს იმავე საქაღალდეში, როგორც ყველა სხვა, თუ არ არის, უბრალოდ შეცვალეთ გზა

    $result = mysql_query("SELECT * FROM users WHERE login="$login"",$db); //ამოიღეთ მონაცემთა ბაზიდან მომხმარებლის შესახებ ყველა მონაცემი შეყვანილი ლოგინით
    $myrow = mysql_fetch_array ($ შედეგი);
    თუ (ცარიელი ($myrow["პაროლი"]))
    {
    //თუ მომხმარებელი შეყვანილი ლოგინით არ არსებობს
    }
    სხვა (
    //თუ არსებობს, მაშინ შეამოწმეთ პაროლები
    თუ ($myrow["პაროლი"]==$პაროლი) (
    //თუ პაროლები ემთხვევა, მაშინ ჩვენ ვიწყებთ სესიას მომხმარებლისთვის! შეგიძლიათ მიულოცოთ, ის შევიდა!
    $_SESSION["login"]=$myrow["login"];
    $_SESSION["id"]=$myrow["id"];//ეს მონაცემები გამოიყენება ძალიან ხშირად, ასე რომ, შესული მომხმარებელი "გაატარებს მას"
    echo "თქვენ წარმატებით შეხვედით საიტზე! მთავარ გვერდზე";
    }
    სხვა (
    //თუ პაროლები არ ემთხვევა

    გასვლა ("ბოდიში, თქვენ მიერ შეყვანილი შესვლა ან პაროლი არასწორია.");
    }
    }
    ?>

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

    ყველაფერი შევამოწმე, მუშაობს გამართულად!

    სიახლე საიტზე

    >

    Ყველაზე პოპულარული