Проверка формы фронта
-
16-10-2019 - |
Вопрос
Хорошо, здесь было несколько сообщений о формах публикации фронта. Я прочитал их все, что привело меня туда, где я нахожусь. Теперь каждая форма, с которой я сталкиваюсь, имеет какую -то форму проверки, которая, кажется, проверяет значение для требуемых поля. Я пробовал их, и я не могу заставить ничего работать. Я просто не могу сделать никаких обязательств. Все остальное в форме идеально. Но я хотел бы обеспечить соблюдение моих необходимых полей (бонус за соответствующие сообщения об ошибках).
Я пытался посмотреть на Google, я не думаю, что JS - это то, что я хочу использовать для этого. И любая другая проверка PHP, я не могу сделать работу. Я уверен, что как -то включаю их неправильно.
Вот что у меня есть: http://pastebin.com/rw4c6jzq (Полные линии шаблона 9-19 должны быть проверены)
Мой сценарий обработки в шаблоне:
<?php
if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == "new_post") {
// Do some minor form validation to make sure there is content
if (isset ($_POST['title'])) {
$title = $_POST['title'];
} else {
echo 'Please enter the wine name';
}
if (isset ($_POST['description'])) {
$description = $_POST['description'];
} else {
echo 'Please enter some notes';
}
$tags = $_POST['post_tags'];
$winerating = $_POST['winerating'];
// ADD THE FORM INPUT TO $new_post ARRAY
$new_post = array(
'post_title' => $title,
'post_content' => $description,
'post_category' => array($_POST['cat']), // Usable for custom taxonomies too
'tags_input' => array($tags),
'post_status' => 'publish', // Choose: publish, preview, future, draft, etc.
'post_type' => 'post', //'post',page' or use a custom post type if you want to
'winerating' => $winerating
);
//SAVE THE POST
$pid = wp_insert_post($new_post);
//KEEPS OUR COMMA SEPARATED TAGS AS INDIVIDUAL
wp_set_post_tags($pid, $_POST['post_tags']);
//REDIRECT TO THE NEW POST ON SAVE
$link = get_permalink( $pid );
wp_redirect( $link );
//ADD OUR CUSTOM FIELDS
add_post_meta($pid, 'rating', $winerating, true);
//INSERT OUR MEDIA ATTACHMENTS
if ($_FILES) {
foreach ($_FILES as $file => $array) {
$newupload = insert_attachment($file,$pid);
// $newupload returns the attachment id of the file that
// was just uploaded. Do whatever you want with that now.
}
} // END THE IF STATEMENT FOR FILES
} // END THE IF STATEMENT THAT STARTED THE WHOLE FORM
//POST THE POST YO
do_action('wp_insert_post', 'wp_insert_post');
Форма и все остальное можно увидеть в Pastebin, чтобы увидеть все это в контексте. Спасибо большое!
Решение
Лучший способ сделать проверку формы - это комбинация JavaScript и PHP.
Причина, по которой вы хотите выполнить проверку JavaScript, заключается в том, чтобы дать пользователям возможность исправить свои ошибки без отправки формы. Плюс, это остановит любые случайные ошибки. Вы также захотите обеспечить проверку на заднем плане в случае отключения JavaScript.
Так или иначе, дезинфекция Ваши данные должны быть частью этого процесса. Используйте любую из этих функций WordPress, чтобы помочь вам там: Проверка данных.
Для проверки JavaScript я рекомендую Плагин валидации jQuery. Анкет Это очень легко внедрить и настроить.
Что касается вашей проверки PHP, вы можете попробовать добавить это, чтобы проверить на наличие пустых значений: $_POST['title'] != ''
Другие советы
Я думаю, что правильным путем через PHP является функции ESC_ATTR* WordPress и все функции в этом файле: wp-includes/formatting.php
Также используйте возможности от PHP: filter_var