On Fri, 19 Jan 2001, TR Henigson wrote:

> My original e-mail, unanswered, is referenced below. I am in serious
> need of HELP.
>
> To prevent the $SESSION variable from getting set to a boolean, I
> wrote the following loop with the idea that if the error happened
> in unserializing the data in the database, I would simply query the
> database again, and unserialize the data anew:
>
> while(gettype($SESSION)<>"array")
> {
>       $sessionError++;
>       $select=new dbLOCAL;
>       $query="SELECT data FROM sessions WHERE id='".$sessid."'";
>       $select->query($query);
>       $select->next_record();
>       $SESSION=unserialize($select->Record["data"]);
>       echo $select->Record["data"];
>       echo "<br>";
>       echo gettype($SESSION);
>       echo "<br>";
> }
>
> $select is obviously an object. The next_record() method uses the
> mysql_fetch_array() function to get put the data into the Record
> property. I added the echo statements to see what was happening if
> and when the loop executed. Well, it eventually did and I had to
> physically terminate the script in my browser as the conditional
> for the loop never evaluated TRUE. Echoed out to my browser was
> the following:
>
> a:2:{s:4:\"USER\";a:15:{s:8:\"loggedIn\";i:1;s:7:\"user_id\";s:1:\"1\";s:5:\
> "admin\";s:3:\"Yes\";s:10:\"contact_id\";s:1:\"1\";s:5:\"first\";s:2:\"AA\";
> s:4:\"last\";s:8:\"Aaaaaaaa\";s:7:\"company\";s:3:\"ABC\";s:6:\"street\";s:1
> 8:\"8158 AAAAAA Avenue\";s:4:\"city\";s:11:\"Los
> Angeles\";s:5:\"state\";s:1:\"5\";s:7:\"zipcode\";s:5:\"00000\";s:7:\"countr
> y\";s:13:\"United States\";s:5:\"phone\";s:14:\"(000)
> 000-0000\";s:3:\"fax\";s:0:\"\";s:5:\"email\";s:13:\"[EMAIL PROTECTED]\";}s:7:\"
> CONTACT\";a:1:{i:1;a:11:{s:5:\"first\";s:2:\"AA\";s:4:\"last\";s:8:\"Aaaaaaa
> a\";s:7:\"company\";s:3:\"ABC\";s:6:\"street\";s:18:\"8158 AAAAAA
> Avenue\";s:4:\"city\";s:11:\"Los
> Angeles\";s:5:\"state\";s:1:\"5\";s:7:\"zipcode\";s:5:\"00000\";s:7:\"countr
> y\";s:13:\"United States\";s:5:\"phone\";s:14:\"(000)
> 000-0000\";s:3:\"fax\";s:0:\"\";s:5:\"email\";s:13:\"[EMAIL PROTECTED]\";}}}
> boolean
> a:2:{s:4:\"USER\";a:15:{s:8:\"loggedIn\";i:1;s:7:\"user_id\";s:1:\"1\";s:5:\
> "admin\";s:3:\"Yes\";s:10:\"contact_id\";s:1:\"1\";s:5:\"first\";s:2:\"AA\";
> s:4:\"last\";s:8:\"Aaaaaaaa\";s:7:\"company\";s:3:\"ABC\";s:6:\"street\";s:1
> 8:\"8158 AAAAAA Avenue\";s:4:\"city\";s:11:\"Los
> Angeles\";s:5:\"state\";s:1:\"5\";s:7:\"zipcode\";s:5:\"00000\";s:7:\"countr
> y\";s:13:\"United States\";s:5:\"phone\";s:14:\"(000)
> 000-0000\";s:3:\"fax\";s:0:\"\";s:5:\"email\";s:13:\"[EMAIL PROTECTED]\";}s:7:\"
> CONTACT\";a:1:{i:1;a:11:{s:5:\"first\";s:2:\"AA\";s:4:\"last\";s:8:\"Aaaaaaa
> a\";s:7:\"company\";s:3:\"ABC\";s:6:\"street\";s:18:\"8158 AAAAAA
> Avenue\";s:4:\"city\";s:11:\"Los
> Angeles\";s:5:\"state\";s:1:\"5\";s:7:\"zipcode\";s:5:\"00000\";s:7:\"countr
> y\";s:13:\"United States\";s:5:\"phone\";s:14:\"(000)
> 000-0000\";s:3:\"fax\";s:0:\"\";s:5:\"email\";s:13:\"[EMAIL PROTECTED]\";}}}
> boolean
>
> AND SO ON...
>
> Can anyone please tell me why this is happening and what I can
> do to correct it??? Thank you,
>
> Ted
>

Yeah, there's your problem. See the output? See all those backslashes? Figured
it out yet? :)

All those backslashes are breaking the unserialization. Use stripslashes(). Or
better yet, turn off magic_quotes_runtime in php.ini.

-- 
Ignacio Vazquez-Abrams  <[EMAIL PROTECTED]>


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to