1

次のようにユーザーを確認するためのコントローラーがあります。

function index()
{
    if($this->input->post('username'))
    {
        $username=$this->input->post('username');
        $password=$this->input->post('password');
        $this->mstudents->verifyUser($username,$password);
        if(@$_SESSION['sutdentUsername']!=""){
        echo "success";
        }
        else
        {
            echo "error";
        }
    }
    else
    {
        echo "error";
    }

}

この関数は、次のようにビューで ajax によって呼び出されます。

$.post('<?PHP echo base_url();?>account/login/',{username:$("#username").val(),password:$("#password").val()},function(data){

        $("#loginButton").button('reset');
        if(data=="success")
        {
            window.location="<?PHP echo base_url();?>account/dashboard";
        }
        });

問題は、検証のためにダッシュボードのセッション変数にアクセスしようとすると、空の $_SESSION 配列が取得されることです。何が問題なのですか?

これは、verifUser のモーダル コードです。

function verifyUser($username,$password)
{
    $data=array();
    $this->db->where('email',$username);
    $this->db->where('password',$password);
    $this->db->where('status','active');
    $Q=$this->db->get('students');
    if($Q->num_rows()>0)
    {
        $row=$Q->row_array();       
        $_SESSION['sutdentUsername']=$row['email'];

    }
    else
    {
        $_SESSION['sutdentUsername']="";
    }
}

すべてのコントローラーのコンストラクターのコードにこのコードがあります。

function __construct()
{
    parent::__construct();
    session_start();
    print_r($_SESSION);

コントローラーのディレクトリ構造は次のようになります。

コントローラー: account -dashboard -login 他のコントローラーはここに...

4

2 に答える 2

4

私の理解から、これを試してみるべきかもしれません:

セッション ライブラリを自動ロードするかどうかに応じて、以下を含める必要があります。

$this->load->library('session');

次に、次を使用できるはずです。

$this->session->set_userdata('some_name', 'some_value');

$session_id = $this->session->userdata('some_name');

これがあなたが必要とするものと同じであることを願っています。

于 2013-01-04T05:50:05.180 に答える
3

ネイティブのphpセッションを使用しているため、最初にセッションを開始する必要があります。セッションをsession_start();内部に配置するか、内部にindex.php配置することができます。__construct()

于 2013-01-04T11:27:55.427 に答える