查看database description for that table.
Field Type
option_name varchar(64)
option_value longtext
键最多64个字符。值为longtext,应该超出您的需要。
要让缓存工作,您需要密钥的唯一值,但它不必可读。我的建议是把GET
一串它应该是唯一的,并且不能超过64个字符。
而不是这样:$name= base64_encode(serialize($_GET));
尝试以下操作:$name= wp_hash($_GET);
使用示例进行概念验证GET
上面的字符串:
$str = \'?search_type=product&relation=or&date=all&s=tagsearch&merchcat=cotton&brand=brandx&color=blue&etc=morestuff\';
var_dump(base64_encode(serialize($str)));
// vs
var_dump(wp_hash($str));
根据以下讨论进行编辑(感谢@G-M):
中参数的顺序GET
字符串可能会影响哈希值。安全的做法是规范化数组。以下操作应做到这一点:
$str = $_GET;
ksort($str);
$str = add_query_arg($str,\'\');
$str = wp_hash($str);
var_dump($str);
所有参数都被保留,即使是空的参数,这似乎是OP想要的,尽管我个人认为运行数组
array_filter
删除空值实际上可以提供更好的缓存。
$str = $_GET;
$str = array_filter($str);
ksort($str);
$str = add_query_arg($str,\'\');
var_dump(wp_hash($str));
未尝试数据验证/清理。
当您将该键保存到数据库时,我还建议您预先添加一个字符串以使其可识别,例如$str = \'my_plugin_slug\'.$str
保存之前。