Mot de Passe dans un Formulaire.

Forg
Invité n'ayant pas de compte PHPfrance

06 oct. 2006, 00:10

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 !

Eléphant du PHP | 184 Messages

06 oct. 2006, 00:14

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.
Image

Forg
Invité n'ayant pas de compte PHPfrance

06 oct. 2006, 00:24

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é ".

Eléphant du PHP | 197 Messages

06 oct. 2006, 02:27

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

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

06 oct. 2006, 03:10

Ce procédé, censé protéger des spams des robots, s'appelle captcha. ;)

Invité
Invité n'ayant pas de compte PHPfrance

06 oct. 2006, 10:52

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...

Eléphant du PHP | 184 Messages

06 oct. 2006, 11:40

Les références sont uniques?
Image

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

06 oct. 2006, 11:52

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 :
  1. SELECT id_produit FROM table
  2. boucle : $id_produit = cryptage($id_produit); (md5 ou autre)
  3. insertion des références cryptées dans un tableau javascript
  4. test sur la valeur du champ "produit" saisie dans le formulaire puis cryptée (parcours du tableau JS)
  5. 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...

Eléphant du PHP | 184 Messages

06 oct. 2006, 12:52

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.
Image

Eléphant du PHP | 86 Messages

06 oct. 2006, 13:32

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??

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

06 oct. 2006, 13:41

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...

Forg
Invité n'ayant pas de compte PHPfrance

06 oct. 2006, 14:10

Oui, j'avais trouvé un truc de ce genre :

Code : Tout sélectionner

if($_POST['reference'] == '0000')
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...