AD aktiveerige PHP. Kuidas luua oma registreerimislehe WordPress Multisite

Võimaldab kasutada ühe WordPress seadistust mitu saiti samal ajal. Samal ajal saab iga sait ainulaadse eesliitega andmebaasis oma tabeleid.

Tabelid kõigi võrgukohtade ühiste registreeritud kasutajate andmetega. See on kindel pluss ja registreerimine ühel päeval saate juurdepääsu mitu saite. Veelgi enam, iga saidi puhul võib samal kontol olla erinevad õigused. Näiteks ühel saidil võib kasutaja olla toimetaja ja teisele administraatorile.

Tavapärases paigalduses WordPressi leht Registreerimine, autoriseerimine ja parooli lähtestamine Kuvab WP-login.php-faili.

  • wP-login.php - luba
  • wP-login.php? Action \u003d Register - Registreerimine
  • wP-Login.php? Action \u003d LostPassword - parooli lähtestamine

Mitmesuguse režiimis hakkab WordPress kernel käituma mõnevõrra teisiti ja kui lülitate WP-login.php link? Action \u003d Register saab ümbersuunamise WP-Signup.php. See on teie võrgu registreerimisleht, mis on vaikimisi WordPressis.

Lisaks tavaliste kasutajakontode registreerimisele saate luua uue saidi, kui superministraator on võimaldanud sellist võimalust võrguseadetes (võrgu seaded).

Enamikus teemadel ei tundu registreerimisleht väga hea. Paljud teemad kasutavad CSS-raamistikud, näiteks bootstrap ja nende enda konkreetsed klassid lehekülgede erinevate elementide stiliseerimiseks, mistõttu on raske kirjutada ühe HTML-i, mis sobib kõigile.

Aga sa ei tohiks meeleheidet, kui leht on ebameeldiv. WP-Signup.php-fail on kõigepealt suurepärane asi, kui ei ole aega töötada iga saidi osa välja - saate keskenduda teistele olulised leheküljed ja sisu.

Kui olete valmis oma leht Registreerimine, WP-Signup.php on hea valim ja näide, milles on lihtne mõista funktsioone spektrit, mida WordPress pakub kasutajatele sisestatud andmete töötlemist ja kontrollimist ning luua uusi kontosid.

Peamine veebisaidi võrgustik

Vaikimisi avab WordPress registreerimislehe (WP-Signup.php) peamise domeeni (veebisaidi) võrgustiku kohta. Sellegipoolest saate luua iga võrgu saidi registreerimislehti, isegi kui neil on teemasid.

Me kaalume juhtumit, kui ühel teemal kasutatakse kõigis võrgukohtades, kuid igaüks on registreerimisleht. Saidid erinevad keele (inglise ja vene keeles), nii et registreerimisleht kuvatakse "Native" keelepaikil. Kui saidid kasutavad erinevaid teemasid, sõltub kõikidest teemadest, mis sobivad neile sama paigutusega (suurepärane olukord, mis suudab sind ühendada kõikide teemade ühendamiseks) või tasub lehekülgede individuaalselt töötada.

Alternatiiv funktsioone.php.

Tellige failides

Mu-pluginad võivad sisaldada mis tahes arvu faile ja struktuuri, mis tundub teile loogiline. Ma järgin sellist hierarhiat:

| Mu-pluginate | | Laadi.php | | Selena-võrgustik | | | Registreeru | | | | Plugin.php | | | ... | | | Jetpack | | | | plugin.php.

Laadis.php faili, tõlkeid ja kõik vajalikud pluginad "on ühendatud:

// laadimisülekanded mu-pluginate laadimiseks_muprugin_textdomanin ("selena_network", "/ Selena-võrgu / keeled /"); // Registreerimislehe funktsionaalne nõuavad wpmu_plugin_dirit. "Scesterenena-network/signup/plugin.php"; // Teine plugin // nõuda wpmu_plugin_dir ...

Selena-võrgukataloogi sees salvestatakse plug-in kaustad. Igal neist on oma plugin.php, mida me comple.php ühendame. See annab paindlikkuse ja võime koheselt keelata ja sisse lülitada eraldi komponendid Tööprojektis hädaolukorras.

Registreerimisleht

Olles mõistnud, kus ja kuidas me koodi kirjutame, saate minna registreerimislehe loomisele.

Loo lehekülg näites.org/signup/ tavapärase liidese kaudu. Aadressina saate kasutada mis tahes URL-i, mis tundub teie projekti jaoks sobiv.

Suunake soovitud registreerimislehele

Sest WordPress välja selgitada meie uue registreerimislehe kohta ja tegi selle ümbersuunamise, kui klõpsates nuppu "Registreeru" link, kasutatakse WP_Signup_location filter. See võib leida WP-login.php sees ja see on see, kes vastutab ümbersuunamise eest vaikimisi WP-Signup.php.

