Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Scrivere dati di un form in file .txt - errore

    Ciao

    volevo provare a realizzare un semplice meccanismo di Newsletter in PHP. Ho preparato in HTML il form seguente:

    // Newsletter.php
    <form name=AggiungiMail action=Newsletter.php method=post>
    <input type=text name=NuovaMail>
    <input type=submit name=MandaMail value=Iscriviti>
    </form>


    Poi in PHP ho aggiunto:

    <?php

    $File = "emails.txt";
    $fo = fopen($GLOBALS["File"], "a");
    $NuovaMail=$_POST['NuovaMail'];
    $LunghezzaMail = strlen($NuovaMail . "\n");
    $fw = fwrite($fo, $NuovaMail . "\n", $LunghezzaMail);
    $fc = fclose($fo);

    ?>

    Mi dà il seguente errore:
    Notice: Undefined index: NuovaMail in C:\www\Newsletter.php on line 22

    Cosa posso avere sbagliato? La variabile "NuovaMail" del textfield html l'ho richiamata in PHP con $NuovaMail=$_POST['NuovaMail']; (questa è la riga 22) Mi pare si faccia così, no?

  2. #2
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    mettere gli apici nel codice html no?
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  3. #3
    Li ho aggiunti ma non è cambiato nulla.

    <form name="AggiungiMail" action="Newsletter.php" method="post">
    <input type="text" name="NuovaMail">
    <input type="submit" name="MandaMail">
    </form>

    <?php

    $File = "emails.txt";
    $fo = fopen($GLOBALS["File"], "a");
    $NuovaMail = $_POST["NuovaMail"];
    $LunghezzaMail = strlen($NuovaMail . "\n");
    $fw = fwrite($fo, $NuovaMail . "\n", $LunghezzaMail);
    $fc = fclose($fo);

    ?>

    La cosa strana è che premendo il pulsante, l'indirizzo email viene scritto sul file e al riavvio della pagina l'errore non compare più, e così per le volte successive che si preme il pulsante. E' come se fosse un problema di inizializzazione di $NuovaMail, ma non riesco a capire cosa dovrei fare

  4. #4
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Ricevi il Notice perchè quando esegui lo script la variabile $_POST['NuovaMail'] non è settata. Per evitare questo "avviso", difatti non si tratta di un vero e proprio errore, puoi usare la funzione isset() per controllare quando vengono inviati i dati dal form.

    Codice PHP:
    if(isset($_POST['MandaMail'])) {
    //codice per la scrittura su emails.txt ...
    }
    else {
    //stampi il form


  5. #5
    grazie ho fatto come hai detto tu e funziona perfettamente!
    Se ho ben capito questa riga

    if(isset($_POST['MandaMail']))

    dice "se il pulsante MandaMail è stato premuto allora esegui questo codice (cioè quello di scrivere su file).

  6. #6
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Giusto.

    Inoltre, per controllare una variabile è stata valorizzata oppure no hai a disposizione una funzione simile ad isset(), cioè empty().


    (quando usi le funzioni fwrite() e fclose() non è necessario memorizzarle in variabili dedicate.)


  7. #7
    a proposito di funzioni e parole chiave, la documentazione di riferimento è quella di ? Finora mi sono limitato ad usare google ...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.