2010-11-10 12 views
16

मेरे पास कोड है जो कुछ हद तक सर्वर पर काम करता है, लेकिन अन्य नहीं जो क्रमबद्ध डेटा के साथ आ रहे हैं। मैं इस तरह एक पृष्ठ कहते हैं:ऑफ़सेट पर PHP अनसुलझा त्रुटि, कुछ सर्वरों पर काम करता है, अन्य नहीं

string(447) "a:12:{s:13:\"selectionType\";s:8:\"facility\";s:8:\"dateType\";s:5:\"daily\";s:10:\"dateOption\";s:9:\"drilldown\";s:6:\"metric\";s:13:\"bookingAmount\";s:9:\"companyFK\";s:2:\"11\";s:10:\"facilityFK\";s:0:\"\";s:7:\"classFK\";s:0:\"\";s:15:\"customDateStart\";s:4:\"null\";s:7:\"newDate\";s:10:\"2010-11-01\";s:10:\"metricName\";s:10:\"Bookings $\";s:16:\"currentDateRange\";s:10:\"11/01/2010\";s:23:\"currentMetricNavigation\";s:8:\"DELDELTE\";}" 

कि संसाधित हो जाता है जब मैं मिलती है:

protected function getRequestVariables(){ 
     if(isset($_REQUEST['params'])){ 
      var_dump($_REQUEST['params']); 
      echo 'length:'.strlen($_REQUEST['params']); 
      $vars = unserialize($_REQUEST['params']); 
      var_dump($vars); 
     } else { 
      $vars = $_REQUEST; 
      // unset saved drilldown options 
      $this->ci->session->svar_set('postVars', null); 
     } 

यह एक var_dump उत्पादन होता है:

http://domain/index.php/sales/Drilldowns?params=a:12:{s:13:"selectionType";s:8:"facility";s:8:"dateType";s:5:"daily";s:10:"dateOption";s:9:"drilldown";s:6:"metric";s:13:"bookingAmount";s:9:"companyFK";s:2:"11";s:10:"facilityFK";s:0:"";s:7:"classFK";s:0:"";s:15:"customDateStart";s:4:"null";s:7:"newDate";s:10:"2010-11-01";s:10:"metricName";s:10:"Bookings%20$";s:16:"currentDateRange";s:10:"11/01/2010";s:23:"currentMetricNavigation";s:8:"DELDELTE";}&getExcel=0 

इस कोड मैं का उपयोग कर रहा है निम्नलिखित त्रुटि:

A PHP Error was encountered
Severity: Notice Message: unserialize() [function.unserialize]: Error at offset 6 of 447 bytes
Filename: plugins/Drilldowns.php
Line Number: 93

मैं इसे 5.2.13 पर कोशिश कर रहा हूं - कुछ लिनक्स पर काम करता है, कुछ ओएस एक्स, दूसरों को नहीं। Php.ini, charset (मुझे लगता है) की जांच की है - मैं इसे मेरे जीवन के लिए नहीं समझ सकता। मैंने

string(18) "a:1:{s:3:\"sam\";}" length:18 

और यह अभी भी त्रुटियों के रूप में सरल की कोशिश की है। क्यों कोई सुराग?

+0

क्या आप सटीक unserialize कोड का उपयोग कर रहे हैं? –

+0

हमें कोड की आवश्यकता है। यह शायद कुछ प्लेटफ़ॉर्म या संस्करण विशिष्ट है यदि यह कुछ सर्वरों पर काम करता है। –

+0

यह 5.2 लिनक्स (सेंटोस) पर काम करता है लेकिन 5.3 नहीं - कुछ मैक पर विफल रहता है लेकिन अन्य नहीं –

उत्तर

21

यह उद्धरण के सामने बैकस्लैश है: \"

जब आप उन्हें हटाने, यह काम करता है।

var_dump(unserialize('a:12:{s:13:"selectionType";s:8:"facility";s:8:"dateType";s:5:"daily";s:10:"dateOption";s:9:"drilldown";s:6:"metric";s:13:"bookingAmount";s:9:"companyFK";s:2:"11";s:10:"facilityFK";s:0:"";s:7:"classFK";s:0:"";s:15:"customDateStart";s:4:"null";s:7:"newDate";s:10:"2010-11-01";s:10:"metricName";s:10:"Bookings $";s:16:"currentDateRange";s:10:"11/01/2010";s:23:"currentMetricNavigation";s:8:"DELDELTE";}"')); 

यह सर्वर पर काम करता है, शायद magic quotes चालू है।

+0

मैजिक कोट्स सभी सर्वरों पर बंद है - डंप उन्हें वहां रखता है .. मैं एक मिनट में अधिक कोड पोस्ट करूंगा –

+3

@ सैम मुझे मिलता है वही त्रुटियां जो आप स्लेश के साथ करते हैं, और जब मैं उन्हें हटा देता हूं तो वे गायब हो जाते हैं। साथ ही, मुझे पूरा यकीन है कि 'var_dump' उस तरह की स्लैश नहीं जोड़ता है। क्या आप डेटा पर 'स्ट्रिप्सलाश() 'आज़मा सकते हैं? –

+0

आप सही थे - मैंने स्ट्रिप्सलाश() जोड़ा और यह काम किया। मैंने सत्यापित किया है कि magic_quotes बंद है - लेकिन मैं अपने ढांचे में जांच करूंगा कि कुछ इंजेक्शन नहीं दे रहा है। अनेक अनेक धन्यवाद! –

21

मुझे यह समस्या थी और इसे हल करने में मुझे कुछ समय लगा। मुझे बस कोई अच्छा समाधान नहीं मिला, लेकिन मैंने अपनी स्थिति को हल करने के लिए यही किया:

base64_encode(serialize($User)); // make sure to encode the serialized object 
unserialize(base64_decode($User)); // decode it before unserializing 
+0

यह एक अच्छा समाधान है। :) – Mifas

+1

मुझे नहीं पता कि मैं इसे इस पोस्ट पर प्रतिक्रिया कर सकता हूं, लेकिन मेरे पास एक ही जारी है और मैं base64_encode (serialize ($ डेटा)) का उपयोग कर रहा हूं ... मैं इसे कैसे ठीक कर सकता हूं? –

+0

यह एकमात्र समाधान था जो वास्तव में काम करता था। कभी-कभी regex प्रतिस्थापन काम नहीं करेगा। – astroanu

संबंधित मुद्दे