2012-02-29 12 views
0

私はCodeigniterのセッションでログインページをしようとします。Codeigniter - link

はそれを行うために、私は、モデル

function girisKontrol($username, $password) { 
     $sha1_password = sha1($password); 
     $query = "SELECT id FROM pasaj_register WHERE username = ? and password = ?"; 

     $result = $this->db->query($query, array($username, $sha1_password)); 

     if ($result->num_rows() == 1) 
      return $result->row(0)->id; 
     else 
      return false; 
    } 

を作り、girisコントローラでiはつ以上の関数からなる同じコントローラでgiris

public function giris() { 

     extract($_POST); 


     $userID = $this->giris->girisKontrol($username,$password); 
     echo $userID; 

     if (!$userID) { 

      $this->session->set_flashdata('login error',TRUE); 

      redirect('giris/giris'); 

     } else { 
      $this->session->set_userdata(array(
        'logged_in' => TRUE, 
        'userID' => $userID)); 

      redirect('welcome_message'); 
     } 


} 

呼び出された関数からなる:

public function main_page() 
    { 
     if ($this->session->userdata('logged_in')) 
      echo "Logged in"; 
     else 
      echo "Error"; 


    } 

これらのすべてを表示に使用

<form method="POST" action="http://localhost:81/pasaj/giris/main_page/" name="flogin" autocomplete="off"> 

     <label for="username"><b>Kullanıcı adı</b> ya da <b>e-posta</b> adresiniz:</label> 
     <input type="text" value="" class="normalinput" name="username" id="username"> 
     <label for="password">Şifreniz:</label> 
     <input type="password" class="normalinput" value="" name="password" id="password"> 
     <span class="bigsubmitwbtn yellow fright"><span class="bigsubmitwbtn_left"></span><input type="submit" class="bigbutton" name="submit" value="Giriş"></span> 
     </form> 
    </div> 

main_page関数でdecleredとして、直接else文に進み、Error Whyを出力しますか?

+0

他のセッション値を宣言してフェッチしようとしましたか?私は完全にはわからないが、ローカルホスト(あなたのコンピュータ)上にあるサーバーのために、セッションがプロバーに保存されていない可能性がありますか? –

+0

あなたのデータはデータベースに保存されているのですか?あなたのセッションのvar_dumpは何ですか? – Derfder

答えて

1

てみローディングセッション);

あなたはたとえばIEのために、すべてのブラウザで下線doesntの仕事以来、アンダースコア「_」などの名前を変更してくださいあなたのaaplication/configフォルダ内のautoload.phpで:

$autoload['libraries'] = array('session'); 

またはコントローラのコンストラクタにあります。

$config['sess_cookie_name']  = 'cisession'; 
$config['sess_expiration']  = 86400; 
$config['sess_expire_on_close'] = FALSE; 
$config['sess_encrypt_cookie'] = FALSE; 
$config['sess_use_database'] = FALSE; 
$config['sess_table_name']  = 'ci_sessions'; 
$config['sess_match_ip']  = FALSE; 
$config['sess_match_useragent'] = TRUE; 
$config['sess_time_to_update'] = 300; 

からの変更$の設定[ 'sess_cookie_nameを']で述べたように:に

$config['sess_cookie_name']  = 'ci_session'; 

またセッションはのようなあなたのconfig.phpに正しく設定されていることを確認してください

$config['sess_cookie_name']  = 'cisession'; 

あなたのセッションは正しく設定されています。例:

// create session 
$this->session->set_userdata($data); 

どのようにセッションデータを保存しますか?データベース内かどうか?

0

codeigniter configでは、デフォルトのセッション/ Cookie名とドメインが変更されていますか?例えば