Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1580 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Quelques questions sur architecture et autres...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Quelques questions sur architecture et autres...

n°1476483
Fused
Posté le 16-11-2006 à 15:08:45  profilanswer
 

Salut!
 
J'ai quelques questions auxquelles je n'ai pas trouvé de réponses claires sur le web:
 
Tout d'abord, comment est "normalement" l'arborescence pour un sondage:
Le sondage est en  <?php include_once("includes/sondage.php" ); ?> dans une div de index.php.
Dans ce fichier, il y a le formulaire du sondage, qui renvois au fichier sondage.inc.php pour mettre a jour les résultats et les afficher.
C'est comme ça qu'on s'y prends de manière générale?
 
D'autre part, j'utilise les pages imbriquées dans index avec par exemple <a href="index.php?page=accueil">.
Lorsque je vais cliquer sur un lien, ça raffraichi la page, donc le sondage avec :s et on peut revoter!
Il y a pas quelque chose qui permet de ne pas recharger la div qui contient le sondage?
 
Si besoin de montrer le site en question, dites le moi mais je veux pas faire de spam.
 
Merci d'avance pour vos réponses!

mood
Publicité
Posté le 16-11-2006 à 15:08:45  profilanswer
 

n°1476520
chani_t
From Dune
Posté le 16-11-2006 à 15:24:55  profilanswer
 

tu as 50 façon de faire... la tienne en est une... (la réponse qui sert à rien :D)
..
Maintenant si tu ne veux pas qu'on puisse revoter, claque un cookies par exemple sur le PC client... et s'il est la et bien tu affiche le résultat du vote...
 
ou bien si l'utilisateur est loggé enregsitre quelque part qu'il a répondu au sondage.... ou tu fait un mix des deux.

n°1476619
Fused
Posté le 16-11-2006 à 16:14:39  profilanswer
 

Il faut que j'enregistre et que je vérifie son ip alors.
 
J'ai donc fait un dossier /ip dans lequel je vais stoquer les adressesip.ip de mes visiteurs et je regarde si je les ais déjà enregistré.
 
Je dois me tromper quelque part, ça marche pas!
Voilà le code que j'ai fait:

Code :
  1. if(file_exists("includes/ip/".$_SERVER['REMOTE_ADDR'].".ip" ))
  2. {
  3. echo "vous avez déjà voté";
  4. }
  5. else
  6. {
  7. $fd = fopen("includes/ip/".$_SERVER['REMOTE_ADDR'].".ip", 'w+'); //création du fichier ip
  8. //puis mises à jour du sondage, ça fonctionne bien ça


 
Edit: message d'erreur: Warning: fopen(includes/ip/127.0.0.1.ip): failed to open stream: No such file or directory in c:\documents and settings\laurent\mes documents\sites\tabac\includes\sondage.inc.php on line 9


Message édité par Fused le 16-11-2006 à 16:17:52
n°1476630
leflos5
On est ou on est pas :)
Posté le 16-11-2006 à 16:19:48  profilanswer
 

Oulala!
1-un fichier par ip c'est abusé, penches toi sur sqlite ou fait un fichier unique soit de type ini soit en utilisant un tableau, soit du xml (moi je ferais un tableau pour la rapidité de mise en oeuvre et vu le besoin)
 
2-tu peux pas résumer un utilisateur à une IP, exemple: des utilisateurs derrière le même proxy peuvent avoir la même IP pour plusieurs machines différentes!

n°1476635
Fused
Posté le 16-11-2006 à 16:22:15  profilanswer
 

Je viens de réussir à faire mon truc mais ta remarque est bonne! après vas y avoir gros paquet d'ip!
 
tu peux m'expliquer l'histoire de ton tableau xml? ça m'interesse?

n°1476674
chani_t
From Dune
Posté le 16-11-2006 à 16:50:02  profilanswer
 

D'ou l'usage de cookies...
de plus certain user sont change réguliérement d'adresse IP, comment tu fais dans ces cas la ?
 
