Lister les référents dans un fichier texte
Fermé
imperf
Messages postés
8
Date d'inscription
dimanche 20 novembre 2011
Statut
Membre
Dernière intervention
27 avril 2015
-
Modifié par imperf le 20/11/2011 à 12:42
imperf Messages postés 8 Date d'inscription dimanche 20 novembre 2011 Statut Membre Dernière intervention 27 avril 2015 - 21 nov. 2011 à 22:40
imperf Messages postés 8 Date d'inscription dimanche 20 novembre 2011 Statut Membre Dernière intervention 27 avril 2015 - 21 nov. 2011 à 22:40
A voir également:
- Lister les référents dans un fichier texte
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
- Fichier host - Guide
4 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
21 nov. 2011 à 13:50
21 nov. 2011 à 13:50
voir commentaires et corrections, par contre je n'ai pas testé il peut subsister des erreurs:
<?php // récupère ref et url demandée $ref=$_SERVER["HTTP_REFERER"]; $requested=$_SERVER['REQUEST_URI']; // vérifie que le referer existe bien ET n'est pas mon nom de domaine if (strpos($ref,"edge.style.free.fr")==0 and $ref!=""){ $reffile= "referers.txt"; $allrefs = file($reffile);//la tu lis ton fichier referers.txt ligne par ligne et c'est mis dans un array $allrefs if (eregi($ref, $reffile)) { foreach($allrefs as $key=>$line){ //par cette boucle tu parcours l'array obtenu avec file() ////mais dans la ligne ci dessous tu venait écraser cet array avec $allrefs = explode("|", $line); donc ça ne peut pas marcher il faut mettre un autre nom (ex:$allrefs_line) $allrefs_line = explode("|", $line); $plus = $allrefs_line[2]+1; if ($allrefs_line[0]==$ref); { // si la première colonne est identique au référer (donc qu'il est déjà listé), on augmente [2] (soit la colonne 3) /* $allrefs_line = "$ref|$requested|$plus|\n"; $tempvar= fopen($reffile, "w"); fwrite ($tempvar, $allrefs); //on ecrit à l'endroit ou est le pointeur de fichier ? donc tu n'est pas sur que ce soit sur le bon referer fclose($tempvar); */ //on va proceder diferement: on va modifier directement le contenu de la ligne correspondante dans l'array $allrefs $allrefs[$key]= "$ref|$requested|$plus"; } } }else{ // c'est ici que j'aimerais mettre l'alternative qui liste le ref s'il n'existe pas //on rajoute ta ligne au debut de l'array array_unshift($allrefs,"$ref|$requested|1"."\n"); } //maintenant on va réecrire l'array modifié ligne par ligne dans le fichier if($tempvar= fopen($reffile, "w+")){ //w+ : ouvre en lecture et écriture; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0 foreach($allrefs as $line){ fputs ($tempvar, $line."\n"); } fclose($tempvar); } } ?>
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
21 nov. 2011 à 22:16
21 nov. 2011 à 22:16
je n'avais pas regardé de près la façon dont tu testait:
if (eregi($ref, $reffile)) c'est pas bon, tu ne peux pas tester le contenu d'un fichier ainsi
essayes:
if (eregi($ref, $reffile)) c'est pas bon, tu ne peux pas tester le contenu d'un fichier ainsi
essayes:
<?php // récupère ref et url demandée $ref=$_SERVER["HTTP_REFERER"]; $requested=$_SERVER['REQUEST_URI']; //variable de travail $ref_trouve=false; // vérifie que le referer existe bien ET n'est pas mon nom de domaine if (strpos($ref,"edge.style.free.fr")==0 and $ref!=""){ $reffile= "referers.txt"; $allrefs = file($reffile);//la tu lis ton fichier referers.txt ligne par ligne et c'est mis dans un array $allrefs foreach($allrefs as $key=>$line){ //par cette boucle tu parcours l'array obtenu avec file() $allrefs_line = explode("|", $line); $plus = $allrefs_line[2]+1; if ($allrefs_line[0]==$ref); { // si la première colonne est identique au référer (donc qu'il est déjà listé), on augmente [2] (soit la colonne 3) //on va proceder differement: on va modifier directement le contenu de la ligne correspondante dans l'array $allrefs $allrefs[$key]= "$ref|$requested|$plus"; $ref_trouve=true; //on mémorise qu'on a trouvé le ref } } if($ref_trouve == false){ //on rajoute ta ligne au debut de l'array array_unshift($allrefs,"$ref|$requested|1"."\n"); } //maintenant on va réecrire l'array modifié ligne par ligne dans le fichier if($tempvar= fopen($reffile, "w+")){ //w+ : ouvre en lecture et écriture; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0 foreach($allrefs as $line){ fputs ($tempvar, $line."\n"); } fclose($tempvar); } } ?>
imperf
Messages postés
8
Date d'inscription
dimanche 20 novembre 2011
Statut
Membre
Dernière intervention
27 avril 2015
Modifié par imperf le 21/11/2011 à 21:45
Modifié par imperf le 21/11/2011 à 21:45
Bonsoir ~ Merci beaucoup de votre aide! Aucune erreur php ne m'est indiquée à l'exécution, en revanche, seule la partie "ajout du referer" se manifeste (et non l'ajout +1)
Peut-être ai-je mal saisi cette partie (pas sûre du tout; je devais changer quelque chose ?)
Merci d'avoir pris le temps de commenter le code!
Peut-être ai-je mal saisi cette partie (pas sûre du tout; je devais changer quelque chose ?)
$allrefs_line = "$ref|$requested|$plus|\n"; $tempvar= fopen($reffile, "w"); fwrite ($tempvar, $allrefs); //on ecrit à l'endroit ou est le pointeur de fichier ? donc tu n'est pas sur que ce soit sur le bon referer fclose($tempvar); */ //on va proceder diferement: on va modifier directement le contenu de la ligne correspondante dans l'array $allrefs $allrefs[$key]= "$ref|$requested|$plus";
Merci d'avoir pris le temps de commenter le code!
imperf
Messages postés
8
Date d'inscription
dimanche 20 novembre 2011
Statut
Membre
Dernière intervention
27 avril 2015
21 nov. 2011 à 22:40
21 nov. 2011 à 22:40
Pour eregi, je sentais bien que ce n'était pas aproprié, mais toutes les méthodes que j'ai essayé ont échoué alors par désespoir ... XD
Merci beaucoup pour le code! Je viens d'essayer et il se passe une drôle de chose: le referer est listé. Puis au deuxième essai, il est relisté mais avec le compteur augmenté. Et enfin, si un referer différent arrive, il remplace le deux derniers mais en conservant les compteurs. En fait ça m'était arrivée pendant les tests mais je n'ai jamais su d'où ça venait ...
Pourtant ce code a l'air nickel! >.<
Désolée de vous mobiliser, je sentais bien que cette affaire était infernale!
Merci beaucoup pour le code! Je viens d'essayer et il se passe une drôle de chose: le referer est listé. Puis au deuxième essai, il est relisté mais avec le compteur augmenté. Et enfin, si un referer différent arrive, il remplace le deux derniers mais en conservant les compteurs. En fait ça m'était arrivée pendant les tests mais je n'ai jamais su d'où ça venait ...
Pourtant ce code a l'air nickel! >.<
Désolée de vous mobiliser, je sentais bien que cette affaire était infernale!