Encryption format for Woocommerce data stored in d

2019-02-16 00:41发布

I am new to Wordpress and Woocommerce. Looking at the database I came to see few text columns where the stored value looks something like this:

a: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:}

I have stripped most of the fields, but it looks somewhat like this.

What format is this?
How can I parse values in this format?
How can I retrieve all the values from this text data in php?

3条回答
别忘想泡老子
2楼-- · 2019-02-16 01:05

The data is in a serialized protected format

You could try to use json_decode(), unserialize() or maybe_unserialize() functions,
But you will not get any data as it's a WC_Session_Handler stored PROTECTED object.

You will need to use instead WC_Session_Handler or WC_Session available methods.

1) To get the current customer WC_Session_Handler object you can use:

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

print_r($session_obj); // Raw output

2) To get the WC_Session_Handler object from a defined customer 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) Accessing the protected data:

## --- 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'));
查看更多
女痞
3楼-- · 2019-02-16 01:05

It stores in serialized format. You can get normal array by using unserialized function.

unserialize()

查看更多
看我几分像从前
4楼-- · 2019-02-16 01:09

Its not a JSON format it is simple a way wordpress save arrays in serialized format in its tables. Just use php unserialized function, it will unserialize this and you will be able to parse it in normal php array format. You can view this function documentation here http://php.net/manual/en/function.unserialize.php

查看更多
登录 后发表回答