Empêcher l'envoi d'un formulaire vide sans utiliser JS

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Répondre
Nerva
Lézard à collerette
Messages : 219
Inscription : 01 oct. 2004, 15:19

Empêcher l'envoi d'un formulaire vide sans utiliser JS

Message par Nerva »

Bonjour.

J'utilise le script suivant pour interdire l'envoi d'un formulaire (en PHP et MySql) vide :

Code : Tout sélectionner

<script>
function test_form(messageID, expediteurID)
{
	if(messageID.value=="")
   		{
			alert('Vous devez écrire un message !')
       		messageID.focus();return false 
		}
	if(expediteurID.value=="")
		{
			alert('Vous devez taper un pseudo !')
       		expediteurID.focus();return false
		}
	return true
}
</script>
Le problème, c'est qu'il suffit de désactiver l'option JavaScript pour pouvoir l'envoyer quand même !
Quel autre méthode simple d'interdiction est disponible ?

Merci.
jv2759
Tyrannosaurus Rex
Messages : 4161
Inscription : 12 févr. 2004, 14:29

Message par jv2759 »

Ce n'est pas possible, pour la simple et bonne résont que pour envoyer les formulaire on passe par cgi qui n'est en fait que des ajout au html. Donc le systéme n'est pas capable de connetre la logique de la pages elle même...

La seul chose que tu peux faire c'est interdire de traiter un formulaire vide mais pas empecher qu'il soit envoyer...
Inscrit sur la liste des abonner absent...
golemboy
Gecko
Messages : 52
Inscription : 18 nov. 2003, 12:50

Message par golemboy »

je confirme ce qu'a dit jv2759 pour le formulaire vide, par contre tu peux recharger la page du formulaire s'il est renvoyé vide avec un petit message d'erreur (pas une alerte).
je te conseil de lire l'article d'openweb sur la validation des formulaires
JulienA

Message par JulienA »

Pour empêcher qu'un formulaire soit envoyé si l'utilisateur a desactivé le javascript, c'est très simple. Ton formulaire :

Code : Tout sélectionner

<form id="formulaire" action="javascript:void(0)" method="post">
...
Ton script de vérification :

Code : Tout sélectionner

<script>
function test_form(messageID, expediteurID)
{
   if(messageID.value=="")
         {
         alert('Vous devez écrire un message !')
             messageID.focus();return false
      }
   if(expediteurID.value=="")
      {
         alert('Vous devez taper un pseudo !')
             expediteurID.focus();return false
      }
   form=document.getElementById("formulaire");
   form.setAttribute("action","l'url de traitement");
   form.submit();
}
</script>
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Ah non, non NON !!!!! Pas ça !!! :x :x :evil:

Comment quelqu'un qui n'a pas le javascript peut-il l'envoyer ? Il ne le peut pas, ce qui est encore pire que la situation précdente. C'est absolument inadmissible !
Un peu de lecture ne te ferait pas de mal : http://openweb.eu.org/articles/validation_formulaire/ et j'espère que tu n'as pas trop de formulaires dans ce style (ou alors tu va aller corriger ça immédiatement)


Le traitement des données doit se faire côté serveur et le javascript ne doit être considéré que comme un petit plus pour éviter l'envoi du formulaire si on sait qu'il n'est pas bon et que ça permet de gagner du temps. En aucun cas il ne doit dépendre de javascript !
JulienA

Message par JulienA »

Tu as tout à fait raison. J'aurais du préciser que ce n'était pas recommandé. Je voulais juste démontrer que c'était... possible :roll:
Gasp
Salamandre
Messages : 22
Inscription : 09 mai 2005, 00:58

Message par Gasp »

et en PHP avec un isset, ça devrait être possible non ?

Code : Tout sélectionner

<?
if (isset ($_POST['pseudo']))
{

   if ($_POST['pseudo'] != NULL)
     {
     ... exécution de l'action ...
     }

}
?>
Ou alors je me trompe complètement de problème (ce qui est tout à fait possible, je débute...)
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Il y a un problème avec les isset c'est que parfois ils sont remplis s'il y avait un champ dans le formulaire envoyé, ainsi $_POST['pseudo']="" est "set" même s'il est vide. Par contre tu peux faire une petite règle du style

Code : Tout sélectionner

if $_POST['pseudo']!="" {...}
Je dis parfois parce que j'ai l'impression que ça dépend, des fois les champs sont vides d'autres pas, j'ai jamais trop compris :|
Gasp
Salamandre
Messages : 22
Inscription : 09 mai 2005, 00:58

Message par Gasp »

c'est pour ça qu'il faut rajouter :

Code : Tout sélectionner

if ($_POST['pseudo'] != NULL)
Et pour être sur on peut rajouter un isset sur $_POST['message'] et rajouter $_POST['message'] != NULL

normalement ça fonctionne...
olab
Varan
Messages : 1254
Inscription : 30 juil. 2003, 20:20

Message par olab »

Plutôt que d'utiliser deux comparaisons, tu peux tout simplement utiliser

Code : Tout sélectionner

if (!empty($trucmuche)) {
...
}
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 1 invité