Search code examples
phpsessioniframewamp

PHP session is not working


I am working with wamp2.0 - PHP 5.3, apache 2.2.11 but my sessions are not storing data.

I have a page that accepts a parameter, which (simplified version) I wanna store in a session, so when I come to

http://www.example.com/home.php?sessid=db_session_id

The script looks like:

session_start();

$sessid = @$_GET['sessid'];
if ($sessid) {
  $_SESSION['sessid'] = $sessid;
}
var_dump($_SESSION);

and outputs:

array(1) { [0]=> string(13) "db_session_id" } 

which is fine, but then, when I go to link (without the sessid parameter) the $_SESSION array is empty. I've event tried to comment the $_SESSION['sessid'] = $sessid; line before going to the page without the parameter, but still it didin't work.

I've checked the session_id() output and the session id remains the same.

Session settings from phpinfo()

Session Support enabled
Registered save handlers    files user
Registered serializer handlers  php php_binary wddx

Directive   Local Value Master Value
session.auto_start  Off Off
session.bug_compat_42   On  On
session.bug_compat_warn On  On
session.cache_expire    180 180
session.cache_limiter   nocache nocache
session.cookie_domain   no value    no value
session.cookie_httponly Off Off
session.cookie_lifetime 0   0
session.cookie_path /   /
session.cookie_secure   Off Off
session.entropy_file    no value    no value
session.entropy_length  0   0
session.gc_divisor  1000    1000
session.gc_maxlifetime  1440    1440
session.gc_probability  1   1
session.hash_bits_per_character 5   5
session.hash_function   0   0
session.name    PHPSESSID   PHPSESSID
session.referer_check   no value    no value
session.save_handler    files   files
session.save_path   c:/wamp/tmp c:/wamp/tmp
session.serialize_handler   php php
session.use_cookies On  On
session.use_only_cookies    On  On
session.use_trans_sid   0   0

EDIT:

The sessions are deleted by an iframe. I don't know why, but when commented, the sessions work fine. Thing is, the iframe has to stay there (which of course is bad, but I can't do anything about it). Well...do you know about any workarounds to get the sessions working with an iframe?


Solution

  • A frame can access the session only if it's relative to the same domain. For example:

    <? 
    $_SESSION["foo"]="foo"; 
    ?><html> 
     <body> 
      <iframe src ="test.php" width="200" height="200"></iframe> 
     </body> 
    </html> 
    <? 
    print_r($_SESSION); 
    ?>
    

    Should work outside and inside the iframe. If your still having problems try:

     <?php  session_start();
    
        $sessid = $_GET['sessid'];
        if (isset($sessid) && $sessid != "" && $sessid != NULL) {
          $_SESSION['sessid'] = $sessid;
        }
        print_r($_SESSION);?>