par
auclairp » 23 janv. 2007, 13:21
J'ai compris l'explication, mais pas réussi à l'intégré, et je t'avous, là avec ton ereg ca fonctionne, alors je veux pas tout mélanger. mais je vais essayer d'y travailler, c'es tjuste que je ne sais pa scomment et où l'intégré dans mon code (ex celui actuel)
Bon, voilà le résultat final qui fonctionne pour ceux que ca pourrais intéressé:
<?
$page = $_SERVER['PHP_SELF'];
$ip = $_SERVER['REMOTE_ADDR'];
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$urlfrom = $_SERVER["HTTP_REFERER"];
$annee = date("Y",mktime(date("H")-5, date("i"), date("s"), date("m") , date("d"), date("Y") ) );
$mois = date("m",mktime(date("H")-5, date("i"), date("s"), date("m") , date("d"), date("Y") ) );
$jour = date("d",mktime(date("H")-5, date("i"), date("s"), date("m") , date("d"), date("Y") ) );
$heure = date("H:i:s",mktime(date("H")-5, date("i"), date("s") ) );
$date= date(U);
$time = date('U');
$timeout = date('U') - 10; // délais de 5 minutes (60 secondes * 5 = 5 minutes
// Voir si l'IP existe dans la Bdd
$ip_exist= "SELECT * FROM ip_no WHERE ip='$ip' AND block='yes' ";
$ip_exist2 = mysql_query($ip_exist);
// Voir si l'IP n'a pas déjà été enregistrer dans les dernières 5 minutes.
$ip_timeout= "SELECT * FROM logs WHERE page='$page' AND ip='$ip' AND date>'".$timeout."'";
$ip_timeout2 = mysql_query($ip_timeout);
// Voir s'il y a une entrée dans la Bdd qui correspond avec l'adresse HOST du client
$host_existe = mysql_query("SELECT * FROM ip_no WHERE block='yes' "); // Requête SQL
while ($host_existe1 = mysql_fetch_array($host_existe) )
{
if (ereg($host_existe1['bddhost'], $host))
{$host_found = true;}
}
if (mysql_num_rows($ip_exist2) >= 1)
{
//echo 'IP bloquée';
}
elseif (mysql_num_rows($ip_timeout2) >= 1)
{
//echo 'Délais trop court';
}
elseif(isset($host_found))
{
//echo 'Host bloqué';
}
else
{
//echo 'Données inscrite dans la Bdd';
mysql_query('INSERT INTO logs VALUES( "",
"'.$page.'",
"'.$ip.'",
"'.$host.'",
"'.$annee.'",
"'.$mois.'",
"'.$jour.'",
"'.$heure.'",
"'.$time.'",
"'.$urlfrom.'",
"'.$maillist.'")')or die(mysql_error());
}?>
Merci de ton aide,
J'ai compris l'explication, mais pas réussi à l'intégré, et je t'avous, là avec ton ereg ca fonctionne, alors je veux pas tout mélanger. mais je vais essayer d'y travailler, c'es tjuste que je ne sais pa scomment et où l'intégré dans mon code (ex celui actuel)
Bon, voilà le résultat final qui fonctionne pour ceux que ca pourrais intéressé:
[php]
<?
$page = $_SERVER['PHP_SELF'];
$ip = $_SERVER['REMOTE_ADDR'];
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
$urlfrom = $_SERVER["HTTP_REFERER"];
$annee = date("Y",mktime(date("H")-5, date("i"), date("s"), date("m") , date("d"), date("Y") ) );
$mois = date("m",mktime(date("H")-5, date("i"), date("s"), date("m") , date("d"), date("Y") ) );
$jour = date("d",mktime(date("H")-5, date("i"), date("s"), date("m") , date("d"), date("Y") ) );
$heure = date("H:i:s",mktime(date("H")-5, date("i"), date("s") ) );
$date= date(U);
$time = date('U');
$timeout = date('U') - 10; // délais de 5 minutes (60 secondes * 5 = 5 minutes
// Voir si l'IP existe dans la Bdd
$ip_exist= "SELECT * FROM ip_no WHERE ip='$ip' AND block='yes' ";
$ip_exist2 = mysql_query($ip_exist);
// Voir si l'IP n'a pas déjà été enregistrer dans les dernières 5 minutes.
$ip_timeout= "SELECT * FROM logs WHERE page='$page' AND ip='$ip' AND date>'".$timeout."'";
$ip_timeout2 = mysql_query($ip_timeout);
// Voir s'il y a une entrée dans la Bdd qui correspond avec l'adresse HOST du client
$host_existe = mysql_query("SELECT * FROM ip_no WHERE block='yes' "); // Requête SQL
while ($host_existe1 = mysql_fetch_array($host_existe) )
{
if (ereg($host_existe1['bddhost'], $host))
{$host_found = true;}
}
if (mysql_num_rows($ip_exist2) >= 1)
{
//echo 'IP bloquée';
}
elseif (mysql_num_rows($ip_timeout2) >= 1)
{
//echo 'Délais trop court';
}
elseif(isset($host_found))
{
//echo 'Host bloqué';
}
else
{
//echo 'Données inscrite dans la Bdd';
mysql_query('INSERT INTO logs VALUES( "",
"'.$page.'",
"'.$ip.'",
"'.$host.'",
"'.$annee.'",
"'.$mois.'",
"'.$jour.'",
"'.$heure.'",
"'.$time.'",
"'.$urlfrom.'",
"'.$maillist.'")')or die(mysql_error());
}?>
[/php]
Merci de ton aide,