Hi guys, recently i am so busy and not able to update my website often.
But today, I face a problem on the PHP session while using iframe to include a custom php file.
The custom php file just doing some select/update command using session data.
I try my script in Google Chrome & Mozilla Firefox, everything is working fine but not Internet Explorer.
The data inside the session is not retrievable and causing the entitle script not working.
Below is my sample script
<?php session_start(); //echo session_id(); //PRINT OUT THE SESSION ID if(!isset($_SESSION['mydata']) && $_POST['action'] == 'update') die("unable to get mydata"); $_SESSION['mydata'] = 'ANYTHING'; //PERFORM SELECT/UPDATE ?> |
Above just a simple sample, if you using wordpress/joomla (php applications) and iframe the custom page and using Internet Explorer to retrieve and update it. The page should display “unable to get mydata” but not perform the update statement.
After debug for sometime, I try to print out the session_id() and found that everything the iframe page refresh, it will generate another new session_id but not use the previous id (This act differently with Firefox and Chrome) and this is the main issue causing my script is not working.
Then I google a bit and find the solution below.
What you need to do it just add in a single line command into your custom php page.
<?php header('P3P: CP="CAO PSA OUR"'); //ADD IN THIS LINE IN ORDER TO SOLVE THE INTERNET EXPLORER ALWAYS GET NEW SESSION ISSUE session_start(); //echo session_id(); //PRINT OUT THE SESSION ID if(!isset($_SESSION['mydata']) && $_POST['action'] == 'update') die("unable to get mydata"); $_SESSION['mydata'] = 'ANYTHING'; //PERFORM SELECT/UPDATE ?> |















September 30th, 2009 at 8:55 pm
You should use sessions and database instead.
October 9th, 2009 at 3:03 am
This header saved my life, rarely had this problem, but in the last two times I could not solve it.
Now, finally resolved.
Excellent post.
October 9th, 2009 at 9:55 am
Thanks…
The header save my life as well
Cheer~~!
March 4th, 2010 at 5:39 pm
Good solution, thanks
Unfortunately it doesn’t work in FF (3.5.8) under Windows 2003 Server, but under Win XP or Vista it does.