Tu crée un tableau en php dont tu stocke la définition dans un fichier (fichier texte ). Et pis tu le mets réguliérement à jour.
 
Pour l'XML... pour stocker juste un avis de vote, c'est un peu gros.. à mon avis

n°1476723
Fused
Posté le 16-11-2006 à 17:30:07  profilanswer
 

Ca marche, mais je vois pas ce que je stocke dans le fichier texte. J'aurais tendance à y mettre l'ip! non je vois pas comment se souvenir de quelqu'un sans ça!

n°1476728
chani_t
From Dune
Posté le 16-11-2006 à 17:35:22  profilanswer
 

une IP n'est pas une façon sûre d'identifier un utilisateur.. et c'est ça le probléme. Je n'ais pas de solution miracle.. cookies ou login pour ajouter un peu d'identification...
 
A la limite @IP, si tu trouve l@IP tu regarde s'il a le cookie.. si oui c'est qu'il a déjà voté... mais bon.. encore une fois se baser sur l'adresse IP n'est pas judicieux.  
 
En même temps ça dépend de l'importance du vote. Si ce n'est qu'une fonctionnalité en plus sans étude statistiques, ou sans valeur, tu peux te contenter de l'IP.(à mon avis)

n°1476750
Fused
Posté le 16-11-2006 à 18:24:33  profilanswer
 

Oui ce n'est pas une étude importante, juste pour faire un peu d'interactivité avec le visiteur.
Je me renseignerai quand même sur les cookies, ça a l'air interessant.

n°1476775
Fused
Posté le 16-11-2006 à 19:06:09  profilanswer
 

J'essaye quand même de finir mon algo!
 

Code :
  1. <?php
  2. include("sondage.inc.php" );
  3. if (ip_existe())          // si il a déjà voté
  4. {
  5.  affiche_resultats();    // résultats direct
  6. }
  7. else
  8. {
  9.  affiche_sondage();   // sinon on affiche mais il n'est pas obligé de voter!
  10.  if il_a_validé_le_formulaire() // c'est clair!
  11.  {
  12.   MAJ();    // maj du sondage
  13.   affiche_resultats(); // pi on affiche
  14.  }
  15. }
  16. ?>


 
voilà, tout me parait bon, un seul truc:
je ne sais pas comment on vérifie qu'il a validé le formulaire ou non!
peut être faudrai mettre une variable qu'on vérifie apres mais je sais pas comment la mettre dans le formulaire.
 
pour info, mon formulaire:
 

Code :
  1. function affiche_sondage()
  2. {
  3. echo'
  4. <form id="formulaire" method="post" action="sondage.php">
  5.  <fieldset>
  6.   <legend>Que fumez vous?</legend>
  7.   <input type="radio" name="choix" id="choix0" value="0" checked> <label for="choix0" >Des cigarettes</label><br>
  8.   <input type="radio" name="choix" id="choix1" value="1"> <label for="choix1">Des roul&eacute;es</label><br>
  9.   <input type="radio" name="choix" id="choix2" value="2"> <label for="choix2">Je suis non fumeur</label><br>
  10.      <div align="center"><input name="submit" type="submit" value="valider"/></div>
  11.  </fieldset>
  12. </form>';
  13. }

mood
Publicité
Posté le 16-11-2006 à 19:06:09  profilanswer
 

n°1476850
FlorentG
Unité de Masse
Posté le 16-11-2006 à 21:03:21  profilanswer
 

