Neskіnchenny რეგისტრაცია php lang. გაგზავნეთ ფორმა ხელახლა ჩართვის გარეშე jQuery AJAX-ის გამოყენებით. აქტივაციის ფურცლები სწორი ინსტრუქციებით

გოლოვნა / ავაშენებ დასუფთავების ადგილს

ჩვენ ვქმნით სარეგისტრაციო გვერდს მრავალსაიტისთვის სტანდარტული wp-signup.php-ის ნაცვლად.

WordPress-ის სარეგისტრაციო ნაგულისხმევი გვერდისთვის (ავტორიზაცია, პაროლის აღდგენა) შეიყვანეთ ფაილი wp-login.php.

  • /wp-login.php - ავტორიზაცია
  • /wp-login.php?action=register - რეგისტრაცია
  • /wp-login.php?action=lostpassword - დაკარგული პაროლი

მრავალსაიტისთვის, wp-login.php სრულიად განსხვავებულია. ასე რომ, როდესაც აპირებთ /wp-login.php?action=რეგისტრაციას WordPress მრავალსაიტზე, შექმენით გადამისამართება /wp-signup.php მხარეს. ბევრი თემისთვის მხარე არც თუ ისე მიმზიდველად გამოიყურება, ამიტომ ძალას ვკარგავ.

მერეჟას მთავარი საიტი

აქციების შემდეგ WordPress ხსნის რეგისტრაციის გვერდს (wp-signup.php) ქსელის მთავარ დომენზე (საიტზე). დაიცავით, თქვენ შეგიძლიათ შექმნათ გვერდიგვერდ რეგისტრაციის გვერდი კანის საიტისთვის, რადგან ისინი შეიძლება განსხვავდებოდეს ერთმანეთისგან. ჩვენ პრობლემად მიგვაჩნია, თუ ყველა ვებსაიტს აქვს საკუთარი სარეგისტრაციო გვერდი, მაგრამ იგივე თემის ვიკორიზაცია ხდება და ვებსაიტებს ჩემზე მეტად ეპყრობიან. თუ იყენებთ სხვადასხვა თემებს, მოგიწევთ მეტი კოდის დაწერა.

functions.php?

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

ლირიული მიდგომა

მნიშვნელოვანია აღინიშნოს, რომ MU დანამატები გამოიყენება ორიგინალურ დანამატებამდე და სანამ WordPress-ის ბირთვი უფრო მნიშვნელოვანი გახდება, ამიტომ გარკვეული ფუნქციების გამოყენებამ შეიძლება გამოიწვიოს ფატალური პრობლემები PHP-თან დაკავშირებით. ამ "ადრეულ" მიმზიდველობას ასევე აქვს თავისი უპირატესობები. ვთქვათ, საბოლოო ჯამში, თქვენ არ შეგიძლიათ ინერვიულოთ რაიმე ქმედებაზე, რომელიც უნდა გაკეთდეს მანამ, სანამ functions.php ფაილი მათთან ასოცირდება. ამის მაგალითი შეიძლება იყოს მოქმედებები Jetpack მოდულით jetpack_module_loaded_related-posts სახით (related-posts არის მოდულის სახელი), რომელიც დაგეხმარებათ აკონტროლოთ მოდულების აქტივობა Jetpack-ში. შეუძლებელია ქმედება „დაერთოს“ ფაილს მათთან ერთად, ასე რომ, თუ მოქმედება უკვე შექმნილია მათ მიერ შეძენის წინ, დანამატები უფრო ადრე იქნება შეძენილი. თქვენ შეგიძლიათ გაოცდეთ WordPress საიტის მაგარი სურათით კოდექსის Action Reference გვერდზე.

ფაილის შეკვეთა

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

|-mu-plugins |-|-load.php |-|-|-selena-network |-|-|-|-რეგისტრაცია |-|-|-|-|-plugin.php |-|-|-| -|-... |-|-|-|-jetpack |-|-|-|-|-plugin.php

ფაილი load.php მოიცავს ყველა საჭირო დანამატს ჩვენი ქსელისთვის:

