WooCommerce 的使用者登入 是在哪個資料夾裡.

  • 該話題包含 7 個回覆,2 人參與,最後由lmn40227 更新於 7 年前
正在檢視 8 個帖子:1-8 (共 8 個帖子)
  • 作者
    帖子
  • lmn40227
    參與者
    • 文章數量: 23
    @lmn40227
    樓主

    我目前的網站不是 woocomerce 製作的, 現在想透過 使用者到 woocomerce 網站上 登入, 來進行資料轉移.

     

    就是: 我會把老客戶的郵箱都導到 woocomerce 的 wp-users 表裡, 然後 password 統一隨便設定, 一旦這些使用者登入, 只要被判斷是老客戶, 並且密碼有 統一設定的那個, 那麼就會更新它的密碼.

    從而實現賬戶轉移的功能.

     

    我在觀察 wordpress 的原始碼時, 遇到困難.

    function authenticate 此函式 根本不進行 密碼驗證.

     

    哪個大神給個提醒.

     

    詩語
    管理員
    • 文章數量: 5,925
    @feibisi

    路徑是這個:/wp-content/plugins/woocommerce/templates/myaccount

    檔案是這個:

    wp-users 是 WordPress 的使用者表,使用者表和 woocommerce 通用,你要想這麼操作我覺得太麻煩了,還不如直接先全部匯入使用者,然後再透過 WordPress 傳送郵件,強制修改密碼來的簡單的多,一般我們如果是要做大批次的使用者轉移的話就是這麼操作的。

    lmn40227
    參與者
    • 文章數量: 23
    @lmn40227
    樓主

    我開始問的那個有點含糊, 所以我附圖了這次, 其實我是想知道

    pluggable.php 裡 運用的  呼叫 authenticate 的函式, 如何進去密碼驗證的, 但是  上面找到所有關於 function authenticate 的函式都沒有進行密碼判斷, 我非常的不解.

     

    詩語,  我以前 另外一個網站也是透過你的這種方法弄的, 但是還是流失了很多客戶, 所以這次 我想換種方式就是上面提到的方法.

     

    這次我反著走, 找到了 wordpress 專門用於判斷密碼的函式 ,  function wp_check_password($password, $hash, $user_id = ”)

    如果我有突破, 也會馬上更新在這裡,   謝謝你的幫助.

     

    lmn40227
    參與者
    • 文章數量: 23
    @lmn40227
    樓主

     

    最終效果就是 第一次登入 雖然錯誤, 但改變了資料庫的密碼, 但第二次用同樣的密碼 就能登入.

    麻煩的地方就是需要把資料庫裡的密碼 統一改成 “anythinguwant” . 用 sql 的寫一條語句的話也算是比較快了

     

    
    function wp_check_password($password, $hash, $user_id = 」) {
    global $wp_hasher;
    
    // If the hash is still md5…
    if ( strlen($hash) <= 32 & $hash != 「anythinguwant」) {
    $check = hash_equals( $hash, md5( $password ) );
    if ( $check && $user_id ) {
    // Rehash using new hash.
    wp_set_password($password, $user_id);
    $hash = wp_hash_password($password);
    }
    
    /**
    * Filters whether the plaintext password matches the encrypted password.
    *
    * @since 2.5.0
    *
    * @param bool $check Whether the passwords match.
    * @param string $password The plaintext password.
    * @param string $hash The hashed password.
    * @param string|int $user_id User ID. Can be empty.
    */
    return apply_filters( 『check_password』, $check, $password, $hash, $user_id );
    }else if(strlen($hash) <= 32 & $hash == 「anythinguwant」){
    
    if ( $user_id ) {
    // Rehash using new hash.
    wp_set_password($password, $user_id);
    $hash = wp_hash_password($password);
    }
    
    return apply_filters( 『check_password』, $check, $password, $hash, $user_id );
    
    }
    詩語
    管理員
    • 文章數量: 5,925
    @feibisi

    其實我換個角度來說下啊,如果是直接這樣的話,也還會導致一個問題,就是使用者不經意輸入錯誤了密碼那麼儲存了,這次是登入了那下次就登入不了。

    一般如果是大型站點要做使用者轉移的話,建議的方式是透過 SSO 單點登入的方式來實現使用者的資料同步和過度。

    比如拿我們自己的站點來舉例,feibisi.com 是舊站已經很多使用者資料了,但我們需要將使用者匯入到 weixiaoduo.com 這個新網站來,

    那麼不應該是說進行資料庫的匯入匯出以及合併,而是要讓使用者有選擇性的去從舊的 feibisi.com 登入到 weixiaoduo.com ,這樣的話,就能夠實現讓使用者過渡到新站和實現信任度的轉移。簡單講就是給舊站和新站都新增個 【一鍵登入按鈕】 。

    WordPress 的 SSO 單點登入方案也非常多,這個只是我們實際上操作過的方式,算是給個建議。

    lmn40227
    參與者
    • 文章數量: 23
    @lmn40227
    樓主

    使用者不經意輸入錯誤了密碼那麼儲存了,這次是登入了那下次就登入不了.

    我也考慮過 那個問題, 至少第二次他可以用忘記密碼..     其實我上面更大的問題在於 “ 第一次是登入失敗,   第一次和第二次輸入不一樣, 第一次登入 都進入不了, 才是我最不想見到的.     不過目前我還未知道 如何修改能使第一次登入 成功, 而不是第二次.

     

    SSO 單點登入的方式, 我會好好研究下.   主要問題是原網站由 netsuite 做出來的.  密碼的資料是提取不出來的.

     

    因為我的目標是換系統,  netsuite 改成 woocomerce.     網址最終都將還是 同一個.

     

    詩語
    管理員
    • 文章數量: 5,925
    @feibisi
    lmn40227
    參與者
    • 文章數量: 23
    @lmn40227
    樓主

    嗯 ..   我聯絡過 其中幾個.. 當我問他們 怎麼使用者解決資料同步的時候.

    他們的方案 就是我上面要做的那樣..   所以我才走了這條路線.

    非常感管理員..

正在檢視 8 個帖子:1-8 (共 8 個帖子)
  • 哎呀,回覆話題必需登入。

話題資訊

  • 當前位於:WooCommerce
  • 7 條回覆
  • 2 個參與人
  • 最後回覆:<a href="https://bbs.weixiaoduo.com/users/lmn40227/" title=" 檢視 lmn40227 的個人資料" class="bbp-author-link"><span class="bbp-author-name">lmn40227</span></a>
  • 上次活動:<a href="https://bbs.weixiaoduo.com/topic/25339/#post-25406" title=" 回覆至:WooCommerce 的使用者登入 是在哪個資料夾裡.">7 年前</a>