Case "Registreeri": kui (is_multisite ()) (WP_Redirect (rakendage

Kuidas sa vaikimisi mäletad, avaneb registreerimisleht võrgu põhiavaldusele. Seetõttu kasutatakse siin võrgu_site_url ().

Lisa oma filtri käitleja Mu-pluginad / Selena-Network / Roolimine / Plugin.php, mis antakse aadress registreerimise lehel praeguse saidi:

Funktsioon Selena_Network_signup_page ($ URL);) ADD_FILTER ("WP_SIGNUP_LOCATION", "Selena_Network_signup_page", 99);

selena_Network - eesliide, mida ma kasutan kõikide funktsioonide nimedel mu-pluginate sees minu saidil, et vältida konflikte, tuleks asendada oma unikaalse eesliitega. Filtri 99 lisamise prioriteet, sest mõned pluginad, nagu BBress ja Buddypress, võivad selle aadressi üle kirjutada (MU-pluginad laaditakse varem kui tavalised pluginad, vt eespool).

Pane tähele, et home_url () kasutatakse, mis erinevalt võrgustik_site_url (), annab aadressi praeguse saidi ja mitte põhivõrgu saidi.

WP-Signup.php funktsionaalsus

WP-Signup.php-fail sisaldab suur hulk Funktsioonid ja kood. Et näha pilti tervikuna, saate kasutada kokkuklaptode koodi. Reeglina nimetatakse inglise keeles "koodide kokkuklapitavaks".

Faili alguses 1 kuni 80-ni, joone (versioon 4.1.1), erinevate kontrollide tehakse ja väljastamine "Start" lehel Get_Header ().

Järgmisena deklareeritakse palju meetodeid ja enne nendega töötamise alustamist tasub mõista, mis teeb iga funktsiooni. Seos paljud neist kasutatakse sageli muid funktsioone WPmu_ eesliide, kõik need kuulutatakse välja WP-Sisaldab / MS-Functions.php faili. Seda sektsiooni on raske mõista ilma koodi nägemata. Allpool väikese kirjelduse põhifunktsioonide puhul, kui teil on raskusi.

  • wPMU_SIGNUP_STYLESHEET () - täiendavate CSS-i väljund registreerimislehel.
  • sHOW_BLOG_FORM () - alade registreerimise väljad (aadress, nimi nähtavus otsingumootorite jaoks).
  • valideate_Blog_form () - sisestatud saidi aadressi ja nimede kontrollimine wpmu_validate_blog_signap () abil.
  • show_user_form () - väljad kasutaja registreerimiseks (sisselogimine ja e-posti aadress).
  • validAte_user_form () - sisestatud sisselogimise ja aadresside kontrollimine. Mail wpmu_validate_user_signup ().
  • signup_another_blog () - väljad uute saitide registreerimise väljad, kasutades Show_Blog_form () kasutajate jaoks, kes on saidil juba registreeritud.
  • valideate_another_blog_signup () - kontrollib saidi aadressi ja nime kasutades valideadi_blog_form ().
  • signup_user () on peamine funktsioon registreerimislehe väljalülitamiseks.
  • kIETEDATE_USER_SIGNUP () - kontrollib sisselogimise ja e-posti aadressi. Mail valideeritud_user_form ().
  • signup_blog () - väljad sisenemise aadressi, nime ja nähtavuse saidi (teine \u200b\u200bregistreerimisetapp) kasutades show_blog_form ().
  • kIEVADATE_BLOG_SIGNUP () - kontrollib sisselogimist, e-posti aadressi. Mail, aadress ja saidi nimi.

WP-SignUp.php-faili allosas (646 õmblusest versioonis 4.1.1), peamine loogika registreerimislehe, mis kasutab ülaltoodud meetodeid. See koodi osa ei esitata funktsioonile. Lõpuks nimetatakse Get_Footer ().

Kopeeri funktsionaalne WP-Signup.php

Järgmisena kirjeldatakse WP-SignUp.php kopeerimise protseduuri mu-plug-ins muutuste tegemiseks kahvlile. See võib tunduda õige tee. Selle asemel saate kirjutada oma funktsioonide nullist, et kontrollida ja väljundvorme klasside, mitte tavapäraste funktsioonide abil. Minu arvates on WP-Signupi.php-l juba meie lehele kõik vajalikud loogika, jääb vaid väiksemate muudatuste tegemiseks.

WordPressi ajakohastamisel muutub WP-Signup.php aeg-ajalt muutub, kuid see ei tähenda, et iga vabastamise puhul on sünkroonida oma "Forc". Funktsioonide sees WP-Signup.php on sisuliselt kaasatud ainult HTML-väljundi, andmekeskusega, kontode ja saitide loomine WPmu_ prefiksis, deklareeritud MS-Functions.php.

Loome funktsiooni, mis kuvab leheküljel registreerimisvorm. Selleks kopeerige WP-Signup.php WordPress Root MU-PULGINGS / Selena-Network / Reljeef /. Ühendage see Mu-Pugins / Selena-Network / Roog / plugin.php).

Nõuda wpmu_plugin_dir. "SELESTELENA-NETWORK/signup/wp-signup.php";

Kustuta kõik vajalikud ja mittevajalikud kontrollid kopeeritud faili algusest peale. Versioonis 4.1.1, see on kogu kood 1 kuni 80 rida.

Nüüd oleme valmis registreerima põhifunktsiooni registreerimisvormi kuvamiseks. Selleks kõik loogika rida 646 ja faili lõpuni kantakse me kantakse funktsiooni nimega Selena_Network_signup_main. Lõpuks kustutate kaks tarbetu sulgemise

(Liinid 722 ja 723), samuti kõne get_footer ().

Uus loodud selena_network_signup_main () alguses deklareerida globaalne muutuja Active_signap, et kõik muud meetodid selle faili kasutamise. Ja lisage enne faili algusest välja enne failide algusest välja.