// Load Translates ყველა დანამატისთვის load_muplugin_textdomain ("selena_network", "/selena-network/languages/"); // ქსელის რეგისტრაცია მოითხოვს WPMU_PLUGIN_DIR. "/selena-network/signup/plugin.php"; // სხვა დანამატები // საჭიროებს WPMU_PLUGIN_DIR ...

selena-network საქაღალდის შუაში არის დანამატის საქაღალდეები, თითოეულს აქვს თავისი plugin.php, რომელსაც ჩვენ ვაერთიანებთ load.php-ში. ეს იძლევა მოქნილობას და მეტყველების მოქმედებების სწრაფად ჩართვისა და გამორთვის უნარს.

რეგისტრაციის მხარის მისამართები

რეგისტრაციის გვერდის მისამართის შესაყვანად გამოიყენეთ wp_signup_location ფილტრი. თქვენ შეგიძლიათ იპოვოთ იგი wp-login.php ფაილის შუაში და ის თავად მიუთითებს გადამისამართებაზე wp-signup.php.

შემთხვევა "რეგისტრაცია" : if (is_multisite()) ( wp_redirect(apply_filters("wp_signup_location", network_site_url("wp-signup.php"))));

ჩემს ფუნქციას დავამატებ mu-plugins/selena-network/signup/plugin.php, რომელიც მისცემს სარეგისტრაციო გვერდის მისამართს ნაკადის საიტზე:

ფუნქცია selena_network_signup_page ($url) ( return home_url () . "/signup/"; ) add_filter ( "wp_signup_location", "selena_network_signup_page", 99);

selena_network - პრეფიქსი, რომელსაც ვიყენებ ყველა ფუნქციის სახელში ჩემს საიტზე არსებული MU-პლაგინების შუაში კონფლიქტის თავიდან ასაცილებლად, რომელიც უნდა შეიცვალოს თქვენი უნიკალური პრეფიქსით. დამატებული ფილტრის პრიორიტეტია 99, ასე რომ დანამატებმა, როგორიცაა bbPress და BuddyPress, შეუძლიათ გადაწერონ ეს მისამართი საკუთარ დომენში (MU დანამატები უფრო ადრე იზიდავენ, ქვედა პირველადი დანამატები, მით უმეტეს). გთხოვთ, გაითვალისწინოთ, რომ home_url() გამოიყენება network_site_url()-ის ნაცვლად იმავე დომენზე რეკლამის განმთავსებლის გასათიშად. მისამართის მსგავსად შეგიძლიათ vikoristovat be-yak URL მისამართი.

მხარის შექმნა

ახლა ჩვენ ვქმნით გვერდს მისამართით site.com/signup/ მთავარი ინტერფეისით, ხოლო ბავშვის საქაღალდეში ჩვენი ახალი გვერდის შაბლონია page-signup.php. სიტყვის რეგისტრაციის ნაცვლად, შეგიძლიათ გამოიყენოთ უნიკალური ID.

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

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

wp-signup.php და wp-activate.php

