2009-11-22 3 views
20

잠깐 동안 Zend를 사용한 후에 CodeIgniter를 사용하기 시작했습니다. 내 새 사이트에는 Ajax를 통해 등록하는 기능이 있습니다. 젠드에서 내 사이트에서 그러므로 들어오는 POST는 AJAX를 통해 경우이 확인하는 데 사용하고, 수 : 같은 일을 CodeIgniter의 코드 조각은codeigniter에서 ajax 호출로 게시물이 왔는지 알 수있는 방법은 무엇입니까?

if(!$this->getRequest()->isXMLHttpRequest()) 

있습니까? AJAX 호출인지 확인하지 않으면 누군가 내 컨트롤러에 게시 할 양식을 만들어 이론적으로 원하는 것을 등록 할 수 있습니다.

감사합니다.

+0

를 사용하여 확인할 수 있습니다, 그것은 당신의 핸들러가 AJAX 여부 차이가 없습니다. POST 요청을 제어하기 위해 CAPTCHAs 및 서버 측 인증 (예 : 양식이 제출 된 양식에 숨겨진 변수 전달)을 사용하십시오. –

+0

그들은 단지 변수를보고 자신을 포함시키기 위해 방화 녀를 사용할 수 없습니까? – Ethan

+0

숨겨진 변수에 대해 질문하는 경우 올바른 것입니다. Firebug, cURL 또는 수백 가지 다른 방법을 사용하여 원하는 POST 데이터를 전달할 수 있습니다. 사용자가 원하는 것은 사용자/세션/시간에 고유하고 데이터베이스에 저장된 일부 숨겨진 데이터를 사용자에게 보내는 것입니다. 양식이 제출되면 데이터베이스에 전달 된 숨겨진 필드를 확인할 수 있습니다. –

답변

20
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')) {} 

하지만 codeigniter를 사용하고 있으므로 입력 클래스를 사용하는 것이 좋습니다. 아래에서 어떻게하는지보십시오.

if($this->input->is_ajax_request()){ 
    //Execute Your Code 
} 
+0

귀하의 솔루션은 정확하지만, CodeIgniter에서 이루어지는 것과 다릅니다. –

35

CodeIgniter 2.0 이후로, ajax 요청을 확인하는 더 쉬운 방법이 있습니다.

사용 : $ this-> input-> is_ajax_request();

이 문서 : 당신이 누군가가 다른 웹 사이트에서 뭔가를 게시 염려되는 경우

관련 문제