Problème d'enregistrement des adresses IP dans fichier txt
zarex5
-
victoires Messages postés 119 Date d'inscription Statut Membre Dernière intervention -
victoires Messages postés 119 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Alors, dans le cadre d'un site de location de serveur mumble, je souhaiterait que les utilisateurs ayant commandé une offre gratuite ne puissent la commander qu'une seule fois par IP, que s'ils re-essayent ils soient redirigés vers une autre page.
Pour cela, j'ai pensé à une blacklist par ip, lors de la finalisation de la commande gratuite, sont ip est enregistrée dans un fichier txt, et un filtre lors de la commande free, si sont ip est dans la blacklist (qu'il a deja commandé) il ne peut plus le faire.
Tout marche parfaitement à une exception près, les ips ayant commandé s'ajoutent a la suite dans le fichier txt sans espace ni retour à la ligne, se qui donne dans le ip.txt : xx.xx.xx.xxxx.xx.xx.xxxx.xx.xx.xx ect.. Donc le filtre ne marche plus.
J'ai cherché sans success.
Y aurait t'il moyen, d'ajouter un espace ou un retour à la ligne lors de l'enregistrement des ips dans le txt ?
Mon Code:
<?php
$Fnm = "ip.txt";
$inF = fopen($Fnm,"a");
$ptr = ftell($inF);
$ptr = fseek($inF,$ptr-10);
$ip = $_SERVER["REMOTE_ADDR"];
fputs($inF,$ip);
fclose($inF);
?>
J'espère avoir une réponse :) J'en ai vraiment besoin :/
Merci d'avance !
Alors, dans le cadre d'un site de location de serveur mumble, je souhaiterait que les utilisateurs ayant commandé une offre gratuite ne puissent la commander qu'une seule fois par IP, que s'ils re-essayent ils soient redirigés vers une autre page.
Pour cela, j'ai pensé à une blacklist par ip, lors de la finalisation de la commande gratuite, sont ip est enregistrée dans un fichier txt, et un filtre lors de la commande free, si sont ip est dans la blacklist (qu'il a deja commandé) il ne peut plus le faire.
Tout marche parfaitement à une exception près, les ips ayant commandé s'ajoutent a la suite dans le fichier txt sans espace ni retour à la ligne, se qui donne dans le ip.txt : xx.xx.xx.xxxx.xx.xx.xxxx.xx.xx.xx ect.. Donc le filtre ne marche plus.
J'ai cherché sans success.
Y aurait t'il moyen, d'ajouter un espace ou un retour à la ligne lors de l'enregistrement des ips dans le txt ?
Mon Code:
<?php
$Fnm = "ip.txt";
$inF = fopen($Fnm,"a");
$ptr = ftell($inF);
$ptr = fseek($inF,$ptr-10);
$ip = $_SERVER["REMOTE_ADDR"];
fputs($inF,$ip);
fclose($inF);
?>
J'espère avoir une réponse :) J'en ai vraiment besoin :/
Merci d'avance !
A voir également:
- Problème d'enregistrement des adresses IP dans fichier txt
- Ethernet n'a pas de configuration ip valide - Guide
- Fichier bin - Guide
- Fichier epub - Guide
- Comment connaître son adresse ip - Guide
- Fichier rar - Guide
2 réponses
essaye d'ajouter un renvoi à la ligne avant l'écrirture d'ip
$Fnm = "ip.txt"; $inF = fopen($Fnm,"a"); $ip = $_SERVER["REMOTE_ADDR"]; fputs($inF, "\n"); // on va a la ligne fputs($inF,$ip); fclose($inF);
Merci de ta réponse également :)
Cela marche parfaitement lorsque j'essaye une premiere fois avec mon ordinateur, le suis bien blacklisté, cependant lorsque je reessaye une seconde fois avec un autre pc sur mon autre box, les deux ips sont bien dans le txt, J'obtient en bien ip.txt:
XX.XX.XX.X1
XX.XX.XX.X2
mais plus aucune d'elle n'est bloquée..
Le script de blacklist par ip:
<?php
$ip_blacklist = file('ip.txt');
// lecture de l'ip en cours
$ip = isset($_SERVER['REMOTE_ADDR']) ? trim($_SERVER['REMOTE_ADDR']) : '';
// test si l'ip est blacklisté
if ( array_search($ip, $ip_blacklist) !== FALSE )
{
echo '<meta http-equiv="refresh" content="0;URL=offre01.php">';
// stop le script
exit;
}
?>
J'espère que tu aura la solution, je suis perdu ^^
Merci d'avance..
Cela marche parfaitement lorsque j'essaye une premiere fois avec mon ordinateur, le suis bien blacklisté, cependant lorsque je reessaye une seconde fois avec un autre pc sur mon autre box, les deux ips sont bien dans le txt, J'obtient en bien ip.txt:
XX.XX.XX.X1
XX.XX.XX.X2
mais plus aucune d'elle n'est bloquée..
Le script de blacklist par ip:
<?php
$ip_blacklist = file('ip.txt');
// lecture de l'ip en cours
$ip = isset($_SERVER['REMOTE_ADDR']) ? trim($_SERVER['REMOTE_ADDR']) : '';
// test si l'ip est blacklisté
if ( array_search($ip, $ip_blacklist) !== FALSE )
{
echo '<meta http-equiv="refresh" content="0;URL=offre01.php">';
// stop le script
exit;
}
?>
J'espère que tu aura la solution, je suis perdu ^^
Merci d'avance..
je ne comprends pas ton array_search ??!!
essaye une chose simple genre :
lis le fichier ligne par ligne et à chaque ligne tu test si les deux valeurs sont égaux tu redirige.
sinon pourquoi tu n'enregistre pâs la liste des ip dans une base de données ?
pour lire le fihcier ligne par ligne
http://dev.petitchevalroux.net/php/lecture-fichier-ligne-par-ligne-php.227.html
essaye une chose simple genre :
lis le fichier ligne par ligne et à chaque ligne tu test si les deux valeurs sont égaux tu redirige.
sinon pourquoi tu n'enregistre pâs la liste des ip dans une base de données ?
pour lire le fihcier ligne par ligne
http://dev.petitchevalroux.net/php/lecture-fichier-ligne-par-ligne-php.227.html
/*Ouverture du fichier en lecture seule*/
$handle = fopen('ip.txt', 'r');
/*Si on a réussi à ouvrir le fichier*/
if ($handle)
{
/*Tant que l'on est pas à la fin du fichier*/
while (!feof($handle))
{
/*On lit la ligne courante*/
$buffer = fgets($handle); // contient la valeur d'ip
// test les deux ip avec un if
if($_SERVER['REMOTE_ADDR'] == $buffer) alors redirection
else ....
}
/*On ferme le fichier*/
fclose($handle);
}
$handle = fopen('ip.txt', 'r');
/*Si on a réussi à ouvrir le fichier*/
if ($handle)
{
/*Tant que l'on est pas à la fin du fichier*/
while (!feof($handle))
{
/*On lit la ligne courante*/
$buffer = fgets($handle); // contient la valeur d'ip
// test les deux ip avec un if
if($_SERVER['REMOTE_ADDR'] == $buffer) alors redirection
else ....
}
/*On ferme le fichier*/
fclose($handle);
}
Cela me donne donc:
<?php
$handle = fopen('ip.txt', 'r');
if ($handle)
{
while (!feof($handle))
{
$buffer = fgets($handle); // contient la valeur d'ip
if($_SERVER['REMOTE_ADDR'] == $buffer);
else {
echo '<meta http-equiv="refresh" content="0;URL=offre01.php">';
}
}
fclose($handle);
}
?>
Mais quand je teste, je suis toujours redirigé meme si mon ip n'est pas blacklistée..
PS: Je suis novice, et encore quand je dit novice c'est pas mal^^
Merci :)
<?php
$handle = fopen('ip.txt', 'r');
if ($handle)
{
while (!feof($handle))
{
$buffer = fgets($handle); // contient la valeur d'ip
if($_SERVER['REMOTE_ADDR'] == $buffer);
else {
echo '<meta http-equiv="refresh" content="0;URL=offre01.php">';
}
}
fclose($handle);
}
?>
Mais quand je teste, je suis toujours redirigé meme si mon ip n'est pas blacklistée..
PS: Je suis novice, et encore quand je dit novice c'est pas mal^^
Merci :)
Les IP s'ajoutent parfaitement à la suite avec un retour à la ligne,
Mais, je n'ai aucune idée de pourquoi, depuis la blacklist ne marche plus..
Le code ce la blacklist sur la page de commande:
<?php
$ip_blacklist = file('ip.txt');
$ip = isset($_SERVER['REMOTE_ADDR']) ? trim($_SERVER['REMOTE_ADDR']) : '';
if ( array_search($ip, $ip_blacklist) !== FALSE )
{
echo '<meta http-equiv="refresh" content="0;URL=offre01.php">';
exit;
}
?>
Aucune idée de pourquoi ? :/