标签: 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://wordpress.org/plugins/easyevent/
单点登录的方案:
https://stackoverflow.com/questions/26289660/netsuite-single-sign-on-with-wordpress-website
有点晚了,你先看看,抽空再熟悉下这款系统。
嗯 .. 我联系过 其中几个.. 当我问他们 怎么用户解决数据同步的时候.
他们的方案 就是我上面要做的那样.. 所以我才走了这条路线.
非常感管理员..
-
作者帖子
- 哎呀,回复话题必需登录。