IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Écriture dans un fichier texte


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 429
    Points : 123
    Points
    123
    Par défaut Écriture dans un fichier texte
    Bonjour,
    comme mon titre l'indique j'ai un souci d'écriture dans un document .txt.
    je m'explique j'ai un code qui permet d'ajouter la date du jour | et l'adresse ip du visiteur dans un fichier .txt
    si la date ou l'IP sont différente, il y a inscription dans le fichier des nouvelles données.

    La premiere ecriture est correctement effectuer, puis viens la second, et la les caractere devienne des ⴵ㜲ㄮⴵ㤲㜲ㄮ cela ressemble a du binaire mais je n'en suis pas sur. Bref je suis obliger de supprimer le fichier et de le recréer a la main, c'est casse pied.

    Je vous met la copie de mon code qui permet l'écriture
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $mesip = fopen('ip.txt', 'a+');
    		fputs($mesip, $dt."|".$ip_visiteur);//on ajoute la nouvelle ip et la date du jour dans le fichier ip 
    		fclose($mesip);//on ferme le fichier
    Merci de bien vouloir m'éclairer sur ce problème.
    Bonne journée

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 45
    Points : 55
    Points
    55
    Par défaut
    Salut,

    Cela se produit il si tu entres "en dur" tes variables $dt et $ip_visiteur (en les définissants juste avant le fopen) ?
    Quel est le code qui définie ces variables ?
    Quel encodage ?


    Cordialement,


    Kohntark-

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 429
    Points : 123
    Points
    123
    Par défaut
    Bonjour,
    je n'ai pas testé en dur en revanche j'affiche mes variables juste avant et elle s'affiche correctement.

    ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ip_visiteur = $_SERVER["REMOTE_ADDR"];
    et
    comme je le test sous wamp il n'y a évidement que mon ip 127.0.0.1 qui se note.
    pour ruser j'ai tester avec une heure différente en attendant minuit, ou en la changeant manuellement, c'est a dire en notant la date d'hier.
    Idem pour l'ip que j'ai changer manuellement pour voir si il en notait bien une autre. Le fait est qu'il note bien quelque chose puisque le nombre de ⴵ㜲ㄮⴵ㤲㜲ㄮ augmente.

    Ai je répondu a la question?
    Merci d'avance.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 45
    Points : 55
    Points
    55
    Par défaut
    Humm .... un peu bizarre ton histoire.

    Il serait tout de même bon de jeter un oeil à l'encodage.
    Avec quel logiciel ouvres tu ton fichier texte ?
    Est ce le même résultat si tu l'ouvres avec un autre (notepad, ...) ?

    Si tu exécutes le code suivant et que tu l'ouvres juste après avec notepad :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    for ($i=0; $i < 5; $i++) {
        $a = date ('Y-m-d').'|'.$_SERVER["REMOTE_ADDR"];
        file_put_contents('ip.txt', $a, FILE_APPEND);
    }
    ?>

    Qu'est ce que ça dit ?

    Cordialement,


    Kohntark-

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 429
    Points : 123
    Points
    123
    Par défaut
    Bonjour,
    avec ton extrait de code cela donne
    ⴵ㜲ㄮⴵ㜲ㄮⴵ㜲ㄮⴵ㜲ㄮⴵ㜲ㄮ
    évidement comme il s'agit d'un document .txt je l'ouvre avec Notepad

    je vous met le code complet ici cela évitera pas mal de question je rappelle que je code avec Notepad ++ et wamp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?php
    	$ip_visiteur = $_SERVER["REMOTE_ADDR"];
    	echo $ip_visiteur."<br/>";
    	$trouve = false;
    	$mesip = fopen('ip.txt', 'r+');
    	$dt = date ('Y-m-d');
     
    	while (! feof($mesip) && $trouve == false)
    	{
    		$ligne = fgets($mesip, 4096);//on lit ligne par ligne grace a la boucle
    		$liste = explode("|", $ligne);
    		$date_save = $liste[0];
    		$ip_save = $liste[1];
    		if ($date_save == $dt)
    		{
    			if($ip_visiteur == $ip_save)//si l'ip du visiteur est dans le fichier ip
    			{
    				$trouve = true;
    			}
    		}
    	}
    	fclose($mesip);//on ferme le fichier
     
    	if($trouve == false)//si l'ip n'a pas ete trouver dans le fichier ip
    	{
    		$moncompteur = fopen('compteur.txt', 'r+');//on ouvre le fichier
    		$nb_visit = fgets($moncompteur, 4096); // On lit la première ligne (nombre de pages vues)
    		$nb_visit++; // On augmente de 1 ce nombre de pages vues
    		fseek($moncompteur, 0); // On remet le curseur au début du fichier
    		fputs($moncompteur, $nb_visit); // On écrit le nouveau nombre de pages vues
    		fclose($moncompteur);//on ferme le fichier
     
    		echo $dt;
    		echo $ip_visiteur;
     
    		$mesip = fopen('ip.txt', 'a+');
    		fputs($mesip, $dt."|".$ip_visiteur);//on ajoute la nouvelle ip et la date du jour dans le fichier ip 
    		fclose($mesip);//on ferme le fichier
    	}
     
    	$moncompteur = fopen('compteur.txt', 'r+');//on ouvre le fichier
    	$nb_visit = fgets($moncompteur, 4096); // On lit la première ligne (nombre de pages vues)
    	fclose($moncompteur);//on ferme le fichier
     
     
    	echo "nombre de visite !! <br/>";
    	//on affiche le nombre de visite total
    	echo "
    		<table>
    			<tr>
    				".$nb_visit."
    			</tr>
    		</table>
    		";
    ?>
    voila le principe est simple j'ai deux fichier .txt l'un contient le décompte, et l'autre les adresse IP et la date de celle-ci, je vérifie que le client ne soit pas enregistrer aujourd'hui dans le fichier ip, si il ne l'ai pas on incrémente le compteur et on le note dans le fichier ip son adresse, le but est de compter chaque jour le nombre de visite différente.

    voila et donc mon problème se situe au niveau de l'écriture des ip dans le fichier.

    Merci d'avance pour votre aide.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 429
    Points : 123
    Points
    123
    Par défaut
    Bonjour,
    est il possible que mon problème vienne du fait que je soit en local et que je n'ai pas la possibilité de configurer les droits du fichier?
    je sais que une fois up sur un sevrer je devrai faire attention a cela et modifier les droits grâce a un programme de FTP client.

    Merci d'avance pour vos informations.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    429
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 429
    Points : 123
    Points
    123
    Par défaut
    Bonjour,
    après différent test effectivement cela provient du fait que je n'étais pas sur un serveur web. Je l'ai tester sur mon serveur et cela fonctionne bien au moins pour l'enregistrement en revanche mon test permettant de savoir si le client n'a pas déjà été compter aujourd'hui ne fonctionne pas très bien en effet je rencontre un problème de comparaisons.
    je vous colle la parti du code qui bloque

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    	while (! feof($mesip) && $trouve == false)
    	{
    		$ligne = fgets($mesip, 4096);//on lit ligne par ligne grace a la boucle
    		$liste = explode("|", $ligne);
    		$date_save = $liste[0];
    		$ip_save = $liste[1];
     
    		echo "date reg :".$date_save."<br/>";
    		echo "date jour :".$dt."<br/>";
     
     
    		if ($date_save == $dt)
    		{
    			echo "ip save :".$ip_save."<br/>";
    			echo "ip visiteur :".$ip_visiteur."<br/>";
     
    			if($ip_save == $ip_visiteur)//si l'ip du visiteur est dans le fichier ip
    			{
    				echo "je trouve <br/>";
     
    				$trouve = true;
    			}
    		}
    	}
    j'ai mit des echo pour voir ou cela bloquait et le dernier echo ne s'affiche pas donc il y a un probleme avec le if mais pourquoi?

    en sachant que j'ai trouver a un erreur dans mon ecriture dans le fichier, que j'ai modifier, voici le code modifier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $mesip = fopen('ip.txt', 'a+');
    		$a = $dt."|".$ip_visiteur."\n";
    		fputs($mesip, $a);//on ajoute la nouvelle ip et la date du jour dans le fichier ip
    		fclose($mesip);//on ferme le fichier
    merci d'avance pour vos reponse

Discussions similaires

  1. Bug d'écriture dans un fichier texte.
    Par Gouhouf dans le forum C
    Réponses: 4
    Dernier message: 11/07/2007, 11h30
  2. [Système] Écriture dans un fichier texte
    Par sparil dans le forum Langage
    Réponses: 7
    Dernier message: 21/06/2007, 00h02
  3. lecture/écriture dans un fichier texte
    Par the watcher dans le forum Delphi
    Réponses: 23
    Dernier message: 15/05/2007, 10h57
  4. Réponses: 4
    Dernier message: 02/05/2007, 10h41
  5. Erreur E/S 32 lors de l'écriture dans un fichier text.
    Par yosthegost dans le forum Delphi
    Réponses: 6
    Dernier message: 01/06/2006, 11h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo