Я разработал контактную форму на чистом PHP и HTML. Я хочу вставить входные значения в базу данных с помощью AJAX. Вот мой код Javascript/jQuery:
var email = jQuery("#email").val();
var data = {
'email': email
}
jQuery.ajax({
type: "POST",
url: "http://mywebsitedomain.com/wp-content/themes/mytheme/contactform.php",
dataType: "json",
data: data,
success : function(data) {
// do something
}
});
И моя контактная форма.php:
$date = date('Y-m-d H:i:s');
global $wpdb;
$wpdb->insert('myTableName', array(
'email' => $_POST["email"],
'date' => $date,
));
Мой код работает хорошо. Мой вопрос в том, как правильно это сделать? Потому что я считаю плохой идеей создавать файл .php внутри темы WordPress и использовать его только для вставки данных в базу данных. Я думаю, что у него проблемы с безопасностью, и пользователи могут видеть URL-адрес моего скрипта (http:// mywebsitedomain.com/wp-content/themes/mytheme/contactform.php), который используется в моем файле javascript для использования ajax.
У вас есть лучшие способы сделать это?
1 ответ
Создайте функцию для вставки данных, а также поставьте сценарий в очередь для вызова ajax и передайте его в URL-адресе. например:
function mytheme_admin_scripts() {
wp_enqueue_script( 'ajax-script', get_stylesheet_directory_uri().'/admin_script.js');
wp_localize_script( 'ajax-script', 'my_ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ) ) );
}
add_action( 'wp_enqueue_scripts','mytheme_admin_scripts' );
Поставьте в очередь свой файл js, в котором вы написали свой вызов ajax, и передайте my_ajax_object.ajx_url в своем URL-адресе ajax.
jQuery.ajax({
type : "POST",
url : my_ajax_object.ajax_url,
data : data,
dataType: "json",
cache: false,
success : function(data) {
// do something
}
});
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.