Bonjour a tous.
Je debute avec le php, j'aimerais juste demandé si y a une possibilité de controller la saisie de champ d'un formulaire avec du code php pour eviter a ce que une formulaire soit valider ou envoi de valeur null a la base de données.
Prénons pour car suivant :
<!doctype html>
<html>
<body>
<form method="post" action="traitementpage.php" name="pagetraite">
<p>Nom :<input type="text" name="nom_membre" value="tapez votre nom"/></p>
<p>Commentaires :<textarea type="text" name="commentaires_membre" value="tapez votre commentaire "/></p>
<p><input type="submit" name="submit" value="Valider"/></p>
</form>
</body>
</html>


je veux a ce que en cliquer sur le bouton qu'il d'abord control des champ de saisie au cas l'utilisateur na rien saisie que le formulaire n'envoie pas valeurs vide a la base de données.
Ce ça ce que je voulais demander est ce y a une possibilité de le faire?
Bonjour Bims_Gloire,

En Php cela n'est pas possible. Cela se fait en Javascript uniquement.

La raison est que Php est un langage exécuté côté serveur. Pendant une saisie utilisateur et avant qu'il n'ai envoyé ses données, le Php n'intervient plus. Il intervient avant pour générer la page, il intervient après pour vérifier les données transmises et agir en conséquence mais pas du tout pendant.

Je JavaScript quand à lui est un langage qui s'exécute côté client. C'est-à-dire que c'est le navigateur du visiteur qui exécute le code JavaScript.

Après, il existe une possibilité parallèle aux vérification php et javascript (qui sont complémentaires) est de tirer partie des fonctionnalités du HTML5 en renseignant aux champs de saisie un attribut PATTERN qui permet d'indiquer les caractères utilisables, le nombre mini/maxi attendu etc.

Par exemple
<input type="text" pattern="[0-9]{4,}">
signifie que la validation n'aura lieu que si la saisie est composée d'au moins 4 chiffres qui seront compris entre 0 et 9.

La validation en Html5 intervient aussi en fonction de l'attribut TYPE de l'élément INPUT. Par exemple pour un input de type mail, le navigateur va vérifier que le format du champs est au format RFC-je-ne-sais-plus-combien avant validation.


Idéalement on utilise la vérification :
- en html5 pour les navigateurs "récents"
- en Javascript car si activé ça ne mange pas de pain et évite un envoi de donnée invalide
- et en php, indispensable de toute façon pour contrôler les données entrantes (ou tout autre langage côté serveur).
Modifié par Greg_Lumiere (22 Feb 2016 - 11:29)
Modérateur
Greg_Lumiere a écrit :

En Php cela n'est pas possible. Cela se fait en Javascript uniquement.


-10000000....
C'est quoi cette énorme ineptie ??? Smiley eek Ta façon de faire est à proscrire puisque c'est le serveur qui doit avoir le dernier mot !.

Bims_Gloire a écrit :

Je debute avec le php, j'aimerais juste demandé si y a une possibilité de controller la saisie de champ d'un formulaire avec du code php pour eviter a ce que une formulaire soit valider ou envoi de valeur null a la base de données.
....


Règle N°1 en sécurité informatique : ne jamais faire confiance aux données saisies dans un formulaire (y compris les tiennes !)

Règle N°2 : Toujours filtrer via un langage serveur tel que le php, Python, Java, etc. les données qui seront stockées dans une base ou autre. Plus les données seront en adéquation avec la structure de ta/tes tables, mieux ce sera.

Je t'invite à parcourir phpdebutant ou le site du zéro afin que tu trouves chaussures à ton pied.
Modifié par niuxe (23 Feb 2016 - 17:12)
Bonjour,
niuxe a écrit :
C'est quoi cette énorme ineptie ??? Smiley eek Ta façon de faire est à proscrire puisque c'est le serveur qui doit avoir le dernier mot !.

Greg n'a pas dit qu'il ne fallait pas tester les valeurs côté serveurs, mais je suis d'accord avec lui, on ne peut pas empêcher l'envoi du formulaire en PHP, c'est bien avec JS.
Modérateur
Bonjour,

Je suis d'accord avec Greg_Lumiere et SolidSnake : on teste côté client (en HTML5/javascript par exemple) avant même que le formulaire soit envoyé la "conformité" des données saisies par l'utilisateur (en supposant qu'il essaie juste de bien faire).

Et effectivement cela n'empêche en rien de faire aussi des tests côté serveur une fois le formulaire envoyé.

Je suis ensuite d'accord avec niuxe : on teste côté serveur (en php par exemple) que les données envoyées ne présentent pas de risques de sécurité (en supposant qu'un utilisateur essaie de tricher).

La finalité des tests côté client et côté serveur est donc différente (conformité versus sécurité).

EDIT : en fait, on est tous d'accord ! Smiley cligne

Amicalement,
Modifié par parsimonhi (24 Feb 2016 - 09:01)
Modérateur
Quelques de méconnaissances sur le sujet :

1. La vérification côté client permet :
1.1 filtrer les données saisies
1.2 evite les X requêtes serveurs
1.3 n'est pas du tout obligatoire puisqu'on peut aisément tromper le navigateur (ex : je vais en console et je supprimer manuellement l'attribut "required/pattern/etc." et soumettre le formulaire

2. la vérification côté serveur permet :
2.1 filtrer plus efficacement les données
2.2 obligatoire puisque c'est elle qui va rendre intègre les données externes
Modérateur
Bonjour,

D'accord à 100%.

EDIT : j'aurais quand même laissé l'argument du 1.2 de côté.

Amicalement,
Modifié par parsimonhi (24 Feb 2016 - 10:05)
Bonjour a tous.
Amicalement je vous remercie tous pour les reponses.
En partant de :
Greglumiere, Niuxe, Solidnake, Parsimonhi a vous tous un grand merci. Smiley biggrin
Pour moi il vaut mieux que tu gère des deux cotés !

1er niveau de contrôle directement avec le js, via une regex par exemple - Tester la présence de la donnée
2eme niveau de contrôle via le php, contrôle plus approfondie sur la donnée reçu - Tester la qualité de la donnée