ახლა გადავიდეთ შექმნის ფუნქციაზე, რომელიც არის რეგისტრაციის ფორმის ჩვენება. ამ მიზნით, ჩვენ ვაკოპირებთ ფაილებს wp-signup.php და wp-activate.php WordPress root-დან mu-plugings/selena-network/signup/ (და არ დაგავიწყდეთ მათი დაკავშირება შუა mu-plugins-ში/). selena-network/signup/plugin.php) . ფაილებთან შემდგომი მანიპულაციების აღწერა რთულია, ასე რომ თქვენ მოგიწევთ მათი გაკეთება. მე უბრალოდ აღვწერ რა გჭირდებათ თქვენი პროექტის გამომავალი ფაილების შესაქმნელად და გამოქვეყნებისთვის:

  • ფაილის ზედა ნაწილში წაშალეთ ყველა მოთხოვნა, დააწკაპუნეთ ფუნქციებზე და სხვა კოდსა და ფუნქციებზე.
  • გადაარქვით ყველა ფუნქცია სახელებს უნიკალური პრეფიქსების დამატებით.
  • wp-signup.php კოდის ქვედა ნაწილი გადაიტანეთ selena_network_signup_main ფუნქციაში და ჩაწერეთ გლობალური $active_signup; .
  • შეცვალეთ განლაგება ვლასნათი საჭირო ადგილებში.
  • wp-activate.php-ის შუაში თქვენ უნდა შექმნათ მსგავსი რამ:

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

    აქტივაციის სია გადატვირთულია

    რეგისტრაციის გვერდი აიძულებს მოთხოვნის ფორმის წარდგენას ღრუბლოვანი რეგისტრაციის გასააქტიურებლად. ამას ამუშავებს wpmu_signup_user_notification() ფუნქცია ms-functions.php ფაილიდან. თქვენ შეგიძლიათ მივანიჭოთ ეს ფუნქცია თქვენს საკუთარ ფუნქციას. მიზეზი, რის გამოც თქვენ უნდა იცოდეთ ეს ფუნქცია არის ის, რომ ის აგზავნის აქტივაციის შეტყობინებას ღრუბლოვან ანგარიშზე wp-activate.php-დან. თქვენ შეგიძლიათ „ჩართოთ“ ეს ფუნქცია დამატებითი ფილტრის wpmu_signup_user_notification-ის გამოყენებით, რომელიც დააბრუნებს false-ს (რადგან თქვენ ვერ შექმნით ერთს, აქტივაციის ფურცელი გაიგზავნება ორ, კარგი, რეალურად ორ სხვადასხვა ფურცელზე).

    ფუნქცია armyofselenagomez_wpmu_signup_user_notification($user, $user_email, $key, $meta = array()) (// ... // ფუნქციის კოდი wpmu_signup_user_notification() wp_mail($user_email, wp_specialchars_return$s_ubsede;) "wpmu_signup_user_notification", "armyofselenagomez_wpmu_signup_user_notification", 10, 4);

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

    ვისნოვოკი

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

    ვაფასებ, რომ ფაილები ფრთხილად უნდა დაარედაქტიროთ და ძალიან შორს არ წახვიდეთ, ასე რომ, თუ შეცვლით ფაილებს wp-signup.php და wp-activate.php WordPress-ში, მათთვის უფრო ადვილი იქნება. ემთხვევა ერთმანეთს გასართობად ნ.

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

    ბონუსი. დაიცავით სპამერებისგან

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

    RewriteEngine On RewriteBase / RewriteRule ^wp-signup\.php - RewriteRule ^wp-activate\.php - # BEGIN WordPress # WordPress-ის წესები არ უნდა იყოს იგნორირებული :) # ... # END WordPress

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

    რეკლამები

    თქვენ კარგად დაიწყეთ, მაგრამ გადართვის განაცხადი userLanguage()-ში უბრალოდ არ იგრძნობა სწორად ობიექტზე ორიენტირებული პერსპექტივიდან:

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

    შენარჩუნებულია თუ არა?

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

    გამოსავალი 1: მარტივი კონფიგურაციის ფაილი

    parse_ini_file() არის ძალიან ძლიერი პატარა ინსტრუმენტი, რომელიც აკეთებს ზუსტად იმას, რასაც მოელით. Vikorista მარტივი ფაილი, როგორც ეს, რომელსაც ჩვენ დავარქმევთ en.ini:

    PAGE_TITLE = ჩემი ვებსაიტის გვერდის სათაური HEADER_TITLE = ჩემი ვებსაიტის სათაურის სათაური SITE_NAME = ჩემი საიტი SLOGAN = ჩემი სლოგანი აქ HEADING = სათაური MENU_LOGIN = შესვლა MENU_SIGNUP = დახურვა MENU_FIND_RIDE = მგზავრობის პოვნა

    თქვენ შეგიძლიათ გამოიყენოთ სწრაფი ვიკი: parse_ini_file("en.ini"), რათა შექმნათ მასივი ზუსტად ისეთი, როგორიც თქვენი დეპარტამენტია, რომლის წაკითხვა და დაწერა სხვებისთვის (არაპროგრამისტებისთვის) კიდევ უფრო ადვილი იქნება თქვენთვის. და თუ გააგრძელებთ ფაილების ამ სტილის დარქმევას, შეგიძლიათ შეიყვანოთ userLanguage() მსგავსებამდე:

    საჯარო ფუნქცია userLanguage() ( $file = "/path/to/language/config/" . $this->UserLng . ".ini"; if(!file_exists($file)) ( //Handle Error ) return parse_ini_file( $ ფაილი);

    ამოხსნა 2: აბსტრაქტული კლასი

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

    ინტერფეისის ენა ( საჯარო ფუნქცია getPageTitle(); საჯარო ფუნქცია getHeaderTitle(); საჯარო ფუნქცია getSiteName(); საჯარო ფუნქცია getSlogan(); საჯარო ფუნქცია getHeading(); ; საჯარო ფუნქცია getMenuAddRide();

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

    ინგლისური კლასის ახორციელებს ენას ( საჯარო ფუნქცია getHeaderTitle() ( დაბრუნება "ჩემი ვებსაიტის სათაურის სათაური"; ) საჯარო ფუნქცია getHeading() (დაბრუნება "Heading";) // etc...)

    ალტერნატივა

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

    კლასის ენა ( პირადი $languageArray; პირადი $userLanguage; საჯარო ფუნქცია __construct($language) ( $this->userLanguage = $language; $this->languageArray = self::userLanguage(); ) პირადი სტატიკური ფუნქციის userLanguage() ფაილი = "/path/to/language/config/" $this->userLanguage if(!file_exists($file)) getPageTitle() ( return $this->languageArray["PAGE_TITLE"]; ) საჯარო ფუნქცია getHeaderTitle(). დაბრუნება $this->languageArray["HEADER_TITLE"] ) //etc... )

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

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

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

    HTML – signup.html

    რეგისტრაცია

    JavaScript – signup.js

    ფუნქცია submit() ( $("ფორმა").submit(function(e) ( e.preventDefault(); $. (( ტიპი: "POST", url: "signup. ", მონაცემები: $("ფორმა)) .serialize(), success: function() ( console.log("რეგისტრაცია წარმატებული იყო"); ) შეცდომა: function() ( console.log("რეგისტრაცია წარუმატებელი"); ) ) $(document ready(). ფუნქცია() ( submit(); ));

    PHP – signup.php

    Axis JSFiddle.

    იმედი მაქვს, რომ დაგეხმარებით. კულისებში 🙂

    თუ თქვენ იყენებთ ajax-ს, არ გჭირდებათ შეყვანის ტიპის შეცვლა ღილაკზე გაგზავნა.

    $(document).ready(function() ($("#signup").click(function(e) (e.preventDefault(); $.ajax((type: "POST", url: "signup.php) ) , მონაცემები: $("form").serialize() success: function() ( console.log("რეგისტრაცია წარმატებული იყო"); ) შეცდომა: function() ( console.log("რეგისტრაცია წარუმატებელი"); ) )));

    აქაც შეცვალეთ

    $post_FirstName = $_POST["პირველი"]; // სახელი არის `first` და არა `firstname`

    თქვენი სამაგრი არასწორად არის დახურული

    ფუნქცია submit() ( $("form").submit(function(e) ( e.preventDefault(); $.ajax((type: "POST", url: "signup.php), data: $("form ) ").serialize(), success: function() ( console.log("რეგისტრაცია წარმატებული იყო"); ),//აქ შეცდომა: function() ( console.log("რეგისტრაცია წარუმატებელი"); ) )) ;));//აქ ) $(დოკუმენტი).ready(function() ( submit(); ));

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

    $("ფორმა").submit(function(e) (e.preventDefault(); $.ajax((type: "POST", url: "signup.php", data: $("form").serialize( ), success: function() ( console.log("რეგისტრაცია წარმატებული იყო"); ), //თქვენ გამოტოვეთ ეს შეცდომა: function() ( console.log("რეგისტრაცია წარუმატებელი"); ) ));

    ბევრ ვებსაიტს აქვს თქვენი კლიენტების რეგისტრაციის ფორმა და ამის გაკეთება შეგიძლიათ ნებისმიერ ბავშვთან ერთად საიტზე. ეს ინფორმაცია საჭიროა PHP-სა და MySQL-ში რეგისტრაციის ფორმის შესაქმნელად.

    იმისათვის, რომ სწრაფად გაგზავნოთ ელ.წერილი და ასევე გამოიყენოთ ტეგი sign-up.html ვებგვერდის შესაქმნელად. Დავიწყოთ:

    ჩამონათვალი 1: sign-up.html

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

    სახელი
    ელფოსტა
    მომხმარებლის სახელი
    პაროლი
    Პაროლის დადასტურება


    Ფიგურა 1:

    sing-in.html-ის აღწერა

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

    ჩამონათვალი 2: style.css

    /*CSS ფაილი რეგისტრაციისთვის ვებგვერდისთვის*/ #body-color( background-color:#6699CC; ) #Sign-Up( background-image:url("sign-up.png"); background-size:500px 500px ;background-repeat:no-repeat;background-tachment:center ) #button( border-radius:10px; width:100px; height:40px; background:#FF00FF;font-weight:bold;font-size:20px; )

    ჩამონათვალი 3: დააკავშირეთ style.css sign-up.html ვებგვერდით



    სურათი 2:

    style.css ფაილის აღწერა:

    შეყვანის CSS ფაილებს ექნებათ განსხვავებული სტილი, რომელიც შესაძლოა თქვენთვის ახალი იყოს. წარსულში გამოსახულებები ვიკორიზირებულია და ვებ გვერდის ცენტრში განვათავსეთ. რომელიც გახდა მარტივი გამოსაყენებელი დამატებითი html div ტეგისთვის. როგორც ჩვენ გამოვიყენეთ სამი div tag id's. #ღილაკი, #sing-up და #body-color და ჩვენ გამოვიყენეთ ყველა CSS სტილი მათზე და ახლა თქვენ ხედავთ სურათს 2, რამდენად ლამაზად და მიმზიდველად გამოიყურება. თქვენ შეგიძლიათ ნახოთ ბევრი სხვა CSS სტილი, როგორიცაა 2D და 3D CSS სტილები მასზე. ის უფრო ლამაზად გამოიყურება, ვიდრე ახლა ჩანს.

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

    ჩამონათვალი 3: მოთხოვნა ცხრილისთვის MySQL-ში

    CREATE TABLE WebsiteUsers (userID int(9) NOT NULL auto_increment, სრული სახელი VARCHAR(50) NOT NULL, მომხმარებლის სახელი VARCHAR(40) NOT NULL, ელფოსტა VARCHAR(40) NOT NULL, pass VARCHAR(40) NOT NULL, PRI);

    ჩამონათვალი 3-ის აღწერა:

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

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

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

    სია 4: მონაცემთა ბაზის კავშირი

    4 ჩამონათვალის აღწერა:

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

    ჩამონათვალი 5: keruvannya データベースnoyu კავშირით

    აღწერა ჩამონათვალი 5:

    სია 5 მე უბრალოდ შევეცადე მეჩვენებინა, რომ შეგიძლიათ შეამოწმოთ და დაადასტუროთ კავშირი მონაცემთა ბაზასა და PHP-ს შორის. და კიდევ ერთი რამ, ჩვენ არ გამოვიყენებთ Listing 5 კოდს ჩვენს sing-up ვებ გვერდზე. იმიტომ, რომ ეს მხოლოდ იმის გასაგებად არის, თუ როგორ შეგიძლიათ შეამოწმოთ MySQL კავშირი.

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

    ჩამონათვალი 6: დაკავშირება-რეგისტრაცია.php

    დაკავშირება-sign-up.php-ის აღწერა

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

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



    სურათი 3

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



    სურათი 4:

    მას შემდეგ, რაც მონაცემები შეიყვანება სარეგისტრაციო ფორმამდე (სურათი 4), 데이터베이스-ში მითითებით, რომელი მომხმარებლის სახელი და ელფოსტა შეიტანება რეგისტრაციის ფორმაში, ის უკვე არის მონაცემთა ბაზაში. ჩვენ სწრაფად უნდა მივაწოდოთ ახალი მომხმარებლის სახელი და ელფოსტის მისამართი ახალი ID და პაროლით რეგისტრაციისთვის.



    სურათი 5

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

    დასკვნა:

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

    გამარჯობა ყველა მკითხველს!

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

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

    მაშინვე გეტყვით, რომ ამ მასალასთან მუშაობისთვის, რომელიც აქ განთავსდება, დაგჭირდებათ PHP გაძლიერება მინიმუმ 4.39-ით.

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

    mov_map.php;

    როგორც უკვე მიხვდით სიტყვა „მოვას“ ჩანაცვლება წარმოსახვითი მნიშვნელობით, რომელიც ახასიათებს ამ ენას. ჩვენს ვებსაიტს აქვს ორი სიმბოლო Movi კოდი (ru, en, ua, pl და ა.შ.).

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

    ფაილი: en_map.php ფაილი: ru_map.php

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

    ეს არის მარტივი ნაწილი, ახლა გადავიდეთ დასაკეცი ნაწილზე - დინამიური ნაწილის თარგმნაზე.

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

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

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

    უკვე ვგრძნობ შენს ირგვლივ ტრიალებულ აზრებს.

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

    დასაწყისისთვის, დაგვჭირდება ცხრილი, რომელშიც განთავსებული იქნება თარგმანის მონაცემები. ვთქვათ, გვაქვს ცხრილი `სტატიები~, რომელშიც განთავსდება სტატიები და დამნაშავე არის, ვთქვათ, ორი თარგმანი და ერთი სავალდებულო. ჩვენს ჩანაწერში გვექნება მხოლოდ ორი ძირითადი ველი: სახელი, აღწერა. ჩვენ შევქმნით ტექსტის სტრუქტურას შემდეგნაირად:

    სტატისტიკის ინგლისური ვერსია სტატისტიკის რუსული ვერსია

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

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

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

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

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

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

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

    "ფილმის იდენტიფიკატორი" => "ტექსტი";

    ამის შემდეგ, ჩვენ უნდა გადავამოწმოთ, რადგან პარამეტრის ამოღება არ არის მნიშვნელოვანი.

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

    ციკლის გამეორებების რაოდენობა ცვალებადია და ყოველი ნაბიჯით მკურნალობის ციკლი იზრდება. ეს არის მონაცემთა ყველაზე მნიშვნელოვანი სერია, რომელშიც ყველა ჩვენი სტრუქტურა დაზარალდება. Ale tsikavіshi ცვლის რაოდენობას და ტემპერატურას. სურნელი გჭირდება? ისე, ალბათ, უმეტესობამ ეს უკვე გამოიცნო პუბლიკაციის წაკითხვის შემდეგ, მაგრამ ჯერ არავის ავუხსნი. მნიშვნელოვანია იმის შემოწმება, რომ ერთი და იგივე კონსტრუქცია არაერთხელ განმეორდა. ვის მივეცით ხმა ცვლილების დათვლას. ვინაიდან ეს მნიშვნელობები ნულის ტოლია, მაშინ ჩვენ ვამოწმებთ, რომ ფსონების ციკლი იდენტურია, რადგან ვერაფერი შეიცვლება, როგორც ჩანს, 2 = 2 ან 0 = 0 და $k-ის ღირებულებაც კი ჯერ არ შეცვლილა. Xia. პირველი შემოწმების ნაშთები იგნორირებულია და შემოწმების შემდეგ ენიჭება $temp ცვლადის მნიშვნელობა. არც ისე ადვილია იყო ასე მორცხვი. პირველი გამეორების დროს ყველაფერი კარგადაა, მაგრამ თუ ჩვენ მაინც დავამატებთ მნიშვნელობებს გადამოწმებამდე, მაშინ გადამოწმება გამოიწვევს დამოწმებას, რომელიც უკვე გამოვიცანი (2 = 2, 3 = 3 და ა.შ.). ჩვენთვის საგნების ღერძი იგივეა.

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

    Სულ ეს არის.

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

    საიტის რუკა