2017-10-29 160 views
1

我是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中的所有值?

回答

2

的數據是一個序列化保護格式

你可以嘗試使用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更新此字段的頻率有任何想法嗎?這個字段何時更新?會話結束時還是特定方法執行時? –

0

它不是JSON格式,它很簡單,就是wordpress在表格中以串行格式保存數組。 只要使用PHP的反序列化函數,它會反序列化這個,你將能夠解析它在正常的PHP數組格式。您可以查看這裏這個函數文檔http://php.net/manual/en/function.unserialize.php

0

它以序列化格式存儲。你可以通過使用非序列化函數來獲得正常的數組。

unserialize()

相關問題