web-dev-qa-db-fra.com

Frontend Post Form Validation

OK, il y a eu plusieurs articles sur les formulaires de publication frontaux. Je les ai tous lus, ce qui m'a amené là où je suis. Maintenant, chaque formulaire que je rencontre a une forme de validation qui semble vérifier la valeur des champs que vous souhaitez rendre obligatoires. Je les ai essayés et je ne peux rien faire fonctionner. Je ne peux tout simplement pas faire de champs obligatoires. Tout le reste de la forme est parfait. Mais j'aimerais beaucoup imposer mes champs obligatoires (bonus pour les messages d'erreur appropriés).

J'ai essayé de chercher sur Google, je ne pense pas vraiment que JS est ce que je veux utiliser pour cela. Et aucune autre validation php ne semble pas pouvoir fonctionner. Je suis sûr que je les incorpore mal d'une manière ou d'une autre.

Voici ce que j'ai: http://Pastebin.com/rw4c6jZQ (les lignes de modèle complètes 9 à 19 sont supposées être une validation)

Mon script de traitement en haut du modèle:

    <?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'); 

La forme et tout le reste peuvent être vus dans la Pastebin pour tout voir en contexte. Merci beaucoup!

2
Rev. Voodoo

Le meilleur moyen de valider un formulaire consiste à combiner JavaScript et PHP.

La raison pour laquelle vous souhaitez effectuer une validation JavaScript est de donner aux utilisateurs une chance de corriger leurs erreurs sans soumettre le formulaire. De plus, cela évitera les erreurs occasionnelles. Vous voudrez également assurer la validation sur le back-end au cas où JavaScript est désactivé.

Dans les deux cas, la désinfection de vos données devrait faire partie de ce processus. Utilisez l’une de ces fonctions WordPress pour vous y aider: Validation des données .

Pour la validation JavaScript, je recommande le plugin jQuery Validation . C'est super facile à implémenter et à personnaliser.

En ce qui concerne votre validation PHP, vous pouvez essayer de l'ajouter pour vérifier les valeurs vides: $_POST['title'] != ''

0
Matthew Muro

je pense que le bon moyen via php est les fonctions esc_attr * de WordPress et toutes les fonctions de ce fichier: wp-includes/formatt ing.php

Utilisez aussi les possibilités de PHP: filter_var

0
bueltge