我刚刚升级到WordPress 3.5.1和新的object-cache.php
版本2.0.2,用户可以切换到一些新的博客缓存功能。
以前版本的object cache存在这个问题,但我在注册和激活博客时删除了用户密钥,从而解决了这个问题。这会从memcache中清除缓存的密码,因为某些原因,这是错误的。
我尝试重新实现此功能,但它不起作用。我已将此代码放入我的注册页:
wp_cache_key_delete("4e76434eea3c9d9cf9cb10bbf3f4a74b92:users:1");
wp_cache_delete(\'users\');
哈希是我的主要食盐
在激活页面上,我再次使用这个
wp_cache_key_delete("4e76434eea3c9d9cf9cb10bbf3f4a74b92:users:".$user_id);
wp_cache_delete(\'users\');
这应该清除缓存的用户及其密码,以便根据MySQL数据库中的密码进行身份验证。
我将这两个函数添加到object-cache.php
要处理他们的密钥删除
#tonny的黑客攻击
function wp_cache_key_delete($key) {
global $wp_object_cache;
return $wp_object_cache->key_delete($key);
}
还有这个
function key_delete($key) {
$mc =& $this->get_mc($group);
$result = $mc->delete($key);
@ ++$this->stats[\'delete\'];
$this->group_ops[$group][] = "delete $id";
if ( false !== $result )
unset($this->cache[$key]);
return $result;
}
你们有没有遇到过类似的问题,用户在注册博客时无法登录?
最合适的回答,由SO网友:Tonny Jørgensen 整理而成
现已解决此问题激活脚本中的解决方案如下:
$blog_real_id = $wpdb->get_var("select blog_id from wp_bp_user_blogs where user_id = ".$user_id." limit 1");
wp_cache_key_delete("1:users:".$user_id);
wp_cache_key_delete($blog_real_id.":users:".$user_id);
这将清除博客id 1和已注册博客ud的缓存用户信息。出于某种原因,memcache中的密码哈希是错误的。在登录之前清除它将在memcache中验证aginst mysql insterad的缓存密码。