Codeigniter + ajax (jQuery) oturum sorunu

1 Cevap php

Sunucu tarafı ajax sonrası isteği kullanarak oturumu alınırken bir sorun var. İşte benim örnek kod:

JavaScript:

$(function() {
    $('.jid_hidden_data').submit(function() {
        var serialized = $(this).serialize();
        var sUrl = "http://localhost/stuff";
        $.ajax({
            url: sUrl,
            type: "POST",
            data: serialized,
            success: function(data) {
                alert(data);
            }
        })
        return false;
    });
});

CodeIngiter (PHP) tarafı:

function stuff()
{
     $post_stuff = $this->input->post('my_stuff');     // WORKS PERFECTLY
     $user_id = $this->session->userdata('user_id');   // RETURNS NULL
}

yorumladı döner gerçekten var çünkü, kullanıcıların oturum verilerini dönmelidir NULL. Sorun nedir? Yöntem sonrası kurabiye almak ya da ne değildir? Herhangi bir yardım için teşekkür ederiz!

Update:

For clarification i have session set with $this->session->set_userdata($data). And I don't have a problem when posting it without js/ajax. I mean with plain form submit it works fine.

1 Cevap

Farklı bir etki alanı adlarını kullanarak bir CI app erişirken Ben benzer bir sorun vardı. Bu alan adları aynı web sunucusuna işaret olsa da, ben iki ayrı seans var.

Örneğin, bu Kontrolörü göz önünde bulundurun:

class User extends Controller
{
    function User()
    {
        parent::Controller();
        $this->load->library('session');
    }

    function login()
    {
        $this->session->set_userdata('login_token', true);
        echo 'finished logging in';
    }

    function logout()
    {
        $this->session->unset_userdata('login_token');
        echo 'finished logging out';
    }

    function status()
    {
        if ($this->session->userdata('login_token'))
        {
            echo 'logged in';
        }
        else
        {
            echo 'not logged in';
        }
    }
}

Ben sırayla aşağıdaki URL'leri erişebilirsiniz. Her URL yanında ilgili çıkış:

http://localhost/app/user/login "giriş bitmiş"

http://localhost/app/user/status "oturum"

http://127.0.0.1/app/user/status "in açmış değil"

Yani localhost app erişirken Ben oturumu Ben aynı web sunucusu vuruyorum olsa bile, 127.0.0.1 üzerinde taşımıyor.

Sizin AJAX komut URL etki alanı adı ile test URL bu farklı olduğunu olabilir?