Woocommerce数据存储在数据库中的加密格式

问题描述:

我是Wordpress和Woocommerce的新手。望着数据库我来看看几个文本列,其中存储的值看起来是这样的:Woocommerce数据存储在数据库中的加密格式

一:23:S:16: “woofc_last_added”; S:32: “d770c2ff0c2b832aad82b0cbc3f144a6”; S:21: “removed_cart_contents”; s:6:“a:0:{}”; s:10:“wc_notices”; N; s:8:“customer”; s:775:“a:25:}

我已经剥离大部分领域,但它看起来有点像这样。

格式是什么呢?
我怎么能以这种格式解析值?
^ h我可以检索这个文本数据在PHP中的所有值?

的数据是一个序列化保护格式

你可以尝试使用json_decode()unserialize()maybe_unserialize()功能,
但你不会得到任何数据因为它是一个WC_Session_Handler存储PROTECTED对象。

您需要使用WC_Session_HandlerWC_Session可用方法。

1)为了得到当前的顾客WC_Session_Handler对象可以使用:

// Get the current WC_Session_Handler obect 
$session_obj = WC()->session; 

print_r($session_obj); // Raw output 

2)从定义的客户ID

// The defined customer ID 
$customer_id = 5;  
// Get an Instance of the WC_Session_Handler object 
$new_session_obj = new WC_Session_Handler();  
// The defined customer ID 
$session_obj = $new_session_obj->get_session($customer_id); 

3得到WC_Session_Handler对象)访问受保护的数据:

## --- Get the data in an array (values are still serialized) --- ## 

$session_data_array = WC()->session->get_session_data(); 
print_r($session_data_array); // Raw output 


## -------------- Get the cleaned unserialized data ------------- ## 

$session_cart = WC()->session->get('cart'); 
$session_cart_totals = WC()->session->get('cart_totals'); 
$session_applied_coupons = WC()->session->get('applied_coupons'); 
$session_coupon_discount_totals = WC()->session->get('coupon_discount_totals'); 
$session_coupon_discount_tax_totals = WC()->session->get('coupon_discount_tax_totals'); 
$session_removed_cart_contents = WC()->session->get('removed_cart_contents'); 
$session_shipping_for_package_0 = WC()->session->get('shipping_for_package_0'); 
$session_previous_shipping_methods = WC()->session->get('previous_shipping_methods'); 
$session_chosen_shipping_methods = WC()->session->get('chosen_shipping_methods'); 
$session_shipping_method_counts = WC()->session->get('shipping_method_counts'); 
$session_customer = WC()->session->get('customer'); 

// Raw "Cart" output example 
print_r(WC()->session->get('cart')); 
+0

感谢您的回答。我只是想知道数据是如何分析的。数据看起来很压缩,所以我想我可以在一个php应用程序中使用它,在这个应用程序中我有很多字段要存储在数据库中。数据更像是评论,备注等我们的用户。 –

+0

数据未压缩。在Wordpress中,存储在数据库中的所有数组或对象总是被序列化的...在这里,因为它是一个具有合理数据的自定义WooCommerce表,这些数据是序列化但受保护的,所以您将无法从数据库反序列化它。现在,您可以构建自己的函数代码来解析这些数据,并使用WC_Session_Handler类和方法将其保存在自定义表格中... – LoicTheAztec

+0

您对woocommerce更新此字段的频率有任何想法吗?这个字段何时更新?会话结束时还是特定方法执行时? –

它不是JSON格式,它很简单,就是wordpress在表格中以串行格式保存数组。 只要使用PHP的反序列化函数,它会反序列化这个,你将能够解析它在正常的PHP数组格式。您可以查看这里这个函数文档http://php.net/manual/en/function.unserialize.php

它以序列化格式存储。你可以通过使用非序列化函数来获得正常的数组。

unserialize()