begin process at 2012 05 30 19:54:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Ip unique via fichier txt


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Ip unique via fichier txt

vendredi 18 décembre 2009 à 16:50:23 | Ip unique via fichier txt

vita83

Bonjour je souhaiterais via un fichier texte, verifier qu'une ip ne voie qu'une fois par jour un div.

Je vais tenté d'exposer le pourquoi, je voudrais mettre une pub google sur mon site (oui je sais beurk), mais j'ai lu de ci de la, que si un petit malin cliquer 140 fois sur la pub .. cela pouvais faire sauter le compte associer a cette pub.

Je vous montre ou j'en suis pour le moment, pas loin .. mais pour moi c'es déja un miracle :)
Code PHP :
<?
$ip = $_SERVER["REMOTE_ADDR"];
$date = date("d-m-Y");
Print("");
$nom_fichier = "$date.txt"; 
if ($fichier = fopen($nom_fichier, "a+"))  { 
fwrite($fichier, $ip); 
fwrite($fichier, "\r\n");
fclose($fichier); 
} else { 
print("Impossible d'acceder au fichier $nom_fichier"); 
} 
?>

Donc dans ma logique il me fallait verifier chaques jours qu'une ip ne soit pas deja passer par la, et pour une raison qui m'es propre je ne souhaite pas utilisé MySql, d'ou le choix pour le fichier texte.

A partir de la, les ip sont bien stocker dans un fichier texte a la date du jour.
Maintenant j'aimerai savoir comment effectuer une verification sur ce fichier, afin de savoir si oui ou non, une ip es déja passer par la, afin d'inclure ou non cette ip a la suite des autres et surtout d'afficher ou non le div dans la page contenant ce code :)

Je ne demande pas de macher le travail, juste comprendre comment ca dois ce passer, par exemple simplement avec un affichage, l'ip existe/l'ip n'existe pas , j'adapterai moi meme :)

Je ne veut pas non plus d'un script tout fais, je voudrais reellement comprendre.

Merci par avance pour vos pistes

vendredi 18 décembre 2009 à 20:37:24 | Re : Ip unique via fichier txt

kohntark

Membre Club
Salut Vita,

C'est un peu lourd je trouve, le jeu en vaut il vraiment la chandelle ? Je doute.
Il faudrait en savoir plus sur ces limitations, c'est 140 cliques de la même IP tous les jours ? toutes les 10 minutes ?
N'autoriser qu'un seul affichage par jour est quelque peu extrémiste.

Quelques remarques sur ton code :
<?
=>
<?php


Code PHP :
$ip = $_SERVER["REMOTE_ADDR"];
$date = date("d-m-Y");
Print("");
$nom_fichier = "$date.txt"; 
if ($fichier = fopen($nom_fichier, "a+"))  { 
  fwrite($fichier, $ip); 
  fwrite($fichier, "\r\n");
  fclose($fichier); 

=> en 1 seule ligne n'est ce pas mieux ?
Code PHP :
file_put_contents(date("dmY").'.txt', $_SERVER["REMOTE_ADDR"]."\r\n", FILE_APPEND);


Maintenant que ton fichier est constitué tu n'as plus qu'à :
- retirer l'IP du visiteur
- retirer le contenu de ton fichier (voir file() et file_exists())
- regarder si l'ip est présente (voir in_array())
- oui ?
=> tu n'affiches pas le div
- non ?
=> tu affiches le div
=> tu consignes l'ip avec le code que tu as déjà écrit, l'idéal étant de le
mettre dans une fonction


N'hésite pas à re poster.

Bonne soirée,


Kohntark -

samedi 19 décembre 2009 à 13:44:53 | Re : Ip unique via fichier txt

vita83

Erf :( pour <?php ca m'était sorti de la tete :p
En ce qui concerne le code sur une ligne seule, bah je vois que la majorités des sites ne sont pas a jour avec php, sur les 3/4 des sites je suis tomber sur ca, et notamment dans le livre "php5 & mysql5" de micro application (983 pages) ou le même procéder que moi est utilisé.
Je vais donc essayer de comprendre un peu mieux cette ligne, bien qu'il me semble déjà l'avoir cerné :), merci a toi pour cela

J'avais plus ou moi trouver un bout de code, qui aurait pu, convenir a une partie de ce que je compte faire :
Code PHP :
<? php
$date = date("d-m-Y");
if (!$fp = fopen("$date.txt","r")) {
echo "Echec de l'ouverture du fichier";
exit;
}
else {
	while(!feof($fp)) {
		$Ligne = fgets($fp,255);
		echo $Ligne;
		$Fichier .= $Ligne;
	}
	fclose($fp);
}
?>


Il ne resterai plus qu'a insérer une condition, si l'ip existe alors ..

Hélas, au vu de ton code, et du mien , je présume que ce code ci n'es pas a jour non plus.

Sinon, oui je pense que le jeu en vaut la chandelle, ne serai-ce que pour une auto-satisfaction, et m'aider a comprendre un peu plus php, qui me semble si énorme oO
samedi 19 décembre 2009 à 15:10:12 | Re : Ip unique via fichier txt

kohntark

Membre Club

la majorités des sites ne sont pas a jour avec php


Ce n'est pas faux, et c'est très souvent un problème pour les débutants qui recopient, pensant bien faire, du vieux code qui ne fonctionne plus, ou mal, sur les versions actuelles de PHP.
Dans ton cas le code n'est pas faux est reste d'actualité.
C'est plus une question de simplicité et de concision, mais cela reste à l'appréciation de chacun.

file_put_contents(date("dmY").'.txt', $_SERVER["REMOTE_ADDR"]."\r\n", FILE_APPEND);

file_put_contents => (voir la doc) ça te remplace le fopen, le fwrite et le fclose en une seule fonction.
date("dmY").'.txt', $_SERVER["REMOTE_ADDR"]."\r\n" => je ne fais que condenser (concaténer) ce que tu fais en passant par plusieurs variables ($date, $ip, $nom_fichier, ...)

[...]Hélas, au vu de ton code, et du mien , je présume que ce code ci n'es pas a jour non plus.


Tu fais comme tu le sens hein, mais je pense que tu gagnerai en simplicité et en efficacité a utiliser les fonctions que je t'ai indiquées (file, in_array ...).
Je te laisse consulter la doc (php.net) qui s'y rapporte.

Voici tout de même un peu plus de détail :
Afin de correctement scinder les choses tu crées 2 fonctions :
- l'une nommée (par ex) addIP qui contient la ligne de code que je t'ai donnée (où au pire celui de ton premier message) avec en argument l'ip (il faudra donc remplacer $_SERVER["REMOTE_ADDR"] par la valeur de l'argument) :

Code PHP :
<?php
function addIP($ip) {
   file_put_contents(date("dmY").'.txt', $ip."\r\n", FILE_APPEND);
}
?>


- l'autre permettant le contrôle de la présence (ou non) de l'ip dans le fichier :
Code PHP :
<?php
function checkIP($ip) {
   // retrait du contenu du fichier ds un tableau
   $a = file($date.'.txt');
   // contrôle que l'ip passée en paramètre n'existe pas déjà
   if (!in_array($ip, $a)) {
      addIP($ip); // écrit l'ip dans le fichier
      return false; // l'ip n'est pas présente
   } else return true; // l'ip est présente
}
?>


Tu appelles tout simplement, dans ta page contenant la pub :
Code PHP :
<?php
if (!checkIP($_SERVER["REMOTE_ADDR"])) { // l'ip n'est pas présente ds le fichier
   // affichage du div contenant la pub
}
?>


Ce ne sont là que les grandes lignes afin de te montrer le principe (il faut également gérer les erreurs, purger les fichiers obsolètes, etc ...)

Sinon, oui je pense que le jeu en vaut la chandelle, ne serai-ce que pour une auto-satisfaction, et m'aider a comprendre un peu plus php, qui me semble si énorme oO


Tu as bien raison dans le principe, et je ne peux qu'adhérer à ça.
Il n'empêche qu'il est important de réfléchir sur le fond. Interdire plus d'un click par jour est exagéré. Pourquoi ne pas partir plutôt sur 1 click maximum toutes les heures ? Je me trompes peut être mais ça m'étonnerait que google en tienne rigueur.

Cordialement,


Kohntark -

dimanche 20 décembre 2009 à 13:57:43 | Re : Ip unique via fichier txt

vita83

Nan nan :p bien évidemment que j'utilise ton code précédent, ne ligne au lieu de 6 ne peut qu'alléger un peu la page, et la relecture du code, encore fallais t'il le savoir, comme dis précédemment je ne suis pas un pro du Php :(

