2012-02-29 3 views
0

나는 Codeigniter에서 세션이있는 로그인 페이지를 만들려고합니다.Codeigniter - link

그렇게하기 위해서는, I는 모델

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; 
    } 

만들었고 얘들 제어기 난 얘들 i가 하나 개의 기능 이상으로 동일한 컨트롤러

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 문으로 이동하여 오류 이유를 인쇄합니까?

+0

다른 세션 값을 선언하고 페어핑 했습니까? 확실하지는 않지만 어쩌면 세션이 서버가 localhost (컴퓨터)에 있기 때문에 프로빙되어 저장되지 않을 수 있습니까? –

+0

데이터를 데이터베이스에 저장 하시겠습니까? 세션의 var_dump는 무엇입니까? – Derfder

답변

1

한번에 로딩 세션)

당신이 예를 IE를 들어, 모든 브라우저에서 밑줄 나던 작업 이후 밑줄 "_"를 포함하여 이름을 변경해야합니다 당신의 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에서 기본 세션/쿠키 이름과 도메인이 변경 되었습니까? 예를 들어,