Funktsioon Selena_Network_signup_main () (globaalne $ active_signup; do_action ("enne_signup_form"); // ...)

Nüüd jääb jäänuseks muutmiseks ainult paigutuse muutmiseks kõigis kohtades, kus see on vajalik ja registreerimisleht on valmis.

Registreerimisvormi väljund

Siin on vähemalt kaks võimalust. Mugavam viis shortcode'i loomiseks ja selle lehekülje loomiseks tavalise toimetaja kaudu.

// Loo võrgu_signup ADD_SHORTCODE Shortcode ("Network_signup", "Selena_Network_signup_main");

Teine võimalus on luua lehekülje registreerumine.php leht tütar-teema kausta. Sõna "registreerumise" asemel saate lehele määratud unikaalset ID-d kasutada. Malli sees lisage vajalik paigutus ja tehke valik selena_network_signup_main () õiges kohas.

Selle tulemusena hakkas minu registreerimisleht vaatama palju paremini ja puhtamaks.

Aktiveerimisleht

Vaikimisi jagab WordPress tavapäraselt registreerimisprotsessi kahe sammuga - vormi täitmine ja konto aktiveerimine, kui link saadetakse pagulusesse elektrooniline täht. Pärast eelmises osas loodud vormi täitmist saadab WordPress väikese juhendamise kirja ja konto aktiveerimiseks.

Aktiveerimislehe väljundi jaoks vastatakse WP-ActivAte.php-fail WordPress root kataloogis. WP-ActivAte.php saab täielikult muuta. Protsess on sarnane sellele, mida oleme juba WP-disfupi.php jaoks teinud.

Looge näide.org/activAte / leht tavalise liidese kaudu. Aadressi kui URL-i, mis tundub teie jaoks sobiv.

Kopeerige WP-ActivAte.php-fail mu-pluginad ja ühendage see Mu-Pugins / Selena-Network / Roog / Plugin.php.

Nõuda wpmu_plugin_dir. "Scestesenena-network/signup/wp-activate.php";

Sees, mitte nii palju sisu, erinevalt WP-Signup.php-st. Fail toimib ühe operatsiooni - aktiveerib konto, kui saadakse õige klahv ja kuvab veateate või eduka toimimise.

Kustuta kõik tarbetuid kontrolle ja nõuavad - 1 kuni 69 rida WordPress 4.1.1. Lõpuks eemaldage Get_Footer () kõne. Ülejäänud sisu edastades selena_network_activate_main () funktsiooni.

On huvitav märgata, et WP_installing konstant teatas siin enne WordPressi laadimist (WP-Load.php). Selle olemasolu põhjustab WordPressi pluginate laadimist.

Nagu registreerimislehe puhul, jääb see paigutuse kinnitamiseks ainult siis, kui see on vajalik. Samuti saate muuta kuvatud sõnumite teksti (sel juhul ärge unustage lisada oma mu-pluginate teksti domeeni kõigile funktsiooni tõlkijatele, seda ei ole paigaldatud mujal).

Valmisfunktsiooni saab kasutada eelnevalt määratud lehel tütarettevõttes või eraldi malli kaudu.

Aktiveerimismärgid õigete viitetega

Aktiveerimisleht on valmis töötama, kuid WordPress ei tea seda ja saadavad endiselt aktiveerimismärgid WP-ActivAte.php viidetega. Erinevalt WP-Signupist.php ei ole filter, mis võimaldaks aadressi muuta. Selle asemel peate kirjutama oma funktsiooni, mis saadab kirju õigete linkidega.

Ajal täitmise ja saatmise vormi lehel registreerimine WordPress Kõned wpmu_signup_ kasutaja.() või wpmu_signup_ blogi.() Sõltuvalt registreerimise liigist. Mõlemad funktsioonid loovad uue kande WP_Signps tabelis, mis täidab selle vajaliku sisuga, mille hulgas on konto aktiveerimisvõtme.

Pärast sõltuvalt funktsioonist nimetatakse WPmu_signup_ kasutaja._Notefication () või wpmu_signup_ blogi._Notefication (). Mõlemal funktsioonidel on sarnane funktsionaalsus - genereerige ja saatke kirja aktiveerimise viitega, kuid võtab erinevaid argumente. Mõlemal on filtrid sündmuste pealtkuulamiseks.

Kui (! Apply_filtrid ("wpmu_signup_user_notification", $ kasutaja, $ user_email, $ võti, $ meta) tagastab False;

Aktiveerib kontode loomisega kontode aktiveerimiseks:

Kui (! Apply_filtrid ("wpmu_signup_blog_notification", $ domeen, $ tee, $ pealkiri, $ kasutaja, $ user_email, $ võtme $ meta) (tagastama False;)

Jääb ainult kirjutada oma käitlejad, kus saadate kirju WP_Maili () ja lõpus tingimata tingimata anda False nii, et WordPress ei saada aktiveerimise kirja kaks korda - üks sinu oma, teine \u200b\u200b- kiri vaikimisi lingiga WP-aktiveerimine.php.

Funktsioon Selena_Network_wpmu_signup_user_notification ($ kasutaja, $ user_email, $ võti, $ meta \u003d massiivi ()) (// genereerida päis, tekst ja kirja päised // ... // saatke kirja või lisage kirja saatmiseks kirja Wp_mail ($ user_email, wp_specialchars_decode ($ teema), $ teade, $ sõnum, $ sõnum); // taastama vale, nii et Wordpress ei saada aktiveerimisskirja kaks korda tagasi ;

Kui saadate kirju SMTP-serveri kaudu või registreerimiste arvu on väga suur, peaksite mõtlema kohe kirjade saatmisest koheselt. Selle asemel saate lisada Croni ülesandeid WordPress Croni abil.

Sulge juurdepääs WP-Signup.php ja WP-ActivAte.php

Olles loonud oma registreerimis- ja aktiveerimislehti, võib osutuda vajalikuks sulgeda "originaalid". Näiteks, kui registreerimislehel on täiendavaid väljad, mis peavad täitma. Samuti on paljud WordPressi saidid rämpsposti registreerimisega kokku puutunud.

Lahenda kahe probleemi ühe meetmega võib paluda Apache anda 404 puhul üritades neid lehti avada. Selleks peate lihtsalt registreerima oma konfiguratsioonifaili Or.Htaccess'i täiendava ümberkirjutamise paari.

Rewriteengine kohta Rewritebase / # teadmised regulaaravaldistest ei ole kunagi üleliigne :) RewriterUle ^ WP-registreerumine . # END WordPress.

Järeldus

Selle ja paljude teiste "probleemide" seotud WordPress internetis on palju lahendusi. Näiteks registreerimise ja aktiveerimislehtede loomiseks pakutakse mõningaid WP-SignUp.php ja WP-ActivAte.php ümberkirjutamist. Seda ei tohiks teha, sest WordPressi uuendamise puhul kaotate kõik failidele tehtud muudatused ja te ei saa kontrollida tuuma terviklikkust.

Kui väljatöötamisel täiendavaid teemasid või lahendusi tuleks veeta aega, et tegeleda Mis toimub sees WordPress. Selle jaoks on palju kasulikke debug-vahendeid.

P.S.

Erinevate rollide automaatseks määramiseks saavad uued kasutajad kasutada mitmesuguseid kasutajahaldusplugina.

Kui teil on registreerimis- ja aktiveerimislehtede loomise ajal küsimusi või raskusi pärast artikli lugemist, jätke kommentaar ja vastame.

27.03.2015 27.03.2015

WordPressi arendaja. Ta armastab tellimust kõike ja tegeleda uute tööriistadega. Inspireeritud arhitektuurist Symboni komponente.

  • Looge oma registreerimisleht tavapärase WP-SignUp.php-i asemel.

    Tavalises paigaldamine WordPress Registreerimisleht (luba, parooli lähtestamine) Kuvab WP-login.php-faili.

    • /WP-login.php - luba
    • /wp-login.php?action\u003dRegister - Registreerimine
    • /wp-login.php?action\u003dlostPassword - parooli lähtestamine

    WP-login.php mitmelisiitide puhul on eraldi tingimused. Niisiis, kui klõpsate lingil /wp-login.php?action\u003dRegister'ile Multisate'i, WordPress teeb suunata /Wp-signup.php lehele. Paljudes teemadel näeb leht tundub väga atraktiivne, nii et me teeme oma.

    Peamine veebisaidi võrgustik

    Vaikimisi avab WordPress registreerimislehe (WP-Signup.php) peamise domeeni (veebisaidi) võrgustiku kohta. Samas saate teha eraldi registreerimislehe iga võrgu saidi, isegi kui neil on erinevad teemad. Me kaalume juhtumit, millal kõikidel võrgukohtadel on oma registreerimisleht, kuid sama teemat kasutatakse ja saidid erinevad ainult keeles. Kui kasutatakse erinevaid teemasid, peate kirjutama rohkem koodi.

    functions.php?

    Mitte. Selle faili nimi tundub olevat mainitud mis tahes artiklis WordPressi kohta. Meie puhul, võttes arvesse asjaolu, et registreerimisfunktsioon on mõeldud mitmele saidile, on mõistlik võtta see mu-pluginad, mis on laetud mis tahes saidi avamisel.

    Lüüriline digressioon

    Väärib märkimist, et mu-pluginad laaditakse varem kui tavalised pluginad ja kuni WordPress kerneli allalaaditud, nii et kõne mõned funktsioonid võivad põhjustada FATABAL vigade PHP. Sarnane "varajase" allalaadimine on oma eelised. Ütleme iga teema sees ei saa klammerdada mõnele tegevusele, mis käivitub enne funktsioonide allalaadimist. Selle näide võib olla jetpack_moduule_loaded_related-postituste plugin (seotud-postitused - mooduli nimi), millega on võimalik jälgida moodulite aktiivsust Jetpackis. See on võimatu "siduri" teema failist sellesse tegevusse, sest tegevus on juba töötanud enne teemat laadimist - pluginad laaditakse varem. Te saate vaadata koodi toimingu viide lehel WordPress Boot tellimuse ühist pilti.

    Tellige failides

    Mu-pluginad võivad sisaldada mis tahes arvu faile ja mis tahes diagrammi, mis tundub teile loogiline. Ma järgin sellist hierarhiat:

    | -Mu-pluginad | - | Laadi.php | - | - | Selena-võrgustik - | - | - | - | - | - | - | - | - | - | - php | - | - | - | -... | - | - | - | -Jetpack | - | - | - | - | - | - -Plugin.php

    Laadis.php-failis on kõik vajalikud "pluginad" ühendatud meie võrguga:

    Laadida traslates kõigile ADDONES LOAD_MUPLUGIN_TEXTDDDODDOMAIN ("Selena_Network", "/ Selena-Network / Keeled /"); // Võrgu registreerumine nõuavad wpmu_plugin_dirit. "Scesterenena-network/signup/plugin.php"; // Teine plugin // nõuda wpmu_plugin_dir ...

    Selena-võrgu kausta sees salvestatakse pistikprogrammide kaustad, igaühel on oma plugin.php, mida me ühendame Laadi.Php-ga. See annab paindlikkuse ja võime kiiresti keelata ja lisada mõned asjad.

    Registreerimislehe aadress

    Registreerimislehe aadressi määramiseks kasutage WP_Signup_location filter. See võib leida WP-login.php-faili sees ja see on ta, kes vastutab WP-Siglip.php ümbersuunamise eest.

    Case "Register": kui (is_multisite ()) (WP_Redirect (rakendage

    Lisa oma funktsiooni MU-Plugins / Selena-Network / Roogis / Plugin.php, mis annab aadressi registreerimislehel praeguse veebilehel:

    Funktsioon Selena_Network_signup_page ($ URL) (tagastage home_url (). "/ Registreeru /";) add_filter ("wp_signup_location", "selena_network_signup_page", 99);

    selena_Network - eesliide, mida ma kasutan kõikide funktsioonide nimedel mu-pluginate sees minu saidil, et vältida konflikte, tuleks asendada oma unikaalse eesliitega. Filtri 99 lisamise prioriteet, sest mõned pluginad, nagu BBress ja Buddypress, võivad selle aadressi üle kirjutada (MU-pluginad laaditakse varem kui tavalised pluginad, vt eespool). Pange tähele, et home_url () kasutatakse võrgu_site_url () asemel külastajalt sama domeeni lahkumiseks. Võite kasutada mis tahes URL aadressina.

    Lehe loomine

    Nüüd loome lehte Site.com/signUp/ abil regulaarse liidese kaudu ja tütre-teema kausta malli meie uue lehekülje jaoks - Page-Signup.php. Sõna "registreerumise" asemel saate unikaalset ID-d kasutada.

    Uue malli sees peate helistama selena_network_signup_main () funktsioonile, mis kuvab registreerimisvormi.

    Väärib märkimist, et kogu protsessi mallidega ei nõuta ja selle asemel saate luua oma lühikirju, mis helistab ka Selena_Network_signup_main () funktsioonile.

    wP-Signup.php ja WP-ActivAte.php

    Nüüd loome funktsiooni, mis kuvab registreerimisvormi. Selleks kopeerida failid WP-Signup.php ja WP-ActivAte.php root WordPress mu-pistikupesa / selena-võrgu / registreerimise / (ja ärge unustage neid ühendada mu-pluginad / selena-võrgu Registreerumine / plugin.php). Edasised manipulatsioonid failidega on äärmiselt raske ja kaugele kirjeldada, nii et tulevad need ise. Ma kirjeldan ainult seda, mida täpselt tuleb teha ja avaldada teie projekti lähtefailid:

    1. Faili alguses kustutage kõik vajalikud nõutavad funktsioonid ja muud kood väljaspool funktsioone.
    2. Nimeta kõik funktsioonid ümber, lisades nimedele unikaalsed eesliited.
    3. WP-SignUp.php-koodi alumine osa on pakitud selena_network_signup_maini funktsiooni ja oma alguses kirjutama globaalse $ active_signap; .
    4. Vahetage paigutus iseseisvalt õiges kohas.

    Sisse WP-ActivAte.php pead tegema umbes sama:

    1. Kustuta kõik koodi väljaspool funktsioone, mähkige paigutus eraldi funktsiooni.
    2. Muuda paigutust kohas, kus see on vajalik.

    WP-ActivAte.php-fail vastutab konto aktiveerimislehe eest. Nagu registreerimislehe puhul, peate looma eraldi malli, mis helistada WP-ActivAte.php-failise funktsioonilt.

    Me saadame aktiveerimismärgid

    Registreerimisleht saadab külastajale kirja, viidates konto aktiveerimisele. Vaikimisi on see WPmu_signup_user_notification () funktsioon MS-Functions.php-failist. Selle funktsionaalsust saab laenata selle funktsiooni jaoks. Põhjus, miks soovite selle funktsiooni kasutamisest keelduda - see saadab konto aktiveerimise viide WP-ActivAte.php-ga. Selle funktsiooni saate keelata WPMU_SIGNUP_USER_NOTIFITSION FILTER abil, liigutades selle vale (kui seda ei tehta, saadetakse aktiveerimismärk kaks korda, okei, tegelikult kaks erinevat tähte).

    Funktsioon ArmyofSellenagomez_wpmu_signup_user_notification ($ kasutaja, $ User_mail, $ võtme $ meta \u003d massiivi ()) (// ... // kood wpmu_signup_user_notification () funktsioon wp_mail ($ user_email, wp_specialchars_decode ($ objekti), $ sõnum, $ message ) Tagasi

    Selle tulemusena hakkas selena teemal registreerimisleht vaatama palju puhtamaks ja ettevaatlikuks.

    Järeldus

    Internetil on palju teisi mitte väga õigeid viise, kuidas teha sama asja - Apache ümbersuunamised, Ajax-vormid, mis ei tööta ilma Java-skriptita jne. Ma ei meeldinud seda väga palju, nii et ma püüdsin seda kõige õigesti teha Minu veebisait.

    Märgin, et redigeerimisfailid peaksid olema võimalik hoolikalt hoolikalt liikuda ja mitte liikuda allikast järjestusest, kui WordPress muudab WP-Signup.php ja WP-ActivAte.php-faile, olid nad muutuste leidmiseks lihtsam võrrelda .

    Ärge unustage uurida kõigi ülalkirjeldatud funktsioonide lähtekoodi, et täielikult tegeleda, mida ja kuidas see koodi sees juhtub.

    Boonus. Kaitse rämpsposti saatjate vastu

    Isegi noorimad saidid WordPress on sageli rämpsposti registreerimine. Võite kirjutada lõputuid tingimusi botide filtreerimiseks, sageli sarnasem katse luua kunstliku intelligentsuse 🙂 mitmekiirte puhul aitas Apache regulaarne ümbersuunamine mulle, millega avatakse /Wp-signup.php ja / wp- acitvate.php, ma palusin väljastada 404 (ma ei ole ekspert reguleerige Apache'i.Nii et minu reeglid ei pruugi olla väga õiged).

    Rewriteengine On Rewritebase / RewriterUle ^ WP-Sisselogimise ^ WP-Registreule ^ WP-Aktiveeri ^ WP-Aktiveeri kohta

    P. S. Püüan kirjeldada mõningaid kolmanda osapoole asju nii palju kui võimalik, sest kui ma hakkasin, mõnikord oli see kuidagi rääkida ja selgitada palju asju. Samuti usun, et sarnased väikesed näpunäited teiste materjalide kohta, mida keegi surutakse midagi uut ja oma teadmiste valdkonna laiendamist. Regulaarseid väljendeid kasutatakse RERITERULES-dokumendis, nad ei ole täiesti keerulised, näiteks sümbol ^ tähendab joone algust.

    Segal Me kaalume kriitilise 1-i haavatavuse kasutamist populaarses CMS-i Joomla'is, mis ähvardasid internetis oktoobri lõpus. See on umbes haavatavusi numbritega CVE-2016-8869, CVE-2016-8870 ja CVE-2016-9081. Kõik kolm tekivad ühest koodist, mis oli üks kord raamistiku sügavuses, oodates oma tundi, seejärel vabastage vaba ja tuua koos temaga kaosse, häkkinud saidid ja pisarad selle Joomla süütute kasutajatega. Ainult kõige vaprade ja julge arendajad, kelle silmad on punased monitorite valgusest ja klaviatuurid on täis leivapurude all, suutsid nad paistes suvi võtta ja määrata oma pea paranduste altarile.

    Hoiatus

    Kogu teave on esitatud üksnes informatiivsetel eesmärkidel. Ei toimetajad ega autor ei vastuta võimaliku kahju põhjustatud materjalide käesoleva artikli.

    Miks see kõik algas

    6. oktoobril 2016 lõi Damis Palma (Demis Palma) teema virnade vahetamisele, mis küsis: miks, tegelikult Joomla versioonis 3.6 on kaks meetodit kasutajate registreerimiseks sama nime registris ()? Esimene paikneb kasutajatelOtroleringeri kontrolleril ja teine \u200b\u200bon kasutajakonstruktsiooni. Damis tahtis teada, kas kasutajad Controlerser :: Register () meetodit kasutatakse kusagil, või see on ainult evolutsiooniline anakronism, mis jääb vana loogika. Ta häiris asjaolu, et isegi siis, kui seda meetodit ei kasutata ühtegi esitluses, võib seda nimetada vormitud taotluse abil. Mis oli vastus arendajale Itoctopuse hüüdnime all, kinnitades: probleem on tõesti olemas. Ja saatis Joomla arendajatele aruande.

    Seejärel arendasid sündmused kõige kiiremini. 18. oktoobril aktsepteerivad Joomla arendajad DAMISi raportit, mis selleks ajaks pani PoC, mis võimaldab teil kasutaja registreerida. Ta avaldas märkuse oma saidile, kus üldiselt rääkis probleemi ja mõtete kohta selle kohta. Samal päeval väljub uus versioon Joomla 3.6.3, mis sisaldab endiselt haavatavat koodi.

    Pärast seda keerutab David Tampellini (Davide Tampellini) viga registreerimis olekusse ei ole lihtne kasutaja, vaid administraator. Ja 21. oktoobril saabub Joomla turvameeskond uut juhtumit. See räägib juba privileegide tõstmisest. Samal päeval ilmub teadaanne Joomla veebilehel, et teisipäeval, 25. oktoobril teise versiooni järjestuse number 3.6.3 vabastatakse, mis parandab kriitilise haavatavuse süsteemi kernel.

    25. oktoobril leiab Joomla turvalisuse streigi meeskond viimase probleemi, mida Damatis avastas koodi. Siis põhiasutuses ametliku Joomla hoidla, pühendunud oktoobri 21, silmapaistmatu nimi valmistada 3.6.4 stabiilne vabastamine, mis kinnitab halvasti fug.

    Pärast seda on arvukad huvitatud isikud ühendatud arendajate edastamisega arendajate edastamisega - nad hakkavad edendama haavatavust ja süüa tahket ainet.

    27. oktoobril kehtestab Harry Roberts uurija XIPHOSi teadusuuringute hoidlasse valmiskasutuse, mis saab laadida PHP-faili haavatavate CM-dega serverile.

    Üksikasjad

    Noh, eelajaloojaga on see lõppenud, minge kõige huvitavamale asjale - haavatavuse eristamisele. Katseversioonina installisin Joomla 3.6.3, nii et kõik rea numbrid on selle versiooni jaoks asjakohased. Ja kõik teed failidele, mida te vaatate, märgitakse paigaldatud CMS-i juurte suhtes.

    Tänu Bar Dami Palmile teame, et on olemas kaks meetodit, mis kasutavad kasutaja registreerimist süsteemi. Esimest kasutavad CMS ja on /component /com_users/controllers/comers/controllers/Registration.php:108. Teine (üks, mida me ja peame helistama), elab sisse / komponendid / com_users / kontrollerid / user.php: 293. Vaatame seda lähemale.

    286: / ** 287: * Kasutaja registreerimise meetod. 288: * 289: * @return Boolean 290: * 291: * @Since 1.6 292: * / 293: avaliku funktsiooni register () 294: (295: JSession :: Checktoken ("Post") või JTEXIT :: _ ("Jinvalid_token")); ... 300: // Saage vormi andmed. 301: $ andmed \u003d $ see-\u003e Input-\u003e Post-\u003e Get ("kasutaja", massiivi (), "massiiv"); .. 315: $ Return \u003d $ Model-\u003e Valideerimine ($ vorm, $ andmed); 316: 317: // Lõpetada registreerimine. 346: $ Return \u003d $ Model-\u003e Register ($ andmed);

    Siin jätsin ainult huvitavaid jooni. Tugeva meetodi täielikku versiooni saab vaadelda Joomla hoidlasse.

    Me näitame selle välja, mis juhtub, kui tavaline kasutaja registreerimine: milliseid andmeid saadetakse ja kuidas neid töödeldakse. Kui kasutaja registreerimine on seadetes sisse lülitatud, võib vormi leida aadressil http: //joomla.local/index.php/component/users/? View \u003d Registreerimine.


    Õiguspärane kasutaja registreerimise taotlus näeb välja nagu järgmine ekraanipilt.


    COM_USERS komponendid vastutavad kasutajatega töötamise eest. Pöörake tähelepanu ülesande parameetrile päringus. Sellel on $ Controller. $ Meetod. Vaatame faili struktuuri.

    Skripti nimed kausta kontrollerid. Vastab nimetatud kontrollerite nimedele. Kuna meie taotluses on nüüd $ Controller \u003d "Registreerimine", helistab fail. rECORDER.PHP. ja selle registri () meetod.

    TÄHELEPANU, KÜSIMUS: Kuidas edastada registreerimisprotsessis koodi haavatavas piirkonnas? Sa oled ilmselt juba arvanud. Haavatavate ja kohaliste meetodite nimed langevad kokku (register), nii et me saame lihtsalt muuta nime nimetatud kontroller. Ja kus on haavatav kontroller? Parem faili user.php.. See osutub $ Controller \u003d "Kasutaja". Me kogume kõik kokku ja saavad ülesande \u003d kasutaja .Register. Nüüd töötleb registreerimistaotlust vajaliku meetodi abil.


    Teine asi, mida me peame tegema, on andmete saatmine õiges vormingus. Kõik on siin lihtne. Õigustatud register () ootab meilt massiivi USA nimega JFF, milles edastame andmeid registreerimiseks - nimi, sisselogimine, parool, mail (vt ekraanipilt koos päringuga).

    • / componendid/com_users/controllers/registration.php: 124: // Hankige kasutaja andmed. 125: $ RequestData \u003d $ See-\u003e Input-\u003e Post-\u003e Get ("JFF", massiivi (), "massiivi");

    Meie kogudus saab need andmed massiivi nimega kasutajalt.

    • / componendid /com_users/controllers/user.php: 301: // Saage vormi andmed. 302: $ andmed \u003d $ see-\u003e Input-\u003e Post-\u003e Get ("kasutaja", massiivi (), "massiivi");

    Seetõttu muudame kasutajal kõigi JFFOM-i parameetrite nimesid.

    Kolmas meie samm on leida CSRF kehtiv märgis, sest registreerimist ei ole ilma selleta.

    • /Componendid /com_users/controllers/user.php: 296: JSESSION :: Checktoken ("postitus") või Jexit (jinvalid_token));

    Tundub, et Hash MD5 ja te saate seda teha näiteks saidi / index.php/component/users/?view\u003dlogin.


    Nüüd saate luua kasutajaid soovitud meetodi kaudu. Kui kõik juhtus, õnnitlen - sa lihtsalt mõistsid haavatavust CVE-2016-8870 "Uute kasutajate registreerimise lubade puudumine."

    Siin on, kuidas see välja näeb "töötav" register () kasutajatelt kasutajatelt:

    • / componendid/com_users/controllers/registration.php: 113: // Kui registreerimine on keelatud - suunata sisselogimise lehele. 114. Vaata \u003d Logi sisse ", False)); 117: 118: Tagastage FALSE; 119 :)

    Ja nii haavatav:

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

    Jah, mitte mingil moel.

    Teise, palju tõsisema probleemi mõistmiseks saadame meile soovitud taotluse ja järgida, kuidas seda tehakse koodi erinevates osades. Siin on tükk, mis vastutab kasutaja poolt töömeetodi poolt saadetud andmete kontrollimise eest:

    Jätkamine on saadaval ainult osalejatele

    1. võimalus 1. Liitu saidi kogukonnaga, et lugeda kõiki materjale kohapeal

    Liikmelisus ühenduses kindlaksmääratud ajavahemiku jooksul avab teile juurdepääs kõikidele häkkerite materjalidele, suurendab teie isiklikku akumuleeruvat allahindlust ja koguneb professionaalne XAKEP skoor hindamine!

    Teemad ei ole tavaliselt funktsionaalsed, kuid mõnikord me, arendajad, peate meie teemal mõned võimalused kasutusele võtma, et muuta see veidi paremaks ja mugavamaks.

    Käesolevas juhendis kaalume terminit "pluginate territoorium", samuti tutvuge Thomas Griffini kirjutatud fantastilise tööriistaga: TGM-plugina aktiveerimisraamatukogu.

    Teema funktsionaalsus: sissetung pluginate territooriumile

    Teemad on mõeldud WordPressi veebisaidi kujunduse muutmiseks. Ideaalis peaks teema mõjutama ainult visuaalset aspekti. Kuid meie "Golden Age" WordPress, pistikprogrammide arendajad sageli funktsionaalne funktsioone nende teemadel, mis võimaldavad teil säilitada konkurentsivõime turul.

    See on pluginate territooriumi sissetung. Me saame esitada "pluginate territooriumi", nagu mõned koodi funktsionaalsed osad. Teie saidi funktsionaalsuse muutmine peab olema esindatud pluginana, kui määratud koodi ei asetata WordPress kernelile.

    Olen juba varem sõnastanud ühes minu artiklid empiirilise reegli "territooriumi pluginad:

    Kui eripära on seotud saidi visuaalse kujutisega, siis tuleks käesoleval juhul lisada teema; Kui see on seotud funktsionaalsusega, peab see olema esindatud eraldi pistikuna.

    Päris lihtne reegel. Inimesed püüavad endiselt registreeruda koodi funktsionaalsete fragmentide tasemel oma teemadel, kuid teemade kataloogid (näiteks Wordpress.org või ThemeeForest) kataloogid ei võta teemasid, mis tungivad pluginate territooriumile. Seega on teemade funktsionaalsuse ettepanek muutunud teatud probleemiks.

    Õnneks on lihtne lahendus, mis ei lähe reegli vastu "pluginate territooriumi".

    Sissejuhatus TGM-plugina aktiveerimisraamatukogu juurde

    TGM-plugina aktiveerimise seadistamine

    Pöörake tähelepanu TGMPA-le () funktsiooni kahe parameetriga koodi lõpus. Teine parameeter on $ config muutuja, mis on ka massiiv, nagu $ pluginad. Oma nime järgi saate konfigureerida TGM-plugina aktiveerimisraamatukogu selle massiivist. Muutuja aktsepteerib oma valikute komplekti:

    • iD (string) on \u200b\u200bteie teema TGM-plugina aktiveerimisraamatukogu ainulaadne ID. See on väga oluline: kui teised pluginad kasutavad ka TGM-plugina aktiveerimist, takistavad erinevad ID-d võimalikud konfliktid.
    • vaikimisi_Path (string) - vaikimisi absoluutne tee oma teema plug-ins. Selle installimisel saate kasutada ZIP-faili nime allika parameetri väärtuseks plug-in.
    • menüü (String) - menüümenüü plug-installimise menüü.
    • hAS_NOTICES (BOOLEAN) - Kui täpsustatakse Tõsi, antakse vajalikud halduslikud teated nõutavale / soovitatud plug-ins.
    • tüdrutatavad (Boolean) - Kui täpsustatakse Tõsi, saab kasutaja "sulgeda" teateid.
    • tühista_msg (string) - kui lükata vabatahtlik valik on vale, see sõnum kuvatakse administraatori teate kohal.
    • iS_Automatic (Boolean) - Kui täpsustatakse tõsi, aktiveeritakse pluginad pärast seda, kui kasutaja nõustub nende installimiseks.
    • sõnum (string) - täiendavad HTML, mis kuvatakse pistikupesa ees.
    • stringid (massiiv) - massiiv, mis sisaldab kuvatud sõnumeid. Te saate need määrata ringhäälinguliinidena. Vaata näide.php-faili, et näha kõigi sõnumite täielikku nimekirja.
    "Mytheme-TGMPA", // teie ainulaadne TGMPA ID "Default_Path" \u003d\u003e get_stylesesheet_directory (). "/ lib / plugin /", // default absoluutne tee "menüü" \u003d\u003e MyTheme-install-install-nõutud pluginad ", // menüüluugu" has_notices "\u003d\u003e TRUE, // Näita administraatori märkused" vallandatav "\u003d\u003e False , // Teated ei ole tagasi lükatud "TÕHUS_MMSG" \u003d\u003e "Ma tõesti, tõesti vajate teid installida nende pluginate, okei?", // See sõnum väljund Nag "is_automatic" \u003d\u003e TRUE, // automaatselt Aktiveerige pluginad pärast paigaldamist "sõnum" \u003d\u003e "", // sõnum väljundile kohe enne pluginate tabeli" stringid "\u003d\u003e massiivi (); // sõnumite stringid, mida TGM-plugina aktiveerimise kasutamine);?\u003e

    Järeldus

    Nagu näete, soovitage funktsionaalsust teemad WordPress. Võib-olla - sa pead lihtsalt mõtlema kõigepealt kasutajatest, kes saavad ühest teemast teise sisse minna. TGM-plugina aktiveerimisraamatukogu pakub selle jaoks tõeliselt arukat teed.

    Mida sa selle tööriista kohta arvad? Kas te olete seda kunagi kasutanud, kas te kavatsete seda tulevikus kasutada? Jagage oma mõtteid!