Zastanawiam się, jaka jest preferowana metoda obsługi wywołań AJAX. Czy należy używać tego samego pliku php wtyczki do przetwarzania POST, czy osobnego? Który jest czystszy lub bezpieczniejszy?
źródło
Zastanawiam się, jaka jest preferowana metoda obsługi wywołań AJAX. Czy należy używać tego samego pliku php wtyczki do przetwarzania POST, czy osobnego? Który jest czystszy lub bezpieczniejszy?
„bezpieczniejszym i czystszym” sposobem byłoby użycie admin-ajax.php, który jest dostarczany z wordpress i wp_ajax
hook, aby wywołać funkcję przetwarzania z pliku wtyczki i użyć wp-nonce do sprawdzenia integralności połączenia.
na przykład:
Twoje wywołanie JQuery ajax byłoby
<script type="text/javascript" >
jQuery(document).ready(function($) {
var data = {
action: 'ACTION_NAME',
Whatever: '1234',
_ajax_nonce: '<?php echo wp_create_nonce( 'my_ajax_nonce' ); ?>'
};
// since 2.8 ajaxurl is always defined in the admin header and points to admin-ajax.php
// If you need it on a public facing page, uncomment the following line:
// var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
jQuery.post(ajaxurl, data, function(response) {
alert('Got this from the server: ' + response);
});
});
</script>
następnie dodaj plik wtyczki
//if you want only logged in users to access this function use this hook
add_action('wp_ajax_ACTION_NAME', 'my_AJAX_processing_function');
//if you want none logged in users to access this function use this hook
add_action('wp_ajax_nopriv_ACTION_NAME', 'my_AJAX_processing_function');
* jeśli chcesz, aby zalogowani użytkownicy i goście mieli dostęp do twojej funkcji przez ajax, dodaj oba zaczepy. * ACTION_NAME musi być zgodny z wartością akcji w Twoim POST ajax.
następnie w swojej funkcji upewnij się, że żądanie pochodzi z prawidłowego źródła
function my_AJAX_processing_function(){
check_ajax_referer('my_ajax_nonce');
//do stuff here...
}
Mam nadzieję że to pomoże