Block ip

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Block ip

Re: Block ip

par fab » 22 oct. 2009, 18:03

OUvre un autre sujet en expliquant à quoi sert ce code et ce que tu voudrais faire ou du moins rajouter et ce qui te bloque :) Précise bien la structure de tes tables et mets celui là en résolu :)

Re: Block ip

par binboum » 22 oct. 2009, 17:59

Je n'est plus d'erreur avec ce code la :
<?php
include "config.php";
$pseudo = $_GET['pseudo'];
$ip = $_SERVER['REMOTE_ADDR'];
$date = $_SERVER['REQUEST_TIME'];
$temps = $_SERVER['REQUEST_TIME'] - (3600*24);

$virer = "DELETE FROM validate_forms WHERE date < '$temps'";
mysql_query($virer) or die(mysql_error());

$sql = "SELECT COUNT(*) AS ip FROM validate_forms WHERE ip = '$ip'";
$req = mysql_query($sql) or die(mysql_error());
$nb = mysql_fetch_array($req);

if($nb['ip'] == 0){
    echo "AJOUTER IP";
    $sql = "INSERT INTO validate_forms(ip,date,pseudo) VALUES ('".$ip."',$date,'".$pseudo."')";
    mysql_query($sql) or die(mysql_error());
}else{
    echo "IP DEJA";
}
?>
Voila c'est bon tout y est, maintenant je voudrais ajouté cette condition,
J'ai le droit de voter plusieurs fois mais pas pour le même pseudo.
C'est clair la.
Mais le seul problème ajouté le pseudo c'est facile mais la condition plus dur.

Re: Block ip

par fab » 22 oct. 2009, 17:54

Euh je suis un peu perdu, tu peux expliquer ou tu en es EXACTEMENT?

Re: Block ip

par binboum » 22 oct. 2009, 17:27

J'ai fait sa et j'ai pas de problème,

Et j'aimerais rajouté une condition, du style,
il a le droit de voté si ce n'est pas deux fois le même pseudo mais la je bloque pas pour ajouté de pseudo mais pour la condition.
<?php
include "config.php";
$pseudo = $_GET['pseudo'];
$ip = $_SERVER['REMOTE_ADDR'];
$date = $_SERVER['REQUEST_TIME'];
$temps = $_SERVER['REQUEST_TIME'] - (3600*24);

$virer = "DELETE FROM validate_forms WHERE date < '$temps'";
mysql_query($virer) or die(mysql_error());

$sql = "SELECT COUNT(*) AS ip FROM validate_forms WHERE ip = '$ip'";
$req = mysql_query($sql) or die(mysql_error());
$nb = mysql_fetch_array($req);

if($nb['ip'] == 0){
    echo "AJOUTER IP";
    $sql = "INSERT INTO validate_forms(ip,date,pseudo) VALUES ('".$ip."',$date,'".$pseudo."')";
    mysql_query($sql) or die(mysql_error());
}else{
    echo "IP DEJA";
}
?>

Re: Block ip

par binboum » 22 oct. 2009, 17:07

Voila mais modif, ip est ajouté et bloc au deuxième contact, le seul problème c'est que ip, ne se supprime pas.

Une aide encore stp ?
<?php
include "config.php";

$ip = $_SERVER['REMOTE_ADDR'];
$date = $_SERVER['REQUEST_TIME'];
$temps = $_SERVER['REQUEST_TIME'] - (3600*0);

cleanForm();

function cleanForm(){
    $sql = "DELETE FROM validate_forms WHERE date < '$temps'";
    mysql_query($sql) or die(mysql_error());
}

$sql = "SELECT COUNT(*) AS ip FROM validate_forms WHERE ip = '$ip'";
$req = mysql_query($sql) or die(mysql_error());
$nb = mysql_fetch_array($req);

if($nb['ip'] == 0){
    echo "AJOUTER IP";
    $sql = "INSERT INTO validate_forms(ip,date) VALUES ('".$ip."',$date)";
    mysql_query($sql) or die(mysql_error());
}else{
    echo "IP DEJA";
}
?>

Re: Block ip

par fab » 22 oct. 2009, 13:32

Louche.... Normalement si c'est en int tu devrais pas entouré la valeur.. Fait un petit echo $sql; pour voir?
Le seul truc que je vois là c'est que $temps soit vide

Re: Block ip

par binboum » 22 oct. 2009, 13:04

Alors mon champ date est en int(11).

Re: Block ip

par fab » 21 oct. 2009, 23:02

Hum met des " autour de $temps alors! Quel est le format de ton champ date?

Re: Block ip

