2010-06-24 3 views
0

codeigniter 사이트에서 일하고 있는데 클라이언트가 올바른 암호를 입력하지 않으면 클라이언트가 datatable의 가격 열을 숨기도록 요청했습니다 전화로 고객에게 전달).Codeigniter - 정보 공개 방법은 아약스를 통해 입력 한 암호입니다.

명백한 방법은 가격이 포함 된 새 테이블/페이지를 나타내는 사용자 로그인을 만드는 것입니다.

어떻게 든 AJAX를 통해이 작업을 수행 할 수 있습니까? 즉, 대화 상자가 나타나고 사용자가 비밀번호를 입력하고 요청이 전송되며 가격이 포함 된 새로운 테이블이로드됩니까?

저는 Codeigniter의 총 신인이지만 일상적으로 배우고 있습니다. 누군가 올바른 방향으로 나를 가리킬 수 있습니까?

감사 댄

답변

2

실제로 실제로는 코드 점화기 문제가 아니라 더 많은 자바 스크립트입니다. ci에 ajax (jquery와 같은 자바 스크립트 프레임 워크를 사용하는 것이 좋습니다.)를 통해 호출하는 컨트롤러 함수를 추가하십시오.

간단하게 비밀번호를 요청에 추가 할 수 있습니다. 제어기 기능은 암호를 검사하고 암호가 맞으면 암호를 에코합니다.

자바 스크립트 코드는 그렇게 보일 수 있습니다

$.ajax({ 
type: "POST", 
url: 'controller/function', 
data: {'password': $('#password').attr(value)}, 
success: function(data){ 
    $('#price').html(data); 
}, 
}); 
1

당신은 아약스를 통해 그것을 달성 할 수 : 사용자가 상자에 암호를 입력하고에 이벤트를 클릭

2) 버튼을 클릭

1) : 그것은는 다음과 같이 작동합니다 버튼은 다음을 트리거합니다.

0

이 질문은 특정 언어 또는 프레임 워크와 관련이 거의 없지만 문제에 대한 최선의 접근 방법. 이 경우 암호가 올바르게 입력 된 경우에만 열이 표시됩니다. 먼저 웹 사이트 사용자가 암호를 입력 할 수있는 방법이 필요합니다. 이것이 어떻게 행해지는지는 다시는별로 관련이 없으며 페이지의 양식 일 수도 있고 별도의 페이지 일 수도 있습니다.

암호가 제출되고 올바른 것으로 확인되면 사용자에 대해 세션을 만들어야합니다. 이 세션은 기본적으로 열을 표시할지 여부를 페이지에 알려주는 것입니다.

사용자가 JavaScript를 사용할 수 없도록 설정 한 다음 절대로 열을 볼 수없고 웹 사이트의 유용성을 높이기 위해 JavaScript 만 사용하는 것처럼 아약스 방법에만 의존하기를 원하지 않을 것입니다.

0

아약스는 로그인 컨트롤러가 아니라 HTML보다 뭔가 기계 판독 (JSON/XML)을 반환 의미합니다.

컨트롤러가 세션 변수를 설정하기 만하면됩니다.

class Login extends Controller { 

    function __construct() { 
      parent::Controller(); 
      $this->load->model('user_m'); 
    } 

    function json_login() { 
     $user = $this->user_m->get_user($_POST['username']); 
     if($user->password == md5($_POST['password'])) { 
      $this->session->set_userdata('username',$user->username); 
      print json_encode($this->user); 
     } 
     else { 
      print json_encode(FALSE); 
     } 
     return; 
    } 

    function logout() { 
     $this->session->destroy(); 
     redirect('/theloginpage'); 
    } 
} 

이 같은 것을 일할 수있는 자바 스크립트 AJAX 호출을 위해 jQuery를 사용하는 가정 다음 '사용자 이름이'세션에서 설정되어있는 경우

$('#login_form').submit(function(event) { 
    event.preventDefault(); 
    $.ajax({ 
     type:"POST", 
     data:$(this).serialize(), 
     dataType:"json", 
     url:"/login/json_login", 
     success: function(data) { 
      if(data['username'] != null) { 
       $(this).append('<p>You are now logged in</p>'); 
       reload_table_data(); 
      } 
      else if(data == flase){ 
       $(this).append('<p>Fail whale, wrong username or password</p>'); 
      } 

     } 
    }); 

} 

지금 데이터 체크를 표시 할 때.또한 세션을 파괴하는 로그 아웃 메소드를 만드는 것을 잊지 마십시오. 테이블 데이터를 HTML 스 니펫으로 반환하여 DOM 또는 json/xml 루프에 직접 삽입 할 수 있습니다.

로그인 폼은 페이지의 아무 곳에 나 표시 될 수 있으며 대화 상자를 제공 할 jquery, dojo, prototype 등을위한 라이브러리가 많이 있습니다.

관련 문제