用户元研究是否区分大小写

时间:2014-07-24 作者:user54952

我正在使用Wordpress get\\u users()函数搜索具有特定meta\\u键值的用户。

$wordpress_user = get_users( array(\'meta_key\' => \'unique_id\', 
                                   \'meta_value\' => \'unique_id_value\') );
根据前面的结果,我正在创建一个新的wordpress用户,或者如果该用户已经存在,我只需登录该用户。

“meta\\u密钥”大约有10个字符长,包含字母和数字,我正在从外部来源检索它:为了更安全的行为,我想知道get\\u users函数是否会使用区分大小写的研究。(如果没有,我将来有可能检索到2个类似的meta\\u键,大小写不同……)

此外,我注意到所有wordpress表,包括wp\\u users\\u meta都有“\\u ci”,这也是我对当前代码感到不安全的另一个原因。

如果你能给我提供一些有关这方面的信息,请提前感谢你!

2 个回复
最合适的回答,由SO网友:user54952 整理而成

找到的解决方案:对meta\\u键/meta\\u值对进行区分大小写的搜索:使用$wpdb对象的get\\u results()方法,使用二进制关键字对usermeta表进行硬编码mysql查询:

global $wpdb;
$sql = $wpdb->prepare( "SELECT user_id FROM {$wpdb->prefix}usermeta 
                        WHERE meta_key = \'unique_id\'    
                        AND BINARY meta_value = \'unique_id_value\'");

$wordpress_user_query = $wpdb->get_results( $sql);

SO网友:Otto

编辑:默认情况下,meta\\u键不区分大小写,因为相关表的默认排序规则是“utf8\\u general\\u ci”,它使用不区分大小写的排序进行文本比较。

如果更改数据库中行的排序规则,则可以更改排序顺序,从而更改排序顺序是否区分大小写。您还可以使用wp config中的DB\\u COLLATE定义。php文件,指定utf8_general_ci之外的默认排序规则,用于创建初始数据库。

结束

相关推荐

MANAGE_USERS_CUSTOM_COLUMN筛选器触发的函数不起作用

我正在尝试添加一个自定义列un users。php,但它保持为空。我已经成功地在用户管理页面中添加了一列,在我的主题函数中使用了此代码。php文件:function add_user_test_column( $columns ) { $columns[\'test1\'] = \'Test\'; return $columns; } add_filter( \'manage_users_columns\', \'add_user_test_column\