par binboum » 21 oct. 2009, 21:35

Oui excuse moi,

voici l'erreur :

Requete 2 ::: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Re: Block ip

par fab » 21 oct. 2009, 20:02

je viens de te marquer par quoi tu devais remplacer ton or die.... Tu as justé a changé le numéro ...
mysql_query($sql) or die ('Requete 1 ::: '.mysql_error());

Re: Block ip

par binboum » 21 oct. 2009, 19:55

J'ai cette erreur ;

Erreur SQL !DELETE FROM validate_form WHERE date <
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

mon code pour trouvé l'erreur :
<?php
include "config.php";

$ip = $_SERVER['REMOTE_ADDR'];
$date = $_SERVER['REQUEST_TIME'];
$temps = $_SERVER['REQUEST_TIME'] - (3600*24);

cleanForm();

function cleanForm(){
    $sql = 'DELETE FROM validate_form WHERE date < '.$temps;
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
}

$sql = 'SELECT COUNT(*) AS ip FROM validate_form WHERE ip = "'.$ip.'"';
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$nb = mysql_fetch_array($req);

if($nb['ip'] == 0){
    echo 'ajout';
    $sql = 'INSERT INTO validate_form(ip,date) VALUES ("'.$ip.'", "'.$date.'")';
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
}else{
    echo 'IP deja';
}
?>

Re: Block ip

par fab » 21 oct. 2009, 18:06

Dans tes or die(..) met quelque chose avant le mysql error histoire qu'on puisse identifier quelle requete ne fonctionne pas. Genre or die('requete 1'.mysql_error())

Re: Block ip

par binboum » 21 oct. 2009, 17:43

Toujours la même erreur :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Code :
<?php
include "config.php";

$ip = $_SERVER['REMOTE_ADDR'];
$date = $_SERVER['REQUEST_TIME'];
$temps = $_SERVER['REQUEST_TIME'] - (3600*24);

cleanForm();

function cleanForm(){
    $sql = 'DELETE FROM validate_form WHERE date < '.$temps;
    mysql_query($sql) or die(mysql_error());
}

$sql = 'SELECT COUNT(*) AS ip FROM validate_form WHERE ip = "'.$ip.'"';
$req = mysql_query($sql) or die(mysql_error());
$nb = mysql_fetch_array($req);

if($nb['ip'] == 0){
    echo 'Ajout de ip';
    $sql = 'INSERT INTO validate_form(ip,date) VALUES ("'.$ip.'", "'.$date.'")';
    mysql_query($sql) or die(mysql_error());
}else{
    echo 'IP deja ajouter';
}
?>

Re: Block ip

par fab » 21 oct. 2009, 16:39

C'est quelle requete qui t'affiche ça ?
Sinon remplace
$sql = 'SELECT COUNT(*) AS ip FROM validate_form WHERE ip = "$ip"';
par
$sql = 'SELECT COUNT(*) AS ip FROM validate_form WHERE ip = "'.$ip.'"';
et plus loin tu as une erreur php
echo 'L'IP est déjà dans la base.';
par
echo 'L\'IP est déjà dans la base.';
Ton erreur mysql vient peut être de la première modification, tu avais oublié de concaténé la variable $ip.
Quant à la deuxième modification, il faut toujours échapper les caractères spéciaux :)

Block ip

par binboum » 21 oct. 2009, 15:45

Salut voila j'ai mon bout de code qui ajoute ip du visiteur dans ma bdd et qui réestrint sa prochaine visite malheureusement j'ai des erreurs que le script ne supprime pas non plus ip après.

Et j'ai cette erreur aussi :

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1"
<?php
$ip = $_SERVER['REMOTE_ADDR'];
$date = $_SERVER['REQUEST_TIME'];
$temps = $_SERVER['REQUEST_TIME'] - (3600*24);

cleanForm();

function cleanForm(){
    $sql = 'DELETE FROM validate_form WHERE date < '.$temps;
    mysql_query($sql) or die(mysql_error());
}

$sql = 'SELECT COUNT(*) AS ip FROM validate_form WHERE ip = "$ip"';
$req = mysql_query($sql) or die(mysql_error());
$nb = mysql_fetch_array($req);

if($nb['ip'] == 0){
    echo 'L'IP n'est pas encore dans la base.';
    $sql = 'INSERT INTO validate_form(ip,date) VALUES ("'.$ip.'", "'.$date.'")';
    mysql_query($sql) or die(mysql_error());
}else{
    echo 'L'IP est déjà dans la base.';
}
?>
Pouvez vous m'aidé, a corrigé les erreurs.