Sur le web, il n'y a strictement aucune manière d'empêcher quelqu'un de voter plusieurs fois. Suffit d'utiliser quelques proxy, et le problèmes de l'ip est reglé. Ou alors fait une déco/reconnexion à chaque fois. Y'a toujours un moyen de voter au moins une dizaine de fois sans trop se faire chier :( Tout ce qu'on peut faire, c'est minimiser la chose...

n°1476853
MagicBuzz
Posté le 16-11-2006 à 21:14:43  profilanswer
 

Déjà, le filtre sur IP, c'est mal : ça empêche les gens qui surfent depuis un endroit public (boulot, cyber café, borne wifi publique, etc.) de voter.
Ensuite, les connections perso changent d'IP régulièrement (entre quelques heures à quelques semaines selon les FAI) donc une même personne peut tout à fait voter deux fois depuis le même PC dans un intervalle assez court. Pire, une personne qui n'a pas voté peut récupérer l'IP d'une personne qui a déjà voté, et ne pas pouvoir voter.
 
Il y a deux moyens de fortement limiter les dégats :
- Site sérieux, avec charte stricte, obligeant la création d'un compte contenant des informations nomminatives. Mais bon, c'est pas courrant et on ne peut en aucun cas être sûr qu'il n'y a pas de mutis.
- Site nécessitant un compte avec un abonnement : à moins de payer deux abos, on trouvera pas beaucoup de multis.

n°1476929
leflos5
On est ou on est pas :)
Posté le 17-11-2006 à 02:40:06  profilanswer
 

Tableau tout court, c'est un peu le dada de php donc autant en profiter :)

n°1477214
Fused
Posté le 17-11-2006 à 11:52:40  profilanswer
 

On verra ça après!
 
Je reviens sur mon dernier, post, à la ligne 11 du premier code, comment vérifier que quelqu'un à rempli un formulaire?
 
Sinon la code s'arrête toujours à la ligne 10.

n°1477283
chani_t
From Dune
Posté le 17-11-2006 à 13:00:19  profilanswer
 

et bien tu vérifie tes champs... s'ils son <> '', et bien tu suppose qu'ils sont remplis... nan ?
 
Note : pense aussi à vérifier qu'ils ne sont pas remplis avec autre chose qu'ils ne devraient.. (style vérifie qu'il sont numérique si c'est un chiffre que tu attends etc..)

n°1477298
Fused
Posté le 17-11-2006 à 13:31:30  profilanswer
 

euh je comprends pas :/
ça donnerai quoi sur ça?

Code :
  1. <form id="formulaire" method="post" action="index.php?touc=sondage">
  2.  <fieldset>
  3.   <legend>Que fumez vous?</legend>
  4.   <input type="radio" name="choix" id="choix0" value="0" checked> <label for="choix0">Des cigarettes</label><br>
  5.   <input type="radio" name="choix" id="choix1" value="1"> <label for="choix1">Des roul&eacute;es</label><br>
  6.   <input type="radio" name="choix" id="choix2" value="2"> <label for="choix2">Je suis non fumeur</label><br>
  7.      <div align="center"><input name="submit" type="submit" value="valider"/></div>
  8.  </fieldset>
  9. </form>

n°1477344
chani_t
From Dune
Posté le 17-11-2006 à 14:33:51  profilanswer
 

soit tu le fais en javascript... mais la je ne peux pas t'aider..
soit tu passe par une page qui va traiter ton formulaire en php, pour lequel tu récupére le post, tu fais une boucle while pour tester tous les champs du post, en testant si les champs sont vide (is_null) ou ensuite tu peux utiliser notament les ereg pour filtrer plus finement.

n°1477558
Fused
Posté le 17-11-2006 à 17:29:53  profilanswer
 

je récupere déjà le post via une autre page php mais j'aurais voulu directement revenir à la page de mon algorythme au lieu de passer par une autre page.
 
j'ai pas trop compris ce que tu as expliqué mais je vais chercher voir si je peux faire ça, merci!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Quelques questions sur architecture et autres...

 

Sujets relatifs
[PHP] Marche sous Easyphp mais pas sous wamp?[VBA-Excel] questions de débutant
remplacer type d'accesseur PHP objet[PHP/MySQL debutant] Affichage d'un enreg apres l'autre
Sécurité entre pages PHP et ASPRécupèration contenu d'un select (HTML, PHP)
[Javascript - PHP]questions sur des livres
[PHP] lister les dossiersJava : questions sur le capacités du langage
Plus de sujets relatifs à : [PHP] Quelques questions sur architecture et autres...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR