{"id":231123,"date":"2022-12-26T11:58:00","date_gmt":"2022-12-26T08:58:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231123"},"modified":"2022-12-26T17:14:59","modified_gmt":"2022-12-26T14:14:59","slug":"toeoetamine-wordpressi-ueleminekute-ja-autentimisega","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/toeoetamine-wordpressi-ueleminekute-ja-autentimisega\/","title":{"rendered":"T\u00f6\u00f6tamine WordPressi \u00fcleminekute ja autentimisega"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/et\/kas-kasutate-kuepsiste-asemel-wordpressi-siirdeid\/\" title=\"Eelmise postituse\">Eelmise postituse<\/a> sisuga j\u00e4tkates on oluline kaaluda ka transientide ja autentimise kasutamist.<\/p>\n<p>Kuna on stsenaariume, kus kasutajad on saidil autentitud (m\u00f5elge saidi ainult liikmetele m\u00f5eldud alale) ja v\u00f5i ei ole saidil autentitud (nt saidi k\u00fclastajad).<\/p>\n<p>Seda t\u00fc\u00fcpi olukordi esineb nii ajaveebides kui ka muudel saitidel ja veebirakendustes k\u00f5ikjal.<\/p>\n<h2>WordPressi siirded ja autentimine<\/h2>\n<p>Kuidas saaksime nende kasutajate jaoks kasutajateavet salvestada? \u00d5nneks pakub PHP meile m\u00f5ningaid funktsioone, mis annavad meile v\u00f5imaluse seda teha ilma WordPressi API-sid vajamata.<\/p>\n<p>L\u00f5ppkokkuv\u00f5ttes on eesm\u00e4rk, milleni p\u00fc\u00fcame, ajutiste andmete j\u00e4rjestamine, kasutades v\u00f5tit, mis kasutab autentitud v\u00f5i autentimata kasutaja ID-d.<\/p>\n<p>Ja siin on, kuidas neid k\u00f5iki teha.<\/p>\n<h3>WordPressi API<\/h3>\n<p>Eeldades, et kasutaja on WordPressiga autentitud, saame kasutada funktsiooni <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_current_user_id\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_current_user_id<\/a>. See on ka lihtne.<\/p>\n<p>Koodi viitest:<\/p>\n<blockquote>\n<p>Hankige praeguse kasutaja ID<\/p>\n<\/blockquote>\n<p>Seej\u00e4rel saame kasutada seda funktsiooni konstruktoris, et m\u00e4\u00e4rata atribuut, mis salvestab kasutaja ID. Ja ma n\u00e4itan kohe selle koodi, aga kuidas on siis, kui kasutaja pole sisse logitud?<\/p>\n<h3>PHP API<\/h3>\n<p>Autentimata kasutajate teabe salvestamisel vajame siiski viisi nende tuvastamiseks. Seda saab teha mitmel viisil, kasutades siirdev\u00f5tmele lisamiseks erinevaid PHP-s s\u00e4ilitatavaid v\u00e4\u00e4rtusi.<\/p>\n<p>Pidage meeles, et v\u00f5ti peab olema ainulaadne ja seni, kuni see on saidi kasutaja jaoks ainulaadne, peaks see olema hea.<\/p>\n<p>PHP pakub kahte funktsiooni:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.php.net\/manual\/en\/function.get-current-user.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">hanki_praegune_kasutaja<\/a><\/li>\n<li><a href=\"https:\/\/www.php.net\/manual\/en\/function.posix-getuid.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">posix_getuid<\/a><\/li>\n<\/ul>\n<p>Mis puudutab teist, siis see ei t\u00f6\u00f6ta IIS-i ega Windowsi-p\u00f5histe serveritega. Kuid mainin seda siin kui teist alternatiivi *nixi-p\u00f5histe hostide jaoks (kuna nii palju on, eriti WordPressi puhul).<\/p>\n<p>Funktsioon <strong>get_current_user<\/strong> on piisavalt selge:<\/p>\n<blockquote>\n<p>Hangi praeguse PHP skripti omaniku nime<\/p>\n<\/blockquote>\n<p>Juhendis on ka midagi muud, mida t\u00e4hele panna. See \u00fctleb selges\u00f5naliselt, et &quot;[tagastab] praeguse PHP-skripti omaniku nime.&quot; Ja ma k\u00e4sitlen seda enne postituse l\u00f5ppu.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-159934-61e7008cd3f22.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-159934-61e7008cd3f22.png\" alt=\"T\u00f6\u00f6tamine WordPressi \u00fcleminekute ja autentimisega\"><\/a><\/p>\n<p>Lisaks ei pruugi <strong>get_current_user<\/strong> olla see, mida otsite, olenevalt sellest, kuidas server on konfigureeritud ja milline kasutaja on serveris t\u00f6\u00f6tava PHP-skripti &quot;omanik&quot;.<\/p>\n<p>Kuid selle n\u00e4ite puhul piisab, kui \u00f6elda, et see t\u00f6\u00f6tab. Ja siin on p\u00f5hjus: P\u00fc\u00fcan n\u00e4idata, kuidas kasutada saidil autentimata k\u00fclastaja jaoks ainulaadseid v\u00e4\u00e4rtusi, et luua v\u00f5ti, millest saame teavet hankida.<\/p>\n<p>V\u00f5tme genereerimine on tegeliku koodi suhtes teisej\u00e4rguline.<\/p>\n<h3>\u00dchendades selle k\u00f5ik koos<\/h3>\n<p>Kuidas n\u00e4eb kood v\u00e4lja, kui tahame \u00fclaltoodud funktsioone kasutada? See on siis, kui s\u00e4ilitame atribuuti, mis hoiab kasutaja ID-d ja teeb seda nii autentitud kui ka autentimata kasutajate jaoks?<\/p>\n<p><a href=\"https:\/\/gist.github.com\/tommcfarlin\/f6f57f45405f609fcd14905c54b30f25#file-01-data-store-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">V\u00f5ib-olla see<\/a> :<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Initializes the User ID properly this is what's going to be appended to incoming\n * keys when saving or checking for values.\n *\n * Use PHP's native get_current_user function then fall back to WP's\n * and use that to help generate the key.\n *\/\npublic function __construct() \n{\n    $this-&gt;user_id = get_current_user();\n    if (get_current_user_id()) {\n        $this-&gt;user_id = get_current_user_id();\n    }\n}<\/code><\/pre>\n<p>Ja see annab teile funktsiooni, mis on vajalik kordumatu kasutaja ID loomiseks nii autentitud kui ka mitteautentinud kasutajatele.<\/p>\n<h3>Aga m\u00f6\u00f6duvad v\u00f5tmed?<\/h3>\n<p>Jah \u2013 osa sellest, mida me arutame, on ka ainulaadsete m\u00f6\u00f6duvate v\u00f5tmete loomine.<\/p>\n<p>Selleks olen leidnud, et on piisavalt lihtne \u00fchendada \u00fclal loodud kasutaja ID ja lisada see v\u00f5tmele, mida kasutatakse transientide serialiseerimisel.<\/p>\n<p><a href=\"https:\/\/gist.github.com\/tommcfarlin\/f6f57f45405f609fcd14905c54b30f25#file-02-get-unique-key-php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">N\u00e4iteks<\/a> :<\/p>\n<pre><code>&lt;?php\n\n\/**\n * Creates a unique key using a combination of the incoming database key and the user's ID.\n *\n * @param string $key The key used to store transient data.\n * @return string     The unique key used to store values associated with the data store.\n *\/\nprivate function getUniqueKey(string $key) \n{\n    return $key .= '-'. $this-&gt;user_id;\n}<\/code><\/pre>\n<p>Seej\u00e4rel saame selle funktsiooni tagastatava v\u00e4\u00e4rtusega kasutada unikaalsete v\u00f5tmete abil andmete ajutisena salvestamiseks.<\/p>\n<h2>Ikka muud v\u00f5imalused<\/h2>\n<p>Nagu mainitud, ei pruugi lihtsalt PHP-sse sisseehitatud funktsioonide kasutamine olla \u00f5ige tee. Kuid see ei t\u00e4henda, et poleks muid v\u00e4\u00e4rtusi, mis pakuvad teile vajalikule ainulaadset v\u00e4\u00e4rtust.<\/p>\n<p>Sellistel juhtudel on oluline kindlaks teha, kuidas soovite oma kasutajat tuvastada, millist operatsioonis\u00fcsteemi ta kasutab ja millisele kasutajakontole rakendus kuulub.<\/p>\n<p>Kui see ei paku piisavalt unikaalset seadistust (ja on v\u00e4ga t\u00f5en\u00e4oline, et teatud tingimustel ei saa seda teha), kehtib p\u00f5him\u00f5te ikkagi \u2013 peate lihtsalt asendama funktsiooni <strong>get_current_user()<\/strong> millekski, mis sobib k\u00f5ige paremini. sina.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Liikmelisusele keskendunud saitidega t\u00f6\u00f6tades on oluline arvestada ka siirdete ja autentimisega.<\/p>\n","protected":false},"author":1,"featured_media":237010,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,749,781,833,894,916,842,802,863],"tags":[1165],"class_list":["post-231123","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-avatud-laehtekoodiga","category-avatud-laehtekoodiga-tarkvara","category-juhend-algajatele","category-kood","category-muud","category-opetused","category-php-4","category-wordpress-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=231123"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/231123\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/237010"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=231123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=231123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=231123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}