web-dev-qa-db-ger.com

Validierung von Frontend-Post-Formularen

OK, hier gab es einige Posts zu Frontend-Posting-Formularen. Ich habe sie alle gelesen, was mich dahin brachte, wo ich bin. Jetzt hat jedes Formular, auf das ich stoße, eine Form der Validierung, die nach einem Wert für die Felder zu suchen scheint, die Sie erforderlich machen möchten. Ich habe sie ausprobiert und kann nichts zum Arbeiten bringen. Ich kann einfach keine Felder ausfüllen. Alles andere an der Form ist perfekt. Ich würde aber gerne meine Pflichtfelder durchsetzen (Bonus für entsprechende Fehlermeldungen).

Ich habe versucht, mich auf Google umzuschauen. Ich glaube nicht, dass JS das ist, was ich dafür verwenden möchte. Und jede andere PHP-Validierung kann ich auch nicht zum Laufen bringen. Ich bin mir sicher, dass ich sie irgendwie falsch einbaue.

Hier ist, was ich habe: http://Pastebin.com/rw4c6jZQ (vollständige Vorlagenzeilen 9-19 sollen Validierung sein)

MEIN Verarbeitungsskript am Anfang der Vorlage:

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

Die Form und alles andere können im Pastebin gesehen werden, um alles im Kontext zu sehen. Vielen Dank!

2
Rev. Voodoo

Die beste Methode zur Formularüberprüfung ist eine Kombination aus JavaScript und PHP.

Der Grund, warum Sie eine JavaScript-Überprüfung durchführen möchten, besteht darin, den Benutzern die Möglichkeit zu geben, ihre Fehler zu korrigieren, ohne das Formular abschicken zu müssen. Außerdem werden zufällige Fehler unterbunden. Sie sollten auch die Validierung im Back-End sicherstellen, falls JavaScript deaktiviert ist.

In jedem Fall solltedesinfizierenIhre Daten Teil dieses Prozesses sein. Verwenden Sie eine dieser WordPress-Funktionen, um Ihnen dabei zu helfen: Datenüberprüfung .

Für die JavaScript-Validierung empfehle ich das Plugin jQuery Validation . Es ist sehr einfach zu implementieren und anzupassen.

Für Ihre PHP -Validierung können Sie Folgendes hinzufügen, um nach leeren Werten zu suchen: $_POST['title'] != ''

0
Matthew Muro

ich denke, der richtige Weg via PHP sind die esc_attr * -Funktionen von WordPress und alle Funktionen in dieser Datei: wp-includes/formatt ing.php

Nutzen Sie auch die Möglichkeiten von PHP: filter_var

0
bueltge