2012-02-29 90 views
0

我尝试使用Codeigniter中的会话进行登录页面。Codeigniter - 链接

为了做到这一点,我提出一个模型

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函数中被删除,它直接返回else语句并打印错误为什么?

+0

您是否尝试过声明并获取其他会话值?我并不完全确定,但是由于服务器在本地主机(您的计算机)上,可能会话并未被精确保存? – 2012-02-29 13:49:53

+0

您是否将数据存储在数据库中?什么是你的会话的var_dump? – Derfder 2013-03-16 11:06:14

回答

1

尝试加载会话例如在您的aaplication/config文件夹的autoload.php中:

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

或者在您的控制器的构造函数中。

还要确保会话中正确设置你的config.php文件,如:

$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['sess_cookie_name']  = 'cisession'; 

此外,您的会话设置正确,例如:

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

如何存储会话数据?在数据库中还是不?

0

在codeigniter config中已经更改了默认的会话/ cookie名称和域名?

确保您更改名称包括下划线“_”,因为在所有的浏览器下划线不工作,例如IE)