Registrační proces

Štítky: 

Zvolené téma obsahuje celkem 4 odpovědi. Do diskuze (2 účastníci) se naposledy zapojil uživatel  Clant a poslední změna je stará 13 let, 1 měsíc.

Aktuálně je na stránce zobrazeno 5 příspěvků - 1. až 5. (z celkem 5)
  • Autor
    Příspěvky
  • #871

    Clant
    Participant

    Zdravim komunitu, mam menší dotaz. Potřebuju si upravit registrační formulář pro svoje účely (potřebuji zjistit jednu hodnotu, kterou napíše uživatel do formu, jestly se nachází v databázi nebo ne).

    Když koukám na souboru wp-signup.php, tak mam problémy se v tom celym vyznat. Mohl by mi poradit někdo, kdo se v tomhle vyzná? Respektivě bych potřeboval vědět, jak jdou ty postupy po sobě, protože WP několikrát ověřuje data, pak uživatele a všechno jinou funkcí, takže nevim kde je začátek toho registračního procesu.

    Používám WP 3.0.4 s rozšířením MU (defaultní rozšíření od 3.0.0) a potřebuju při registraci, aby si svůj blog mohl vytvořit jen uživatel, který napíše určitý kód do formu. Bohužel nevim do jaký funkce to vložit neboť nevidim žádnou souvislost souboru wp-signup.php, všechno je tam na přeskáčku..

    #7866

    admin
    Keymaster
    Web

    Soubor wp-signup.php je dobrým začátkem, ale lepší je rovnou naplno využít standardních možností WordPress API. A je tu také mnohem jednodušší varianta – použít jeden z mnoha pluginů.

    Zkusím jen stručně popsat jednoduchý postup k tvorbě vlatního řešení. Nejdříve je třeba využít akce register_form, kde pomocí vlastní funkce nadefinujete zobrazené pole pro vložení požadované hodnoty. U víceuživatelské verze WordPressu (MU) budete muset ještě použít akci signup_header pro přesměrování na jednotlivé weby. Dále musíme pomocí akce register_post vyplněné hodnoty ověřit. Tedy porovnat buď přímo jako součást funkce nebo se dotázat do databáze. A nakonec je třeba ještě pomocí akce user_register uložit dodatečné vyplněné údaje do databáze (v našem případě to asi nebude potřeba, protože pouze něco kontrolujeme). Začal bych to asi dělat pro normální WordPress a pak to rozšířit na víceuživatelskou verzi, což je sice trochu komplikace, ale měla by být řešitelná.

    Vše složené společně pak najdete např. v této ukázce. Budete se muset asi trochu učit a experimentovat, ale není to nic extra složitého…

    A je tu také ještě mnohem jednodušší cesta v podobě dostupných pluginů. Nemusí asi úplně vyhovovat, ale některé umí vkládat i pole s tzv. “invitation code”, což je víceméně požadovaná funkcionalita znalosti nějakého kódu pro registraci. Vcelku známé jsou následující pluginy (nezkoušel jsem ale funkčnost na víceuživatelské verzi WordPressu):

    Register Plus Redux – umí právě i invitations, viz Screenshoty.

    Pie Register

    Simplr User Registration Form – trochu specifický plugin, umí trochu i něco jiného – různé registrační formuláře na různých místech webu a pro různé uživatele.

    Budeme rádi, pokud se podělíte s výsledky vašeho zkoumání a doporučíte nejlepší postup…

    #7867

    Clant
    Participant

    Tak jsem to nakonec upravil jinak – a to zasáhem přímo do kódu WordPressu. Pokusím se to nějak sepsat do bodů a napsat sem moje řešení.

    1) Vytvoření formů v souboru wp-signup.php

    <?php //
    
    ZADAVANI RODNEHO CISLA
    ?><br />
    <label for="user_email_sas"><?php _e( 'Rodné číslo :' ) ?></label><br />
    <?php if ( $errmsg = $errors->get_error_message('user_rc') ) { ?><br />
    <p class="error"><?php echo $errmsg ?></p><br />
    <?php } ?><br />
    <input name="user_rc" type="text" id="user_rc" value="<?php echo esc_attr($user_rc) ?>" maxlength="200" /><br /><?php _e('Pouze v případě, že jsteXXX.') ?><br />

    — umístění formů si vyberu sám, kde potřebuji. Všechny informace o úvodních formech začínají na řádcích 129 (function show_user_form) —

    2) Úprava v souboru ms-functions, který definuje funkce využité při registraci uživatelů/blogu na WordPress MU

    if ($_POST['signup_for'] == 'blog') {  // Pokud uživatel vybere možnost "chci blog"<br />
    if ($_POST['user_rc'] == '') { // pokud jsou pole prázdná, vypíše se chyba<br />
    $errors->add('user_rc', 'Blog může mít pouze XXX!');</p>
    <p> }<br />
    if (strlen($_POST['user_rc']) > 10){ // kontrola délky rodného čísla<br />
    $errors->add('user_rc', 'Neplatné rodné číslo!');<br />
    }</p>
    <p> if (!is_numeric($_POST['user_rc'])){ // kontrola, zda rodné číslo je numerické<br />
    $errors->add('user_rc', 'Nejsou cisla!');<br />
    }</p>
    <p> if (!checkIn($_POST['user_rc'])) { // porovnání údají s databází<br />
    $errors->add('user_rc', 'Zadané údaje neodpovídají databázi!');<br />
    }<br />

    — Na konec funkce wpmu_validate_user_signup($user_name, $user_email) si přidám moje podmínky, které se budou kontrolovat

    Za konec funkce umístim mojí funkci checkIn

    function checkInSas($userRc) {<br />
    global $wpdb;</p>
    <p> $otisk = xxx; // vyberu si, čemu se bude rovnat otisk</p>
    <p> $zzz = $wpdb->query( $wpdb->prepare("SELECT * FROM xxx WHERE yyy = %s", $otisk) );<br />
    if ( $zzz != null ){<br />
    return true;<br />
    }else{<br />
    return false;<br />
    }<br />
    }<br />

    — funkci jsem upravil zhruba jak by měla vypadat, každý si zajisté doplní podle svého

    Snad to bude někomu užitečné :-)

    #7868

    admin
    Keymaster
    Web

    Díky za reakci, ale toto řešení mi bohužel nepřijde vhodné…

    Zatím jsem to detailně nezkoumal, ale upravuješ dva důležité soubory jádra a až přijde čas automatické aktualizace, tak je budeš muset pokaždé ještě ručně nahradit, nehledě na to, že budeš muset pravidelně sledovat jejich vývoj, zda u nich nedosšlo k nějaké změně (= budeš muset svoje úpravy znovu vkládat do aktuálních souborů, alespoň u velkých verzí).

    Proto bych spíše doporučil výše popsané řešení s využitím WordPress API, které je na aktualizacích zcela nezávislé.

    A ještě jsem zcela nepochopil logiku zjišťování? Myslel jsem, že uživatelé musí znát jedno heslo a poté si mohou založit na webu svůj blog. Ale podle uvedeného kódu zjišťujete rodné číslo? Takže to už tam musí mít někdo v systému zadáno? Zkus to trochu upřesnit…

    #7869

    Clant
    Participant

    Jojo, s tim jsem nějak počítal, že když přijde aktualizace, tak to budu muset manuálně doplnit.

    Jinak, abych to upřesnil, můj kód se stará o kontrolu RC jestli je v databázi, když je, tak si uživatel může vytvořit blog, když tam neni, tak může pouze uživatele. Snad jsem to vysvětlil :-)

    ad: Pokud by šlo jenom o heslo, tak místo těch podmínek na rodný číslo, by se dala pouze podmínka if ( heslo == “franta” ) a je to, to si myslim, že by si každý dokázal udělat podle sebe, přece jenom, určitě do kódu nešmátrá žádný laik.

Aktuálně je na stránce zobrazeno 5 příspěvků - 1. až 5. (z celkem 5)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.

WordPress – novinky, návody a zajímavosti