2011-10-10 3 views
0

WordPress 플러그인에서 nonce를 사용하려고합니다. 나는 nonce를 사용하기를 원하는 양식을 가지고있다. PHP에서WordPress Plugin의 Ajax와 함께 Nonce 사용

:

jQuery.post(the_ajax_script.ajaxurl, {my_nonce : the_ajax_script.my_nonce}, jQuery("#theForm").serialize() + "&maxLat="+ csf_dcscore_crime_map_bounds[0] + "&maxLong="+ csf_dcscore_crime_map_bounds[1] + "&minLat="+ csf_dcscore_crime_map_bounds[2] + "&minLong="+ csf_dcscore_crime_map_bounds[3], 
        function(response_from_the_action_function){ 
         jQuery("#response_area").html(response_from_the_action_function); 
        }); 

내가 jQuery를 올바르게 비표를 게시 오전 : JQuery와 파일에서

function csf_enqueue() { 

//I have other scripts enqueued in htis function 
wp_enqueue_script('my-ajax-handle', plugin_dir_url(__FILE__).'file-path', array('jquery', 'jquery-ui-core', 'jquery-ui-datepicker', 'google-maps')); 

$data = array(
    'ajax_url' => admin_url('admin-ajax.php'), 
    'my_nonce' => wp_create_nonce('myajax-nonce') 
); 

wp_localize_script('my-ajax-handle', 'the_ajax_script', $data); 

} 

add_action('wp_enqueue_scripts', 'csf_enqueue'); 
add_action('wp_ajax_the_ajax_hook', 'the_action_function'); 
add_action('wp_ajax_nopriv_the_ajax_hook', 'the_action_function'); 

? PHP에서

:

function the_action_function() { 
    if(! wp_verfiy_nonce($nonce, 'myajax-nonce')) die ('Busted!'); 
//function continues 

어떤 제안이? nonce 관련 모든 코드를 제거하면 모든 것이 잘 동작합니다. 왜 작동하지 않는지에 대한 아이디어가 있습니까? 아니면 어떻게 디버깅 할 수 있습니까? 고맙습니다!

감사합니다.

답변

4

두 가지가 잘못되었습니다.

jQuery post 메서드를 통해 데이터를 보내면 수행 한 것처럼 하나의 개체 + 하나의 쿼리 문자열을 보낼 수 없습니다. 대신 쿼리 문자열 형식이나 개체 형식 데이터를 보내야합니다. 귀하의 편의를 위해 쿼리 문자열 형식을 사용하겠습니다. 그래서 우편 번호는 다음과 같아야합니다.

jQuery.post(the_ajax_script.ajaxurl, 
      jQuery("#theForm").serialize() + 
        "&maxLat="+ csf_dcscore_crime_map_bounds[0] + 
        "&maxLong="+ csf_dcscore_crime_map_bounds[1] + 
        "&minLat="+ csf_dcscore_crime_map_bounds[2] + 
        "&minLong="+ csf_dcscore_crime_map_bounds[3] + 
        "&my_nonce="+ the_ajax_script.my_nonce, 
      function(response_from_the_action_function) { 
       jQuery("#response_area") 
        .html(response_from_the_action_function); 
      }); 

그러면 매개 변수 my_nonce에 nonce가 전송됩니다. 이제 서버 측 당신은 당신의 도움을 주셔서 감사합니다, 당신에게 더 나은 :

+0

안녕 sbrajesh 도움이 될 것입니다

if(! wp_verify_nonce($_POST['my_nonce'],'myajax-nonce')) die ('Busted!'); 

jQuery.post의 문서에서의 모양과 wp_verfiy_nonce

if(! wp_verify_nonce($nonce, 'myajax-nonce')) die ('Busted!'); 

을 대체 할 수 있습니다. 내가 제안한 코드를 변경했습니다. 나는 또한 'ajaxurl'에서 밑줄을 제거했다. 불행히도 "치명적인 오류 : 정의되지 않은 함수 wp_verfiy_nonce()"를 호출합니다. 어떤 이유로 든 함수가 시간에로드되지 않은 것처럼 들립니다. 어떤 아이디어? 고맙습니다 ! – Laxmidi

+0

wp_verify_nonce에서 철자가 잘못되었습니다. 잘못된 타이핑. 고맙습니다! – Laxmidi

+0

작동하는지 확인하십시오. 그것은 않으면되지 변화 '$ 데이터 = 배열 ​​( 'ajax_url '=> ADMIN_URL ('관리-ajax.php ') 'my_nonce '=> wp_create_nonce ('myajax-난스 ') )' '$ 데이터 = 배열 ​​( 'ajaxurl '=> ADMIN_URL ('관리-ajax.php ') 'my_nonce '=> wp_create_nonce ('myajax-난스 ') )하는 단계; ' 또는 내 코드에서'ajaxurl'을 데이터에서와 같이'ajax_url'로 대체하십시오. – sbrajesh

관련 문제