Search code examples
phpjqueryajaxsession

php session not working with ajax


I've got a weird problem were php session variables are not working on pages accessed by ajax.

Server Side Code: s2.php

<?php
    session_start();
    header("Access-Control-Allow-Origin: *");

    echo '{"response":"'.$_SESSION["email"].'"}';

    exit();
?>

Client Side Code: index.php

$.ajax({
    url: 'mysite.com/s2.php',
    data: info,
    error: function() {
        console.log("broke :( ");
    },
    dataType: 'json',
    success: function(data) {
        console.log(data);
    },
    type: 'POST'
});

when I navigate to mysite.com/index.php i see: {response: ""} in the console.

When I navigate to mysite.com/s2.php I see {response: "email@address"} displayed in the browser.

I just don't understand why s2.php can access the session normally but not when run by an ajax call.

Also, when I run it on my home server, everything seems fine. But it's when it's run on my wife's bluehost.com server is when it has problems. Is this something with their settings?


Solution

  • According with the official documentation, you must call the session_start() method in each one of pages where you are going to use the session, so try to call session_start() in your index.php.

    This method starts new or resumes existing session, also check your PHPSESSID cookie sent with the AJAX request that match with your index.php PHPSESSID.