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 :

formulaire envoie d'un fichier .txt vers un dossier


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 119
    Par défaut formulaire envoie d'un fichier .txt vers un dossier
    Bonjour,

    je suis un vrai débutant en PHP, je débute en suivant les tutos (trés intéressant de Grafikart sur Youtube)
    j'en suis qu'au chapitre 16 écriture de fichiers en PHP, j'essaie d'envoyer le mail, je clique sur inscrire , il ne s'écrit pas dans le dossier emails. Donc je bloque .
    voila la copie de mon code ( quasi identique à celui de Grafikart , j'a idéja posé la question sur son forum, mais y a personne).
    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
    <?php
    var_dump(__DIR__);
    $error = null;
    $success = null;
    $email = null;
    if (!empty($_POST['email'])) { 
        $email = $_POST['email'];
        if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $file = __DIR__ . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . date('Y-m-d') .' .txt';
            file_put_contents($file, $email . PHP_EOL, FILE_APPEND);
            $success = $email."votre mail a été enregistré." ;var_dump ($email); 
            $email = null;
        } else {
            $error = $email." est une adresse Email invalide";
        }
    }
     
    require 'elements/header.php';
    ?>
     
    <h1>S'inscrire à la newsletter</h1>
     
    <p>
        Lorem ipsum dolor sit amet consectetur adipisicing elit. Adipisci, optio delectus quaerat porro minus beatae modi iusto natus nihil voluptas repudiandae fuga totam ratione ut facilis, odio ab exercitationem sed.
    </p>
     
    <?php if ($error): ?>
        <div class="alert alert-danger">
            <?= $error ?>
        </div>
    <?php endif; ?>
     
    <?php if ($success): ?>
        <div class="alert alert-success">
            <?= $success ?>
        </div>
    <?php endif; ?>
     
    <form action="newsletter.php" method="post" class="form-inline">
        <div class="form-group">
            <input type="email" name="email" placeholder="Entrer votre email" required class="form-control" value="<?= htmlentities($email) ?>">
        </div>
        <button type="submit" class="btn btn-primary">S'inscrire</button>
    </form>
     
     
    <?php require 'elements/footer.php'; ?>
    Ce que je veux
    Mon code est identique à celui de la vidéo , je comprends pas pourquoi le fichier .txt ne s'écrit pas dans le dossier emails quand je fait submit (s'inscrire).
    Ce que j'obtiens
    j'obtiens rien justement dans le dossier Emails (rien ne s'incrit aucun fichier .txt ne s'écrit). je suis sous Ubuntu 19.04 / LAMP. le chemin vers le fichier ou je me forme est:
    ~mondossierPerso/public_html/formationPhP/scripts/newseletter.php
    ~mondossierPerso/public_html/formationPhP/scripts/emails
    et j utilise Visualcode studio. toute la formation était cool, jusqu'a ce que je tombe sur cet os.

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjour,
    Comme vous êtes en formation, avez-vous bien configuré le php.ini, pour faire ressortir toutes les erreurs ?
    Sinon, vous n'enregistrez pas le fichier la où vous pensez.
    Ajouter les deux lignes dans le code suivant pour avoir une idée de ce que vous faites:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $file = __DIR__ . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . date('Y-m-d') .' .txt';
            file_put_contents($file, $email . PHP_EOL, FILE_APPEND);
            var_dump(file);
            die();
            $success = $email."votre mail a été enregistré." ;var_dump ($email); 
            $email = null;
        }
    Vous connaissez déjà le var_dump() , le die() arrête le programme pour ne pas allez plus loin.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 119
    Par défaut
    Merci pour l'intérêt porté à mon problème de gros débutant.


    le Var_dump m'apprend pas grand chose sur ce que devient ce fichier .txt, seulement que file est une chaîne de 4 caractères.
    var_dump(file);
    die();
    "/home/mondossierPerso/public_html/formationPhP/scripts/" string(4) "file".
    le script fonctionne , mais j'ai aucune création du fichier .txt qui récupère les adresses mails dans le dossier emails. problème de configuration Php (php.ini) ?

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Il manque le $


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var_dump($file);
            die();

  5. #5
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Parce que moi j lis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $file = __DIR__ . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . date('Y-m-d') .' .txt';
    '/data/2019-06-20.txt'

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 119
    Par défaut
    ok.

    je joue avec les dossiers .'emails'. et .'data'. (qui existent) pour voir ou peut atterrir ce fichier txt.

    le var_dump($file);

    me rend bien :

    /data//data/2019-06-20.txt ou /emails/2019-06-20.txt donc en théorie tout fonctionne.

    mais rien ne s'écrit dans les dossiers pas de
    2019-06-20.txt dans l'un ou l'autre des dossiers. c'est ce qui me bloque.

  7. #7
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Sauf que cela ne correspond pas à ~mondossierPerso/public_html/formationPhP/scripts/emails


    J'essaierais avec un chemin complet :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //$file = __DIR__ . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . date('Y-m-d') .' .txt';
    $file = '/home/mondossierPerso/public_html/formationPhP/scripts/emails/'.date('Y-m-d') .' .txt';
    En s'assurant que www-data peux écrire dans ce répertoire.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 119
    Par défaut
    //$file = __DIR__ . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . date('Y-m-d') .' .txt';
    $file = '/home/mondossierPerso/public_html/formationPhP/scripts/emails/'.date('Y-m-d') .' .txt';

    //$file = __DIR__ . DIRECTORY_SEPARATOR . 'data' . DIRECTORY_SEPARATOR . date('Y-m-d') .' .txt';
    $file = '/home/mondossierPerso/public_html/formationPhP/scripts/emails/'.date('Y-m-d') .' .txt';


    nada....

    je lis mes logs tail -f /apache2/error.log :

    , j'avais un :
    PHP Warning:
    file_put_contents(/home/... /..../scripts/emails/2019-06-20 .txt): failed to open stream: Permission denied in /home...../public_html/formationPHP/scripts/newsletter.php on line 15
    du coup je passe mon dossier emails en sudo chown -R www-data:www-data & chmod -R 755 j'ai pu d'erreur dans mes logs et ça marche dans les deux cas... je comprends pas que ce fichier ne soit pas accessible en écriture et qu'il faille changer les permissions...

    peut-tête qu'il y avait mieux à faire ou plus simple pour donner l'accès en écriture ?


    Merci pour ton aide.

  9. #9
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Citation Envoyé par MaitrePylos Voir le message
    [/CODE]

    En s'assurant que www-data peux écrire dans ce répertoire.
    Je l'avais noté

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lecture fichier txt vers tableau alloué
    Par yeboum dans le forum Fortran
    Réponses: 3
    Dernier message: 27/11/2007, 10h31
  2. fichier txt vers table access Shema.ini
    Par psyko72 dans le forum VB.NET
    Réponses: 1
    Dernier message: 05/07/2007, 12h13
  3. fichier txt vers une table acces
    Par sahraoui07 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 23/03/2007, 20h02
  4. Réponses: 17
    Dernier message: 05/07/2006, 14h26
  5. fichier .txt vers Mysql
    Par Jeff87-01 dans le forum Requêtes
    Réponses: 3
    Dernier message: 29/03/2006, 20h16

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