[php]erreur d'écriture/ouverture fichier .txt
aloneInTheDark
-
GallyNet Messages postés 434 Date d'inscription Statut Membre Dernière intervention -
GallyNet Messages postés 434 Date d'inscription Statut Membre Dernière intervention -
Salut à tous !!!!
J'ai un petit problème que je n'arrive pas à résoudre, je récupère via un formulaire, des données, ensuite je souhaiterais enregistrer ces données dans un fichier texte, mais cela ne fonctionne pas, pourtant lorsque je fais echo, cela affiche bien la valeur de mes variables, donc j'en déduit que c'est un problème soit d'écriture dans le fichier ou d'ouverture du fichier.
Voici le code :
Ou serait mon erreur ?
Merci.
J'ai un petit problème que je n'arrive pas à résoudre, je récupère via un formulaire, des données, ensuite je souhaiterais enregistrer ces données dans un fichier texte, mais cela ne fonctionne pas, pourtant lorsque je fais echo, cela affiche bien la valeur de mes variables, donc j'en déduit que c'est un problème soit d'écriture dans le fichier ou d'ouverture du fichier.
Voici le code :
<?php if(!empty ($_POST['nom']) and !empty($_POST['mail']) and !empty($_POST['texte'])) { if (isset($REMOTE_ADDR)) { $ip = $REMOTE_ADDR; } else { $ip = "adresse IP inconnue"; } $mail = $_POST['mail']; $nom = $_POST['nom']; $message = $_POST['texte']; // vérification de l'e-mail $atom = '[-a-z0-9!#$%&\'*+/=?^_`{|}~]'; // caractères autorisés avant l'arobase $domain = '([a-z]([-a-z0-9]*[a-z0-9]+)?)'; // caractères autorisés après l'arobase (nom de domaine) $regex = '^' . $atom . '+' . // Une ou plusieurs fois les caractères autorisés avant l'arobase '(\.' . $atom . '+)*' . // Suivis par zéro point ou plus // séparés par des caractères autorisés avant l'arobase '@' . // Suivis d'un arobase '(' . $domain . '{1,63}\.)+' . // Suivis par 1 à 63 caractères autorisés pour le nom de domaine // séparés par des points $domain . '{2,63}$'; // Suivi de 2 à 63 caractères autorisés pour le nom de domaine // test de l'adresse e-mail if (eregi($regex, $mail)) { // le problème doit se situer à ce niveau $fichierContact = fopen("fichiersTextes/contact.txt", "a"); // ouverture du fichier en écriture seule if (is_writable('$fichierContact')) // si le fichier est accessible en écriture { fwrite($fichierContact, nl2br($nom)."\n"); // inscriptions dans le fichier fwrite($fichierContact, nl2br($ip)."\n"); fwrite($fichierContact, nl2br($mail)."\n"); fwrite($fichierContact, nl2br($message)."\n"); fclose($fichierContact); echo "<p>Merci $nom votre message a bien été enregistré</p>"; } else { echo "<p>une erreur s'est produite, merci d'en avertir le <a href='mailto:XXXXX'>webmaster</a>"; } } else { echo "<p>L'adresse e-mail $mail n'est pas valide</p>"; } } else { echo "<p>Vous devez remplir tout les champs.</p>"; } ?>
Ou serait mon erreur ?
Merci.
A voir également:
- [php]erreur d'écriture/ouverture fichier .txt
- Fichier bin - Guide
- Fichier epub - Guide
- Fichier rar - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier .dat - Guide
3 réponses
A première vu, je dirai que le probleme ce situe à ce moment là :
Tu utilise la fonction is_writable() avec en paramètre une ressource de type "fichier", alors qu'il faut lui passez une chaine de caractère.
Comme il ne trouve aucun fichier correspondant (car PHP transforme la ressource un chaine de caratère, mais à ca manière) tu n'a jamais accès au fichier pour écrire dedans.
if (is_writable('$fichierContact'))
Tu utilise la fonction is_writable() avec en paramètre une ressource de type "fichier", alors qu'il faut lui passez une chaine de caractère.
Comme il ne trouve aucun fichier correspondant (car PHP transforme la ressource un chaine de caratère, mais à ca manière) tu n'a jamais accès au fichier pour écrire dedans.
Merci GallyNet,
Voilà, j'ai changé en ceci :
Ca fonctionne, parfaitement :-)
J'aurais une autre question au passage, je souhaites protéger le dossier contenant ce fichier texte, j'ai pensé qu'en mettant un .htaccess, ce serait le plus simple, mais est-ce que cela ne va pas empêcher ce code de s'exécuter ?
Voilà, j'ai changé en ceci :
if (eregi($regex, $mail)) { // le problème doit se situer à ce niveau $fichierContact = "fichiersTextes/contact.txt"; if (is_writable($fichierContact)) // si le fichier est accessible en écriture { $ecriture = fopen($fichierContact, "a"); // ouverture du fichier en écriture seule fwrite($ecriture, nl2br($nom)."\r\n"); // inscriptions dans le fichier fwrite($ecriture, nl2br($ip)."\r\n"); fwrite($ecriture, nl2br($mail)."\r\n"); fwrite($ecriture, nl2br($message)."\r\n\r\n"); fclose($ecriture); echo "<p>Merci $nom votre message a bien été enregistré</p>"; }
Ca fonctionne, parfaitement :-)
J'aurais une autre question au passage, je souhaites protéger le dossier contenant ce fichier texte, j'ai pensé qu'en mettant un .htaccess, ce serait le plus simple, mais est-ce que cela ne va pas empêcher ce code de s'exécuter ?