Grâce à divers articles, j'ai réussi à mettre en place un formulaire de soumission. Après environ 24 heures de peaufinage, tout a finalement fonctionné, y compris une redirection vers une page "succès" après la soumission, mais je ne sais pas quoi faire avec le nonce.
Voici la page de formulaire: http://Pastebin.com/YWyXL3jY
Et voici la page de réussite: http://Pastebin.com/3Usu0Pt6
Ce sont tous les deux des modèles de page personnalisés (je sais que le formatage est un peu partout pour le moment, car différentes parties provenaient de sources différentes, et je ne pense pas que je vais utiliser la fonctionnalité de téléchargement de fichier, car je préfère utiliser un plugin pour une meilleure sécurité).
Le nonce doit-il être traité avant que l'utilisateur ne soit redirigé vers la page de réussite? Je n'ai aucune expérience avec nonce et je suis un codeur php 'copier-coller', alors soyez gentil!
Un énorme merci pour tout conseil que vous pouvez donner :)
Utilisez le code suivant à l'intérieur, juste avant tag sur votre code frontal.
wp_nonce_field('name_of_your_action', 'name_of_your_nonce_field');
Le code ci-dessus générera deux entrées cachées dans votre balise de formulaire. Vous pouvez maintenant vérifier votre compte dans le backend où vous allez traiter votre formulaire. Utilisez le code suivant pour vérifier le nonce que vous venez de créer ci-dessus.
if(wp_verify_nonce($_REQUEST['name_of_your_nonce_field'], 'name_of_your_action')){
// Nonce is matched and valid. do whatever you want now.
} else {
// Invalid nonce. you can throw an error here.
}
Une remarque: voyez attentivement comment " name_of_your_action " est le premier argument de ' wp_nonce_field () ' et qu'il est le second argument de ' wp_verify_nonce () ' une fonction. :) Donc, ne l'utilisez pas comme premier argument dans les deux fonctions. Beaucoup de gens font cette erreur alors je voulais mentionner.
Pour ajouter un nonce à un formulaire, vous pouvez utiliser la fonction suivante:
wp_nonce_field($action, $name, $referer, $echo)
Exemple:
L'extrémité avant:
<form action="" method="post">
<?php wp_nonce_field('my_delete_action'); ?>
<input type="hidden" name="id" value=" <?php echo $id; ?> " />
<input type="text" name="rec_name" value=" <?php echo $name; ?> " />
<input type="submit" value="Delete" />
</form>
Backend:
$retrieved_nonce = $_REQUEST['_wpnonce'];
if (!wp_verify_nonce($retrieved_nonce, 'delete_my_action' ) ) die( 'Failed security check' );
Source: https://www.tipsandtricks-hq.com/introduction-to-wordpress-nonces-5357
Utilisez ceci pour naunce et vérification.
wp_nonce_field('test_action', 'submit_post');
Cela générera le champ de nom et vous pourrez vérifier avec le code ci-dessous.
if(wp_verify_nonce($_REQUEST['test_action'], 'submit_post')){
/// do your work
}else{
/// throw an error
}