2012-08-31 4 views
1

문제 1) 내가 등록/로그인 영역을 설정하고 빈 필드를 포함하여 모든 (검증) 및 벽에 충돌 한 경우 아이디/비밀번호 잘못된 것입니다. 현재 필드가 공백으로 표시되지만 올바른 페이지 정보 또는 잘못된 사용자 정보를 사용하여 페이지를 '개인 페이지'로 리디렉션하면 제출할 오류 메시지가 표시 될 수 있습니다.CodeIgniter를, 비밀 번호 또는 이름 잘못된 메시지 (데이터베이스 확인)

1 문제 (해결) : 이것은 내 현재 코드입니다

컨트롤러 :

//This method will have the credentials validation 
    public function credentials_validation() { 
     $data['error'] ="Invalid Username or Password"; 
     $this->load->library('form_validation'); 
     $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean|callback_username_check'); 
     $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_password_check'); 

      if($this->form_validation->run() == FALSE) 
      { 
      //Field validation failed. User redirected to login page 
      $this->index(); 

      }else{ 
       $this->load->model('register_model'); 

       if($query = $this->register_model->validate()) { 
       $this->load->model('news_model'); 

       $data = array('news' => $this->news_model->getArticle()); 
       $data['title'] = 'Admin | Home'; 
       $data['heading'] = 'News Articles'; 
       $data['main_content'] = 'admin/news'; 
       $this->load->view('include/template', $data); 

       }else { 
       $this->load->view('login',$data); 
       }  

      } 
    } 

문제 2) 뉴스 기사 페이지는 1 기사 및 URL이 표시 클래스 이름을로드합니다.

뉴스 컨트롤러 :

class News extends CI_Controller { 

    public function __construct() { 
     parent::__construct(); 
     $this->load->model('admin/news_model'); 
    } 

    public function index() { 
     $data = array('news' => $this->news_model->getArticle()); 
     $data['title'] = 'Admin | News Home'; 
     $data['heading'] = 'News Articles'; 
     $this->load->view('admin/news', $data); 
} 

}

뉴스 모델은 ID로 모든 순서를 선택, 데이터베이스 테이블을 당겨 배열의 결과입니다. 누구나 왜 이것이 1 개의 결과 만 표시하는지 알 수 있습니까? foreach 메서드와 관련이 있다고 생각합니까?

PS, CI 또는 PHP 오류 로그에서 표시 오류 메시지!

+0

처럼 상단에 뭔가를 넣어 문제. 당신이 게임을 돕고 있으며 점수를 얻습니다. 내 대답으로 문제가 해결되었지만 대답으로 표시하지 않으면 점수를 얻지 못하는 것입니다.이 점 때문에 제가이 "게임"을하도록 동기를 부여하지는 않습니다. –

답변

5

가장 좋은 방법은 오류 메시지를 배열에 저장하는 것입니다. 제어기

if($query = $this->register_model->check_membership()) { 
    $data['main_content'] = 'signup_successful'; 
    $this->load->view('include/template', $data); 

}else { 
    $data["error"]="Invalid User Id and Password combination"; 
    $this->load->view('signup',$data); 
} 

check_membership 함수는 로그인 ID와 패스워드의 조합이 OK인지 아닌지를 확인한다, 예를 들어

$data['error'] ="Invalid Login"; 

.

는 그리고 다음 signup보기 페이지에서, 나는 대답은 아래의 원래의 질문을 해결하기 때문에 당신이 답변을 받아 별도로 새 질문을 넣어해야한다고 생각 또한

if (isset($error)){ 
    echo "<div class='error'>$error</div>"; 
} 
+0

나는 귀하의 조언을 받아 왔으며 이것이 배열 (만세). 이제 사용자가 잘못된 사용자 이름이나 암호를 사용하여 로그인하려고하면 로그인 페이지에 오류 메시지가 표시되고 올바른 경우 관리 뉴스 페이지로 직접 전달됩니다. 그러나 또 다른 문제는 자르므로 모든 (제한이 설정되지 않음)을 표시하는 대신 1 개의 뉴스 기사 (결과는 배열에서 객체 메서드를 시도했습니다)를 보여 주며 url은 클래스 이름 "credentials_validation"을 표시합니다. 어떤 아이디어라도이 문제를 해결하는 방법은 무엇입니까? 내 코드를 원래 게시물에 추가하여 이제는 메서드를 사용하여 볼 수 있습니다. 다시 한 번 감사드립니다! – Shimsham84

+0

시도해보십시오 ($ this-> db-> last_query()); 모델에서 select 메소드를 호출 한 직후. 즉 $ data = array ('news'=> $ this-> news_model-> getArticle()); echo ($ this-> db-> last_query()); 이는 (그것을 위해 구글이나 CI 문서를 체크 아웃) true로 SQL 쿼리 또는 enable_profiler 무엇을 보여 컨트롤러에 있습니다. 이렇게하면 장면 뒤에서 코드가 어떻게되는지 알 수 있습니다. 그 이유는 하나의 레코드 만있는 이유를 알 수 있습니다. –

관련 문제