Block ip

Eléphant du PHP | 110 Messages

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.

ViPHP
fab
ViPHP | 2657 Messages

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 :)
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Eléphant du PHP | 110 Messages

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';
}
?>

ViPHP
fab
ViPHP | 2657 Messages

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())
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Eléphant du PHP | 110 Messages

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';
}
?>
Modifié en dernier par binboum le 21 oct. 2009, 20:03, modifié 1 fois.

ViPHP
fab
ViPHP | 2657 Messages

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());

Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Eléphant du PHP | 110 Messages

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

ViPHP
fab
ViPHP | 2657 Messages

21 oct. 2009, 23:02

Hum met des " autour de $temps alors! Quel est le format de ton champ date?
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Eléphant du PHP | 110 Messages

22 oct. 2009, 13:04

Alors mon champ date est en int(11).

ViPHP
fab
ViPHP | 2657 Messages

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
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Eléphant du PHP | 110 Messages

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";
}
?>

Eléphant du PHP | 110 Messages

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";
}
?>

ViPHP
fab
ViPHP | 2657 Messages

22 oct. 2009, 17:54

Euh je suis un peu perdu, tu peux expliquer ou tu en es EXACTEMENT?
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }

Eléphant du PHP | 110 Messages

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.

ViPHP
fab
ViPHP | 2657 Messages

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 :)
Seul l'intelligent a le pouvoir de se trouver con
try { work(); } catch(FlemmeExeption $e) { sleep(84600); }