Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 02-11-2007, 08:37 PM
TomasDR TomasDR is offline
 
Join Date: Feb 2006
Posts: 121
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default unserialize not working correctly

I am trying to use a hack that is no longer supported and the original coder isn't replying even on his own board. I am hoping someone can assist me since I am very confused about what is wrong.

I am using FC4 with updated RPMs, so PHP=5.0.4 & SQL=4.1.20, I also use MYSQLi to connect to the database.

The original code is:
Code:
    $cdfield = "field" . $vbulletin->options["countdownfield"];
    $query = $vbulletin->db->query_read( "SELECT $cdfield FROM " . TABLE_PREFIX . "userfield WHERE userid='" . $post["userid"] . "';" );
    $result = mysql_fetch_array( $query );
  
    $cddata = unserialize( str_replace( """, '"', $result[$cdfield] ) );
  
    if ( $cddata["enabled"] == "Yes" )
I know $cdfield is working and returning the proper field#.

So I made this test code to figure out what is wrong:
Code:
<?php
$link = mysql_connect('localhost', 'dbname', 'dbpassword');
if (!$link) {
   die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully'.'<br />';
$result = mysql_query("SELECT field10 FROM vbulletin.vb_userfield WHERE userid='3531'");
if (!$result) {
   die('Invalid query: ' . mysql_error());
}
echo 'Query Results'.'<br />';
var_dump ($result);
$result2 = str_replace( "&quot;", '"', $result['field10'] );
echo '<br/>'.'Replace Results'.'<br />';
var_dump ($result2);
$serializedarray = unserialize($result2['field10']);
echo '<br/>'.'Unserialized'.'<br />';
var_dump ($serializedarray);
echo $result["enabled"];
?>
I receive:
Code:
Connected successfully
Query Results
resource(3) of type (mysql result) 
Replace Results
string(0) "" 
Unserialized
bool(false)
My raw data in the SQL table looks like this:
Code:
a:8:{s:7:&quot;enabled&quot;;s:3:&quot;Yes&quot;;s:3:&quot;day&quot;;s:1:&quot;1&quot;;s:5:&quot;month&quot;;s:1:&quot;1&quot;;s:4:&quot;year&quot;;s:4:&quot;2009&quot;;s:4:&quot;hour&quot;;s:1:&quot;0&quot;;s:6:&quot;minute&quot;;s:1:&quot;0&quot;;s:5:&quot;event&quot;;s:14:&quot;Happy New Year&quot;;s:7:&quot;overmsg&quot;;s:15:&quot;Make Resolution&quot;;}
Any help would be greatly appreciated.
Reply With Quote
  #2  
Old 02-12-2007, 01:20 AM
Analogpoint's Avatar
Analogpoint Analogpoint is offline
 
Join Date: Feb 2007
Posts: 656
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Did you try doing an unserialize on the serialized data before other manipulations such as the str_replace?

EDIT:
Also, mysql_query returns a MySQL "resource", you should pass it to one of the functions such as mysql_fetch_assoc to return a php array of the data.

PHP Code:
<?php
$link 
mysql_connect('localhost''dbname''dbpassword');
if (!
$link) {
   die(
'Could not connect: ' mysql_error());
}
echo 
'Connected successfully'.'<br />';
$result mysql_query("SELECT field10 FROM vbulletin.vb_userfield WHERE userid='3531'");
if (!
$result) {
   die(
'Invalid query: ' mysql_error());
}
echo 
'Result resource<br />';
var_dump ($result);

echo 
'Result array<br />';
$result mysql_fetch_assoc ($result);
var_dump ($result);

echo 
'Result unserialized<br />';
$result unserialize ($result['field10']);
var_dump ($result);

echo 
'Result quotes replaced<br />';
$result str_replace"&quot;"'"'$result);
var_dump ($result);

?>
Reply With Quote
  #3  
Old 02-12-2007, 01:23 AM
Adrian Schneider's Avatar
Adrian Schneider Adrian Schneider is offline
 
Join Date: Jul 2004
Posts: 2,528
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Bingo.

Remember that a when you serialize something, PHP records the lengths of all the strings, arrays, etc. Changing things like &quot; to " would muck this up, resulting in an usable data.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 05:10 PM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.05112 seconds
  • Memory Usage 2,189KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (4)bbcode_code
  • (1)bbcode_php
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (3)post_thanks_box
  • (3)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (3)post_thanks_postbit_info
  • (3)postbit
  • (3)postbit_onlinestatus
  • (3)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete