Problème ecriture de file avec fonction fopen

Eléphanteau du PHP | 47 Messages

04 août 2008, 11:56

Bonjour,
afin d'enregistrer des logs pour un paiement sécurisé je crait un fichié txt avec la fonction :
 $file    = $date."-".$time."--".$transaction_id.".txt";
$fp = fopen("$logfile","w+");
La fonction marche en gros (création du fichié), mais voilà de temps en temps (souvent même) à la place du texte que j'enregistre dedans qui est classique, je me retrouve avec un fichier remplis de hieroglyphe

Exemple :

Code : Tout sélectionner

㉣㈳㘰㔲㉦㔳㕣㉡㉣㌳㈴㔰㉣㈳㘰㔰㉣㌳㈴㉡㉣㌳㈴㔱㉣㈳㘰㔰㉣㐳㘰㔰㕣㈲㐳㈴㔱㉣㐳㘰㔰㉣㈳㈸㔰㉣㘰㐸㔱㉣㌳㉣㔰㉣㈳㉣㔱㌰㔴㈵㌲㌱㈵㕤㈳㌳㔵㌵㉥㌵㈵㈹㌹㉦㌴㌹㌲㌰㌲㔱㈹㌴㈵㕤㈳㌳㔵㌵㉥㌵㈵㈹㌹㉦㌴㌹
Si quelqu'un à une idée cela m'aiderait beaucoup.

Merci par avance

Eléphant du PHP | 169 Messages

04 août 2008, 11:57

Quand tu fais ton fopen(), tu penses bien à refermer le fichier apres ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 août 2008, 11:59

Bonjour,

Pour commencer, sache qu'il est inutile de mettre des " autour d'une variable. Tu va utiliser du processeur pour rien ;)

Sinon, le bout de code ne nous montre pas grand chose
- que contient la variable $logfile ?
- comment est-ce que tu pousses les données dans ton fichier ? (fwrite, ...)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 47 Messages

04 août 2008, 12:00

Oui oui le fichier est bien refermé avec
fclose($fp);

Et bon la création fonction de temps en temps alors c'est assé bizare et illogique.

Voici une partie du code :
    // Initialisation du chemin du fichier de log
    $date = date("Y-m-d");$date = str_replace("-", "", $date);
    $time = date("H:i:s");$time = str_replace(":", "", $time);

    $file    = $date."-".$time."--".$transaction_id.".txt";    // A modifier  OK NOTEST
    $logfile = "../log/".$file;

if($fp = fopen($logfile,"w+")){ /* ouverture du fichier en écriture */
//-----------------------------------
    // OK, Sauvegarde des champs de la réponse
    fwrite( $fp, "$don \n\nresult: $cgi_url\n");
    fwrite( $fp, "bank reponse: $bank_response_code\n\n");

    fwrite( $fp, "cgi_url: $cgi_url\n\n");

    fwrite( $fp, "merchant_id : $merchant_id\n");
    fwrite( $fp, "merchant_country : $merchant_country\n");
    fwrite( $fp, "amount : $amount\n");
    fwrite( $fp, "-------------------------------------------\n");
//-----------------------------------
    fclose($fp);

}else{ // L'ouverture a échouée
echo "Ouverture du fichier impossible";
exit();}
Pour tout expliqué les informations enregistré provienne d'un get url et d'un passage par un log de décryptage fournis par la banque (paiement type atos).

J'aurais pensé que les données n'était pas décrypter mais le script de test fonctionne lui corectement ce qui me fait dire que les données sont bien décrypté.

Je me demande donc si cela ne peut pas provenir d'un problème avec le serveur mais bon...[/quote]

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

04 août 2008, 12:09

Est-ce que tu as essayé d'afficher à l'écran le nom du fichier généré, les données url récupérée de la banque ?
Histoire d'être sûr que c'est l'écriture dans le fichier qui pose soucis ...

Sinon, à confirmer, mais il me semble que tu peux écrire directement
$date = date("Ymd");
a la place de
$date = date("Y-m-d");$date = str_replace("-", "", $date);
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 47 Messages

04 août 2008, 12:13

pour la date c'est vrai que pourquoi faire simple quand on peut faire compliqué.

Pour le file depuis les problèmes j'ai fait un second script dans la même page pour récupéré les données décrypter envoyé par la banque et les enregistrés dans un autre files (fichier créé une seul fois et donnée ajouté à la fin du file). Et là aucun problème les données sont bien enregistré.