2010-08-06 4 views
1

J'ai effectué une validation complète côté client grâce à l'aide de jQuery. Maintenant, à la validation côté serveur, si je trouve que certains champs ne sont pas valides, puis-je simplement retourner une erreur au client et sans message utile?PHP - Validation côté serveur - Est-ce une bonne méthode?

Mon hypothèse est que l'utilisateur doit activer JavaScript pour accéder à ma page Web. L'utilisateur ne verra pas le formulaire si le navigateur Web a désactivé le JavaScript. Je peux simplement utiliser noscript pour le faire. Si elles soumettent l'information à travers le formulaire que j'ai conçu, il ne devrait pas y avoir de champ invalide soumis au serveur. Ainsi, si je trouve un champ invalide côté serveur, alors mon formulaire est corrompu par un pirate plutôt que par des utilisateurs réguliers.

Est-ce que ma compréhension a du sens pour vous? Le message suivant est ajouté en fonction des commentaires de nombreux experts ici> Je suis désolé de ne pas avoir mentionné clairement ma question ici. Je fais toujours la validation côté serveur b/c Je ne devrais faire confiance à aucune entrée d'utilisateur.

Cependant, mon point ici est que si je devrais ou non passer le message d'erreur côté serveur à l'utilisateur. Puisque, si un utilisateur utilise mon formulaire et soumet le formulaire au serveur PHP, il ne devrait jamais y avoir un champ invalide. Si une telle chose se produit, alors je suppose que certains hackers jouent avec mon PHP. Donc je voudrais les ignorer.

La principale raison pour laquelle j'essaie d'éviter de renvoyer les messages d'erreur côté serveur au client est que je n'ai pas trouvé de meilleure solution pour le faire. J'ai posté plusieurs questions connexes ici sans bonne suggestion ou d'exemples.

< --- FIN ---->

Merci

Répondre

1

Dans votre situation, il semble que vous puissiez être à peu près certain que les utilisateurs valides ne rencontreront pas d'erreurs de validation PHP. Donc, vous pouvez répondre avec des messages d'erreur Slacker. Vous devriez vraiment donner une indication décente de ce qui s'est mal passé. Si vous ne le faites pas, vous le regretterez un jour lorsque le javascript échoue pour une raison quelconque (comme vous l'avez modifié et que vous n'avez pas testé suffisamment bien).

+0

+1 pour la contrepartie pour les utilisateurs. –

+0

Je ne vous ai pas donné le -1, mais quelqu'un vous l'a donné parce que si c'est en js alors c'est trivial à contourner. – rook

+0

Je pense que l'OP écrit la validation côté serveur, et que leur question concerne la qualité des messages d'erreur générés par le PHP. Ma réponse suppose que la validation de PHP sera complète et ne traitera que de la qualité des messages d'erreur. –

1

validation côté client est uniquement pour les utilisateurs qui utilisent réellement votre site. Spam-bots, etc peuvent facilement l'omettre, donc il devrait toujours y avoir une validation sur le site du serveur. Lorsque l'erreur de validation est survenue, un message doit être renvoyé à l'utilisateur, qui informe de ce qui ne va pas.

N'utilisez jamais que la validation côté client. Cela peut être seulement un extras.

+1

Je ne pense pas que l'OP essaie d'éviter la validation côté serveur, juste en envoyant un message d'erreur utile. – mcrumley

+0

Bonjour mcrumley, Il semble que vous êtes la seule personne qui comprend ma question originale. Merci – q0987

1

La validation du serveur est indispensable pour chaque application Web car il est très facile d'envoyer de faux en-têtes. Par exemple, votre javascript ne permet pas d'entrer des lettres dans le formulaire, mais je peux simplement envoyer de faux en-têtes contenant des lettres, des chiffres, etc.

+0

S'il vous plaît voir ma question mise à jour. merci – q0987

0

Je renvoie toujours un message d'erreur utile. Vous aurez probablement besoin d'un moyen pour le serveur de signaler d'autres conditions d'erreur (erreurs de base de données, etc.).

+0

Pouvez-vous me suggérer comment le faire de façon décente? Merci – q0987

+0

Je ne sais pas comment votre application est configurée, donc je ne peux pas donner une recommandation spécifique, mais le plus simple est de lancer une exception et de l'attraper dans un gestionnaire d'exception global. Ensuite, il suffit de mettre le message d'erreur dans un modèle de base. Je définis généralement le code de réponse HTTP sur "403 Interdit" pour les erreurs de validation d'entrée. – mcrumley

2

Vous devriez toujours avoir une validation côté serveur.

Je vous suggère de jeter un oeil à:

La validation côté client est toujours une bonne idée et vous devriez y aller mais validation côté serveur devrait être un doit et bonne pratique de codage.

+0

Bonjour Sarfraz, Je pense que je n'ai pas précisé ma question clairement. Je DOIT effectuer la validation côté serveur pour mon application. Cependant, je ne voudrais pas faire la rétroaction interactive avec l'utilisateur s'il y a une erreur côté serveur. Depuis, l'utilisateur régulier qui accède au PHP via le formulaire dédié ne doit jamais soumettre un formulaire invalide. Merci – q0987

+0

@ q0987: Si vous pensez qu'ils ne soumettront jamais un formulaire invalide alors il ne fait aucun doute que vous ne pouvez jamais être sûr à 100%, vous devriez utiliser la validation côté serveur dans vos projets futurs où bousculer/désactiver/Les méchants peuvent entrer beaucoup de déchets dans vos formulaires. – Sarfraz

1

La validation de n'importe quoi sur le client est seulement utile pour aider vos utilisateurs à attraper des erreurs comme "oh, vous ne nous avez pas donné un nom de famille, s'il vous plaît allez le remplir". Quelqu'un comme moi peut simplement envoyer n'importe quelle demande que je désire à votre serveur, être capable de traiter avec, ou être prêt à traiter avec une base de données potentiellement corrompue et un CD-Rom des numéros de carte de crédit de votre client flottant en Estonie . Avoir le serveur répondre avec le formulaire dépend de la façon dont votre structure de votre code, par exemple, si c'est ajax ou autre chose. Mais signaler le problème est toujours agréable à avoir.

+0

Bonjour user257493, C'est bien d'avoir. Mais j'aimerais savoir quelques bonnes techniques pour le faire. Pour le côté client, j'utilise jQuery Validation Plugin et rend la vie beaucoup plus facile pour moi. Mais pour le côté serveur, je ne connais pas de meilleure solution qui puisse transmettre les messages d'erreur à l'utilisateur de manière décente. merci – q0987

+0

Comme je l'ai dit, cela dépend de la façon dont vous servez vos pages, comme si vous envoyez juste des données ajax, allez-vous aux pages .php?Il y a un tas de façons. Je sais que certains cadres de MVC traitent de ce genre de choses. – Incognito

Questions connexes