vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 Programming Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=15)
-   -   unserialize not working correctly (https://vborg.vbsupport.ru/showthread.php?t=139129)

TomasDR 02-11-2007 08:37 PM

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.

Analogpoint 02-12-2007 01:20 AM

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);

?>


Adrian Schneider 02-12-2007 01:23 AM

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.


All times are GMT. The time now is 07:02 AM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01044 seconds
  • Memory Usage 1,726KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (4)bbcode_code_printable
  • (1)bbcode_php_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (3)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.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/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.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
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete