标签: WooCommerce, 用户登录
-
作者帖子
-
我目前的网站不是 woocomerce 制作的, 现在想通过 用户到 woocomerce 网站上 登录, 来进行数据转移.
就是: 我会把老客户的邮箱都导到 woocomerce 的 wp-users 表里, 然后 password 统一随便设置, 一旦这些用户登录, 只要被判断是老客户, 并且密码有 统一设置的那个, 那么就会更新它的密码.
从而实现账户转移的功能.
我在观察 wordpress 的源代码时, 遇到困难.
function authenticate 此函数 根本不进行 密码验证.
哪个大神给个提醒.
路径是这个:
/wp-content/plugins/woocommerce/templates/myaccount
文件是这个:
wp-users 是 WordPress 的用户表,用户表和 woocommerce 通用,你要想这么操作我觉得太麻烦了,还不如直接先全部导入用户,然后再通过 WordPress 发送邮件,强制修改密码来的简单的多,一般我们如果是要做大批量的用户转移的话就是这么操作的。
我开始问的那个有点含糊, 所以我附图了这次, 其实我是想知道
pluggable.php 里 运用的 调用 authenticate 的函数, 如何进去密码验证的, 但是 上面找到所有关于 function authenticate 的函数都没有进行密码判断, 我非常的不解.
诗语, 我以前 另外一个网站也是通过你的这种方法弄的, 但是还是流失了很多客户, 所以这次 我想换种方式就是上面提到的方法.
这次我反着走, 找到了 wordpress 专门用于判断密码的函数 , function wp_check_password($password, $hash, $user_id = ”)
如果我有突破, 也会马上更新在这里, 谢谢你的帮助.
最终效果就是 第一次登录 虽然错误, 但改变了数据库的密码, 但第二次用同样的密码 就能登录.
麻烦的地方就是需要把数据库里的密码 统一改成 “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 ); }
其实我换个角度来说下啊,如果是直接这样的话,也还会导致一个问题,就是用户不经意输入错误了密码那么保存了,这次是登录了那下次就登录不了。
一般如果是大型站点要做用户转移的话,建议的方式是通过 SSO 单点登录的方式来实现用户的数据同步和过度。
比如拿我们自己的站点来举例,feibisi.com 是旧站已经很多用户数据了,但我们需要将用户导入到 weixiaoduo.com 这个新网站来,
那么不应该是说进行数据库的导入导出以及合并,而是要让用户有选择性的去从旧的 feibisi.com 登录到 weixiaoduo.com ,这样的话,就能够实现让用户过渡到新站和实现信任度的转移。简单讲就是给旧站和新站都添加个 【一键登录按钮】 。
WordPress 的 SSO 单点登录方案也非常多,这个只是我们实际上操作过的方式,算是给个建议。
用户不经意输入错误了密码那么保存了,这次是登录了那下次就登录不了.
我也考虑过 那个问题, 至少第二次他可以用忘记密码.. 其实我上面更大的问题在于 “ 第一次是登录失败, 第一次和第二次输入不一样, 第一次登录 都进入不了, 才是我最不想见到的. 不过目前我还未知道 如何修改能使第一次登录 成功, 而不是第二次.
SSO 单点登录的方式, 我会好好研究下. 主要问题是原网站由 netsuite 做出来的. 密码的数据是提取不出来的.
因为我的目标是换系统, netsuite 改成 woocomerce. 网址最终都将还是 同一个.
第一次听说这个系统,我找了下,确实是有集成方案的,你看下
https://in8sync.com/netsuite-wordpress-woocommerce-plugins/
https://www.appypie.com/connect/integration/wordpress/netsuite/
https://wordpress.org/support/topic/wp-ecommerce-integration-with-netsuite/
https://wenpai.org/plugins/easyevent/
单点登录的方案:
https://stackoverflow.com/questions/26289660/netsuite-single-sign-on-with-wordpress-website
有点晚了,你先看看,抽空再熟悉下这款系统。
嗯 .. 我联系过 其中几个.. 当我问他们 怎么用户解决数据同步的时候.
他们的方案 就是我上面要做的那样.. 所以我才走了这条路线.
非常感管理员..
-
作者帖子
- 哎呀,回复话题必需登录。