[PHP] Limitation vote par IP

Limitation vote par IP [PHP] - PHP - Programmation

Marsh Posté le 12-12-2007 à 19:20:50    

J'essaie de limiter le vote par ip avec ça :
 

Code :
  1. $sql = "SELECT * FROM visiteurs WHERE ip = '$ip'";
  2. $req = mysql_query($sql);
  3. $nb = mysql_num_rows($req);
  4. if($nb)
  5. {
  6. echo "Vous avez déja voté !";
  7. }
  8. else {


 
Mais ça ne marche pas.
 
Pouvez vous m'aider ? Merci


Message édité par ti-bank le 12-12-2007 à 19:23:12

---------------
Tous vos programmes & cours pour calculatrices TI : www.ti-bank.fr
Reply

Marsh Posté le 12-12-2007 à 19:20:50   

Reply

Marsh Posté le 12-12-2007 à 19:37:02    

Bon, déjà je te soummets une réflexion : quel est l"intérêt de ton SELECT * ?
Pourquoi TOUT récupérer alors que tu ne désires qu'une chose, c'est savoir s'il y a au moins une correspondance ?
 
As-tu essayé également en concaténant "proprement" ?
 

Code :
  1. $sql = "SELECT COUNT(ip) AS decompte FROM visiteurs WHERE ip = '".$ip."'";
  2. $req = mysql_query($sql);
  3. $nb_ip = mysql_fetch_array($req);
  4. if($nb_ip['decompte'] != 0)
  5. {
  6. echo "Vous avez déja voté !";
  7. }
  8. else {
  9. ...


 
D'autre part, il me semble que mysql_num_rows retourne un nombre, or en écrivant if($nb) tu testes si c'est un booléen, donc a priori, normal que ça ne passe pas.


Message édité par NewsletTux le 12-12-2007 à 19:38:20

---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 12-12-2007 à 20:09:00    

Merci.
 
Malheureusement ça ne marche toujours pas, on peut toujours voter autant de fois qu'on veut.


---------------
Tous vos programmes & cours pour calculatrices TI : www.ti-bank.fr
Reply

Marsh Posté le 12-12-2007 à 20:32:13    

Je comprends vraiment pas pourquoi :(


---------------
Tous vos programmes & cours pour calculatrices TI : www.ti-bank.fr
Reply

Marsh Posté le 12-12-2007 à 20:41:25    

NewsletTux :-), je vais faire mon chieur moi aussi ^^. Pourquoi retourne un tableau classique (index numérique) et un tableau associatif alors que tu n'exploite que le tableau associatif. Fais un print_r($nb_ip), tu verras pour t'en convaincre ....  
 
Mieux vaux faire : $nb_ip = mysql_fetch_assoc($req);
 
Sinon, je suis d'accord sur le principe. EN effet, mettre l'etoile est eviter tant que l'on peux.  
 
L'exmple de NewsletTux me semble correct aussi. Si tu peux toujours voter c'est que tu as un problème d'insertion dans ta table quand ton internaute vote.  
 
De toute facon, ce genre de test, si cela fonctionne pas, il faut analyser le problème un peu plus en détail. Regarder en base avec phpmyadmin, faire tes requetes sous phpmyadmin si cela te retourne des lignes .....

Reply

Marsh Posté le 12-12-2007 à 20:47:31    

Oui en fait, ça coince car là ça sélectionne juste un IP non déterminé et non pas l'IP du votant.
 
Comment sélectionner celui de clui qui vote, sachant qu'il ne faut pas être logué en membre pour voter ??
 
J'ai les IP qui se stockent dans la base "visiteurs" avec le champ ip.


Message édité par ti-bank le 12-12-2007 à 20:48:07

---------------
Tous vos programmes & cours pour calculatrices TI : www.ti-bank.fr
Reply

Marsh Posté le 12-12-2007 à 21:27:01    

Et tu viens juste de t'en apercevoir... :) La programmation, il faut toujours procéder étape par étape, et valider chacune d'elle et non pas programmer d'une seule traite ...

 

Pour ton ip, soit tu regarde via les info que te donnes phpinfo();
soit tu fais un print_r($_SERVER);


Message édité par weed le 12-12-2007 à 21:27:11
Reply

Marsh Posté le 12-12-2007 à 22:31:08    

ah ba non en fait, c'est bon car le WHERE prend bien le bon IP du visiteur donc je vois pas où ca coince.


---------------
Tous vos programmes & cours pour calculatrices TI : www.ti-bank.fr
Reply

Marsh Posté le 13-12-2007 à 18:59:01    

ton ip est bien en base quand tu regardes dans phpMyAdmin ?

Reply

Marsh Posté le 13-12-2007 à 20:24:30    

Code :
  1. <?php
  2. $db="base";
  3. $link = mysql_pconnect("sql.xxx", "log","pass" );
  4. mysql_select_db($db , $link);
  5. $sql = mysql_query(" INSERT INTO `visiteurs` (`IP`) VALUES ('$IP')" ) or die(mysql_error());
  6. $select = " SELECT count(IP) FROM `visiteurs` WHERE `IP` LIKE '$IP' ";
  7. $result = mysql_query($select,$link);
  8. $row = mysql_fetch_row($result);
  9. $total = $row[0];
  10. if (total > 1)
  11. {
  12. echo 'dans tes rèves mémé';
  13. // etc etc etc
  14. }
  15. elseif (total == 1)
  16. {
  17. echo 'bravo vous avez le droit de voter, changez d\'IP et revenez dans 5 minutes';
  18. }
  19. ?>


 
tu peux faire un peu plus sioux avec les sessions en associant IP et session ou juste en calculant le même chose parrapport aux sessions


---------------
http://www.ypikay.com
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed