Page 1 sur 1
Mot de Passe dans un Formulaire.
Posté : 06 oct. 2006, 00:10
par Forg
Bonjour !
Je viens vers vous pour une petite aide, si possible.
Voilà, j'ai installé un formulaire sur mon site, qui permet aux visiteurs de référencer un objet bien précis dans la base de donnée ( objet qui comporte une référence )
Mais j'aimerais que seuls les visiteurs qui possèdent les objets ( et qui donc connaissent la référence de ceux-ci ) puissent remplir le formulaire et le valider.
Le truc un peu barbant, c'est que n'importe qui peut s'amuser a remplir le formulaire, a le valider, et ducoup moi, ca me fausse mes données, ...
Un peu comme un anti-spam, sauf que, la référence est fixe, pas aléatoire.
Quel code ou quelle requête utiliser ?
Merci d'avance pour vos réponses !
Posté : 06 oct. 2006, 00:14
par graphistnet
Le plus simple serait d'intégrer une authentification par utilisateur qui te permettrait de trier dés le départ qui peut référencer quoi.
Posté : 06 oct. 2006, 00:24
par Forg
Oui, j'y ai pensé, mais pour le concept auquel le formulaire répond, ce n'est pas compatible... Je pensais a une fonction qui nous dit, " Si tel mot n'est pas tapé dans telle case, alors le formulaire ne sera pas validé ".
Posté : 06 oct. 2006, 02:27
par HanX
ce qui est pas mal utilisé sur le web... c'est mettre les lettres qui sont dans une image générée par contre j'ai aucune idée comment faire
ça se fait sur megaupload.fr
Posté : 06 oct. 2006, 03:10
par albat
Ce procédé, censé protéger des spams des robots, s'appelle
captcha.

Posté : 06 oct. 2006, 10:52
par Invité
Captcha, oui, j'ai vu ça.
Seulement la non plus c'est pas approprié, captcha génère un code aléatoirement. Alors qu'il me faudrais une référence déjà connue dans SQL...
Posté : 06 oct. 2006, 11:40
par graphistnet
Les références sont uniques?
Posté : 06 oct. 2006, 11:52
par albat
Tester si (référence de l'objet == correcte) pour valider le formulaire n'est pas compliqué.
Le problème est que si tu fais ça en PHP, le submit() du formulaire aura déjà été validé.
Il faut donc utiliser également du javascript.
Si tu n'as pas 300 000 références objets, je te propose la piste suivante :
- SELECT id_produit FROM table
- boucle : $id_produit = cryptage($id_produit); (md5 ou autre)
- insertion des références cryptées dans un tableau javascript
- test sur la valeur du champ "produit" saisie dans le formulaire puis cryptée (parcours du tableau JS)
- si correspondance, envoi du formulaire, sinon blocage par javascript
J'imagine que ce doit être adaptable avec de l'Ajax, mais là, je n'y connais pas grand-chose...
Posté : 06 oct. 2006, 12:52
par graphistnet
En même temps tester sur un seul critêre n'est pas du plus sécurisant, il faudrait selon moi partir de l'idée de Albat et rajouter un champs associé à la référence dans la BDD comme ca il y aurait d'une part le test de présence de la bonne ref et une liaison avec une chaîne liée à cette même référence ce qui pourrait en plus permettre la gestion de plusieurs références identiques.
Il y a certainement d'autres possibilités mais celle-ci me parait la plus appropriée dans ce contexte.
Posté : 06 oct. 2006, 13:32
par ma_pomme
Tester si (référence de l'objet == correcte) pour valider le formulaire n'est pas compliqué.
Le problème est que si tu fais ça en PHP, le submit() du formulaire aura déjà été validé.
Il faut donc utiliser également du javascript.
Pas forcement si on verifie la refenrence objet == correcte on traite sinon on revois au formulaire et rien n'est envoyer sur la base, non??
Posté : 06 oct. 2006, 13:41
par albat
Je ne parlais pas d'enregistrer dans la base,
mais d'exécuter le submit() et donc d'appeler la page de traitement.
si on verifie la reference objet == correcte, on traite
À ce niveau, le javascript évite une requête HTTP inutile
puisqu'on ne quitte pas le formulaire tant que tout n'est pas ok.
Tandis qu'en PHP, tu submittes le formulaire,
la page de traitement examine tes réponses
et te renvoie à la page du formulaire en cas d'erreur.
Pas top...
Posté : 06 oct. 2006, 14:10
par Forg
Oui, j'avais trouvé un truc de ce genre :
M'enfin, ils en disent pas plus. Lorsque je l'ai insérée, j'ai eu une erreur, et le formlaire n'était pas envoyé, même si la bonne référence était rentrée...