{"id":25435,"date":"2021-06-07T11:42:00","date_gmt":"2021-06-07T08:42:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25435"},"modified":"2021-10-17T20:24:54","modified_gmt":"2021-10-17T17:24:54","slug":"kirjaudu-sisaan-puhelinnumerolla-wordpressissa","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/kirjaudu-sisaan-puhelinnumerolla-wordpressissa\/","title":{"rendered":"Kirjaudu sis\u00e4\u00e4n puhelinnumerolla WordPressiss\u00e4"},"content":{"rendered":"<p>Olet saattanut sijoittaa etup\u00e4\u00e4n kirjautumislomakkeen WordPress-verkkosivustoosi. Ja haluat antaa k\u00e4ytt\u00e4jien kirjautua sis\u00e4\u00e4n puhelinnumerollaan tai k\u00e4ytt\u00e4j\u00e4nimell\u00e4 \/ s\u00e4hk\u00f6postilla. Pohjimmiltaan annat k\u00e4ytt\u00e4jien antaa mink\u00e4 tahansa yhden merkinn\u00e4n K\u00e4ytt\u00e4j\u00e4tunnus \/ S\u00e4hk\u00f6posti \/ Puhelin ja salasana.<\/p>\n<p>Huomaa, ett\u00e4 t\u00e4m\u00e4 opetusohjelma ei aio n\u00e4ytt\u00e4\u00e4 kirjautumista OTP: ll\u00e4. Sen sijaan aion lis\u00e4t\u00e4 viel\u00e4 yhden vaihtoehdon puhelinnumerosta k\u00e4ytt\u00e4j\u00e4nimen ja s\u00e4hk\u00f6postin kanssa. Joten k\u00e4ytt\u00e4j\u00e4t voivat valita mink\u00e4 tahansa heille sopivan vaihtoehdon. Olet todenn\u00e4k\u00f6isesti n\u00e4hnyt t\u00e4m\u00e4n vaihtoehdon Amazonissa. Amazon antaa meille mahdollisuuden kirjautua sis\u00e4\u00e4n joko s\u00e4hk\u00f6posti- tai matkapuhelinnumerolla.<\/p>\n<p>Aion luoda yksinkertaisen kirjautumislomakkeen. L\u00e4hetett\u00e4v\u00e4\u00e4n lomakkeeseen kirjoitetaan koodi, joka tarkistaa kaikkien kolmen vaihtoehdon (k\u00e4ytt\u00e4j\u00e4tunnus \/ s\u00e4hk\u00f6postiosoite \/ puhelin) tunnistetiedot taustalla ja salasanan.<\/p>\n<p>Jos haluat lis\u00e4t\u00e4 puhelinnumeron kirjautumislomakkeeseen, sinun on lis\u00e4tt\u00e4v\u00e4 k\u00e4ytt\u00e4j\u00e4n puhelinnumero wp_usermeta-taulukkoon. Voit tehd\u00e4 sen k\u00e4ytt\u00e4j\u00e4n rekister\u00f6innin yhteydess\u00e4. Alla olevaa koodia voidaan k\u00e4ytt\u00e4\u00e4 k\u00e4ytt\u00e4j\u00e4n puhelinnumeron lis\u00e4\u00e4miseen.<\/p>\n<pre><code>&lt;?php\n$user_id = 1;\n$phone_number = 9999999999;\nadd_user_meta( $user_id, 'user_phone', $phone_number);<\/code><\/pre>\n<p>Kun sinulla on meta-avain &#8217;user_phone&#8217; yhdess\u00e4 sen arvon kanssa tietokannassa, voit lis\u00e4t\u00e4 sis\u00e4\u00e4nkirjautumisen puhelinnumerovaihtoehdolla kirjautumislomakkeessa. Lis\u00e4t\u00e4\u00e4n seuraava kirjautumislomake kirjautumissivullesi.<\/p>\n<pre><code>&lt;?php\n$return = log_the_user_in();\nif( is_wp_error( $return)) {\n\u00a0\u00a0\u00a0\u00a0echo $return-&gt;get_error_message();\n}\n?&gt;\n&lt;form method=\"post\"&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"text\" name=\"user_login\" placeholder=\"Username, email or mobile\" required \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;p&gt;&lt;input type=\"password\" name=\"user_password\" placeholder=\"Password\" required \/&gt;&lt;\/p&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"hidden\" name=\"login_nonce\" value=\"&lt;?php echo wp_create_nonce('login_nonce'); ?&gt;\" \/&gt;\n\u00a0\u00a0\u00a0\u00a0&lt;input type=\"submit\" name=\"login_the_user\" value=\"Submit\" \/&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<p>Yll\u00e4 olevassa koodissa tarkistamme virheet ja tulostamme ne. Kirjoitamme koodin virheiden k\u00e4sittelemiseksi seuraavissa vaiheissa. Lis\u00e4ksi lis\u00e4ttiin nonce muodossa, joka on suositeltu tapa k\u00e4sitell\u00e4 lomakkeita WordPressiss\u00e4.<\/p>\n<h3>Kirjaudu sis\u00e4\u00e4n puhelinnumerolla WordPressiss\u00e4<\/h3>\n<p>Kun k\u00e4ytt\u00e4j\u00e4 t\u00e4ytt\u00e4\u00e4 tunnistetiedot ja osuu l\u00e4hetyspainikkeeseen, otamme tunnistetiedot ja tarkistamme ne tietokantaan. Jos kirjautumistiedot ovat oikein, kirjaamme k\u00e4ytt\u00e4j\u00e4n sis\u00e4\u00e4n ja ohjaamme sen kotisivulle. Jos virheelliset tunnistetiedot, virheet kirjataan <code>WP_Error<\/code>luokan kanssa.<\/p>\n<p>Joten kirjoita alla oleva koodi <code>functions.php<\/code>tiedostoon, joka k\u00e4sittelee kirjautumislomaketta.<\/p>\n<pre><code>&lt;?php\nadd_action( 'init', 'log_the_user_in' );\nfunction log_the_user_in() {\n\u00a0\u00a0\u00a0\u00a0if (isset( $_POST['login_the_user']) &amp;&amp; wp_verify_nonce( $_REQUEST['login_nonce'], 'login_nonce')) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (! empty( $_POST['user_login']) &amp;&amp;! empty( $_POST['user_password'])) {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (is_email( $_POST['user_login'])) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ check user by email\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user = get_user_by( 'email', $_POST['user_login'] );\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} elseif (is_numeric( $_POST['user_login'])) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ check user by phone number\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0global $wpdb;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$tbl_usermeta = $wpdb-&gt;prefix.'usermeta';\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user_id = $wpdb-&gt;get_var( $wpdb-&gt;prepare( \"SELECT user_id FROM $tbl_usermeta WHERE meta_key=%s AND meta_value=%s\", 'user_phone', $_POST['user_login']) );\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user = get_user_by( 'ID', $user_id );\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ check user by username\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user = get_user_by( 'login', $_POST['user_login'] );\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (! $user) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return new WP_Error('wrong_credentials', 'Invalid credentials.');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ check the user's login with their password.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (! wp_check_password( $_POST['user_password'], $user-&gt;user_pass, $user-&gt;ID)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return new WP_Error('wrong_credentials', 'Invalid credentials.');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0wp_clear_auth_cookie();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0wp_set_current_user($user-&gt;ID);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0wp_set_auth_cookie($user-&gt;ID);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0wp_redirect(get_bloginfo('url'));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0exit;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return new WP_Error('empty', 'Both fields are required.');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>T\u00e4\u00e4ll\u00e4 vahvistimme ensin ei-suojautumisen lomakkeellemme tietyntyyppisilt\u00e4 v\u00e4\u00e4rink\u00e4yt\u00f6ksilt\u00e4, \u200b\u200bhaitallisilta koodeilta ja CSRF-hy\u00f6kk\u00e4yksilt\u00e4. Seuraavaksi se tarkistaa menetelm\u00e4n <code>is_email()<\/code>tai <code>is_numeric()<\/code>menetelm\u00e4n perusteella, onko s\u00e4hk\u00f6postiosoite ja puhelinnumero voimassa. Jos sy\u00f6tetty arvo ei ole s\u00e4hk\u00f6posti tai puhelin, k\u00e4yt\u00e4mme k\u00e4ytt\u00e4j\u00e4nime\u00e4. Jos k\u00e4ytt\u00e4j\u00e4tiedot t\u00e4yttyv\u00e4t, k\u00e4ytt\u00e4j\u00e4t kirjautuvat j\u00e4rjestelm\u00e4\u00e4n ja ohjaavat kotisivulle. Sinun tapauksessasi voit ohjata k\u00e4ytt\u00e4j\u00e4t toiselle sivulle vuosi mukaan.<\/p>\n<p>Toivon, ett\u00e4 ymm\u00e4rr\u00e4t kuinka integroida sis\u00e4\u00e4nkirjautuminen puhelinnumeroon WordPressiss\u00e4. Jaa ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/lataa-dynaaminen-sisalto-bootstrap-modaliin-wordpressissa\/\" title=\"Lataa dynaaminen sis\u00e4lt\u00f6 Bootstrap Modaliin WordPressiss\u00e4\" >Lataa dynaaminen sis\u00e4lt\u00f6 Bootstrap Modaliin WordPressiss\u00e4<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-luoda-mukautettu-elementti-widget\/\" title=\"Kuinka luoda mukautettu elementti-widget\" >Kuinka luoda mukautettu elementti-widget<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-lisata-mukautettuja-paatepisteita-wordpress-sovellusliittymaan\/\" title=\"Kuinka lis\u00e4t\u00e4 mukautettuja p\u00e4\u00e4tepisteit\u00e4 WordPress-sovellusliittym\u00e4\u00e4n\" >Kuinka lis\u00e4t\u00e4 mukautettuja p\u00e4\u00e4tepisteit\u00e4 WordPress-sovellusliittym\u00e4\u00e4n<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>T\u00e4ss\u00e4 artikkelissa tutkitaan, miten sis\u00e4\u00e4nkirjautuminen integroidaan puhelinnumeroon WordPressiss\u00e4. Se on joskus k\u00e4tev\u00e4 vaihtoehto k\u00e4ytt\u00e4jillesi. Amazon<\/p>\n","protected":false},"author":1,"featured_media":20317,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[610],"tags":[843],"class_list":["post-25435","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized-6","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/25435","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/comments?post=25435"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/25435\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/20317"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=25435"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=25435"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=25435"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}