18

codeigniter 2.1.0 を使用しています。

codeigniter のセッション ライブラリを使用して登録/ログイン機能を実行しようとしています。

セッションライブラリでの登録・ログインはlocalhostではうまくいきましたが、ライブに置いて試してみるとセッションがうまくいきません。

私のコントローラーのログインはこのように機能します。資格情報を確認し、問題がなければセッション データを設定して別のページにリダイレクトします。

$user_data = array(
                   'username'       => $result->user_name,
                   'email'          => $result->user_email,
                   'userid'         => $result->user_id,
                   'role'           => $result->user_role,
                   'login_state'    => TRUE,
                   'lastlogin'      => time(),
               );

$this->session->set_userdata($user_data);           
print_r( $this->session->all_userdata());            
redirect(base_url('dashboard'));

この時点で、すべてのセッション データを印刷すると、実際に印刷されます。しかし、ダッシュボード コントローラー側で、セッション データを印刷しようとすると、それらはもう存在しませんでした。

理由はありますか?助けてくれてありがとう。

4

20 に答える 20

4

私の場合、(localhost で https と http を使用して) いくつかのテストを行った後、その問題に対してエラーが発生し、$config['cookie_secure'] が適切に設定されていないため、config.php で変更を試みることができます。

$config['cookie_secure']    = FALSE; // if is not under https, or true if you use https

乾杯!

于 2014-07-21T09:07:04.417 に答える
3

ライブラリセッションを自動ロードしないかもしれません。

コントローラーダッシュボードでこれを試してみましたか:

$this->load->library('session');
print_r($this->session->all_userdata());
于 2013-01-23T21:56:05.137 に答える
2

問題をデバッグしようとしていることがわかりました。しかし、リダイレクトする前にエコー/プリントを削除しようとしましたか?

私は「セッション」の専門家ではありませんが、リダイレクトする前にデバッグ情報を出力すると、次のページでセッション データが失われるという同様の問題がありました。

また、@edelweissはお金を稼いでいます:)

于 2013-01-23T23:01:45.937 に答える
1

セッションにデータベースを使用していない場合は、アプリに/ tmp(ファイルセッションが保存されている場所)にセッションファイルを作成する権限があることを確認してください。

おそらく、本番サーバーでphp.iniを調べて、セッション保存ハンドラーが定義されていることを確認する必要があります。http://devzone.zend.com/413/trick-out-your-session-handler/はこれをかなりよく説明しています。

于 2013-01-23T05:24:07.093 に答える
1

私は同様の投稿を見て、彼の sessions.php を使用するためにここに誘導されました

そして、それは私のために働きます!

http://www.philsbury.co.uk/blog/code-igniter-sessions

于 2013-01-23T09:07:03.270 に答える
0

$_SESSION を使用する前に、必ず session_start() を実行してください。私はこの問題を抱えていました、私は愚かにそれを仮定しました

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

私のためにそれをしますが、しません。

于 2015-10-02T13:23:34.347 に答える