私は最初のCIプロジェクトをコーディングしており、ログインスクリプトを作成しようとしています。セッションのuserdataが利用できないことを除いて、すべてうまく動作します(Firefoxのクッキー/セッションをチェックしてもそうではありません)。CodeIgniterセッションUserdateが存在しないようです
ログイン後にセッションのユーザーデータのみが使用できる理由はわかりませんが、同じページを再度読み込むと(リフレッシュではなく新しい読み込み)、まだログインしていますが、 mログアウト?たとえセッションのユーザーデータを読み込もうとしても、それは存在しません。
私は、スクリプトをstackoverflowのサンプルバージョンに簡略化しました。このセッションの問題をどのように解決できるか教えてください。
よろしく、 グイド
<?php
class Test extends CI_Controller
{
function index()
{
$logged_in = $this->is_logged_in();
if($logged_in) {
echo "You are logged in. <a href='test/logout'>Logout</a> | <a href='../'>Return to index</a>";
}
else {
echo "You are logged out";
echo form_open('test/check_login');
echo "Email: ".form_input('email', set_value('email'));
echo "Password: ".form_password('password', set_value('password'));
echo form_submit('submit','Login');
echo form_close();
}
}
function is_logged_in() // check if user has logged in
{
// AUTOLOAD SESSIONS HAS SET in autoload.php-config >> $autoload['libraries'] = arra y('database', 'session', 'email');
$is_logged_in = $this->session->userdata('is_logged_in');
if($is_logged_in) {
return TRUE;
}
else {
return FALSE;
}
}
function check_login()
{
$client_id = $this->validate();
if(is_numeric($client_id)) // if the user's credentials validated then user exists
{
$data = array(
'client_id' => $client_id,
'is_logged_in' => true
);
$this->session->set_userdata($data);
}
$this->index();
}
// normally we put this function in a model, but for this example we put it here.
function validate() // check if user exists in database
{
$this->db->where('email', $this->input->post('email'));
$this->db->where('password', md5($this->input->post('password')));
$query = $this->db->get('client_users'); // this is our user table
if($query->num_rows == 1) // user exists
{
$row = $query->row();
return $row->id_client;
}
else
{
return false;
}
}
function logout()
{
$this->session->sess_destroy(); // kill session, so user will be logged out.
redirect('/test');
}
}
?>
私のlocalhost上の 'セッション'を使って間違っています...しかし、私は問題がどこで始まるかわかりません。 –
私は問題を解決しました...それは 'localhostなものです。私はlocalhostでテストしていたので、CIのドメイン設定が空でなければならないようです。 (http://codeigniter.com/forums/viewthread/209191/を参照) –