Я разработал контактную форму на чистом 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.

У вас есть лучшие способы сделать это?

0
S J 21 Мар 2020 в 03:45

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
        }
        });
0
Drashti Korat 21 Мар 2020 в 06:13