Sinon pour les fonction, vraiment pas mal, je suppose qu'il faut que le code soi dans la meme page, voir au pire inclus (include ou require), enfin je vais me documenter un peu sur toutes cette séries de commandes.

Une dernière petites question toutefois, quelle documentation, même en anglais s'il le faut me conseillerais tu sachant que j'ai juste quelques notions ?, j'ai un peu peur de partir sur de mauvaises bases, avec des exemples d'il y a 5 ans :(

Pour google, pour être franc je ne connais pas les limites, ma femme me dis que sur un site de jeu rpg online, il y a un système de publicités, sur lequel tu peut cliquer 5 fois par jour, de la a savoir si le système mis en place es ou non google adsence, je ne serai pas dire, mais comme on me la toujours dis mieux vaut prévenir que guérir :p

En tout cas merci pour tout ca :)
samedi 26 décembre 2009 à 05:12:08 | Re : Ip unique via fichier txt

hornet_bzz




Hornet bzz 

Les conseils de Kohntark sont parfaits donc je m'y +1.

J'ajouterai juste que $_SERVER['REMOTE_ADDR'] ne suffit pas dans le cas des proxy, voilàa comment je procède :

$current_ip = (!isset($current_ip))? !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'] : $current_ip ;
samedi 26 décembre 2009 à 09:37:26 | Re : Ip unique via fichier txt

kohntark

Membre Club
Salut Hornet_bzz,

Bien vu pour cette précision.
Une question cependant :

$current_ip = (!isset($current_ip))? !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'] : $current_ip ;

Quel est l'intérêt du isset ??


Cordialement,


Kohntark -

samedi 26 décembre 2009 à 09:54:44 | Re : Ip unique via fichier txt

hornetbzz




HORNET

Salut Kohntark,

A vrai dire, aucun intérêt particulier si c'est sorti de son contexte. Mais ça ne mange pas de pain non plus.

Dans son contexte, c'est utilisé dans une page php qui reboucle sur elle-même plusieurs fois, et je n'ai pas besoin de redéfinir à chaque fois l'IP du visiteur.

Voilà pour la petite histoire du contexte



Cette discussion est classée dans : fichier, code, texte, ip, pub


Répondre à ce message

Sujets en rapport avec ce message

help > fichier texte : Aïe! [ par paprikarmasutra ] Salut,Voilà j'essaye de faire une petite tribune simple sans base MySQL, juste en mettant un fichier texte à jour en permanence. Le code fonctionne co Ajouter une ligne a un fichier texte... [ par lex1111 ] Bonjour, j'aimerais enregistrer dans un fichier texte les ips qui passent sur mon site...Donc j'aimerais parcourir mon fichier texte et si l'ip n'est Demade d'aid [ par fouad_king_computer ] j'ai besion des Script faits les étapes de mon travail 1. code fait la téléchargement de page web; 2.stocker cette page sur un repertoire; 3.code fai Sauvegarde en UTF-8 [ par justbe ] Bonjour, J'ai un problème concernant un fichier .txt (codage [b]UTF-8[/b] à la base) que j'édite via un simple formulaire, seulement lorsque je valid comparaison variable et fichier texte [ par youvalcsharpp ] bonjour a tous ! J'ai une petit probleme : J'ai un code qui enregiste l'ip du visiteur dans un fichier texte : [code=php]$lol="ip.txt"; $ip = $_SERV non reecriture fichier texxte [ par youvalcsharpp ] bonsoir J'ai une petit probleme : J'ai un code qui enregiste l'ip du visiteur dans un fichier texte : [code=php]$lol="ip.txt"; $ip = $_SERVER["REMOT affichage / modification fichier texte dans un textarea [ par sly784965 ] Bonjour, j'aimerais créer une page php me permettant d'afficher un fichier texte et ainsi pouvoir le modifier depuis cette même page web. Je n'ai tro supprimer ligne fichier texte [ par sly784965 ] Bonjour, j'ai le code suivant qui me permet d'afficher le contenu du fichier "affichage.php" via une boucle while : [code=php]<?php tester fichier texte [ par youvalcsharpp ] bonjour , Je voudrai savoir comment tester les 3 derniers caracteres d'un fichier texte jai ce code : [code=php]<?php $verif=@fopen("fichier.txt","r+ import de fichier texte en respectant la police ! [ par secropia ] Bonjour, j'ai réussi à importé un fichier texte dans ma page php assez facilement avec ce code : [code=php] "; while(!feof($fichier)) { $ligne = fge


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales