Visualizzazione risultati 1 fino 10 di 10

Discussione: passaggio di variabili da form html a php

  1. #1
    NonSoloFisica2 non è connesso Utente AlterBlog
    Data registrazione
    11-04-2017
    Messaggi
    14

    Predefinito passaggio di variabili da form html a php

    Salve. Sto cercando di passare variabili acquisite da un form html ad un php. Ho seguito tutti i suggerimenti già dati da voi in precedenti discussioni di alcuni anni or sono. Ho scritto il codice esemplificativo che qui riporto in cui funziona tutto (anche la chiamata e-mail qui non riportata)salvo il passaggio delle variabili "nome", "email", "msg", dal form al php che ovviamente non le scrive nel file "formmail". Ho controllato e ricontrollato ma non riesco a trovare l'errore o comunque a risolvere il problema. Grazie NonSoloFisica2.

    Codice PHP:
    <html>
    <body>
    <form method="POST" action="formmail.php">
    Inserisci il tuo nome<br>
    <input type="text" name="nome"> <br>
    Inserisci il tuo indirizzo e-mail<br>
    <input type="text" name="email"> <br>
    Scrivi un messaggio <br>
    <textarea name="msg"> </textarea><br>
    <input type="submit" value="invia Modulo">
    <?php
    $nome
    =$_POST["nome"];
    $email=$_POST["email"];
    $msg=$_POST["msg"];
    //compilo un messaggio combinando i dati recuperati dal form
    $testo="Nome:".$nome."\n"
    ."E-mail:".$email."\n"
    ."Messaggio:\n".$msg;
    //Apre il file (formmail.php) per appendere i nuovi dati
    $fp=fopen("formmail.php","a");
    fwrite($fp,$testo);
    fclose($fp);
    echo
    'Grazie per averci contattato';
    ?>
    </form>
    </body>
    </html>
    Ultima modifica di darkwolf : 06-06-2017 alle ore 21.53.08 Motivo: +php

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Qualunque sia il risultato che intendi ottenere, è molto improbabile che tu debba davvero scrivere il contenuto di alcune variabili in coda ad uno script PHP.

    Inoltre, poiché l'action del form è formmail.php, i parametri nome, email e msg vengono passati a formmail.php appena il modulo viene inviato, dunque non ha senso cercare di leggerli nella pagina stessa.
    A meno che la pagina stessa non sia formmail.php, ma in quel caso non ha senso che lo script apra se stesso per aggiungersi una stringa...

  3. #3
    NonSoloFisica2 non è connesso Utente AlterBlog
    Data registrazione
    11-04-2017
    Messaggi
    14

    Predefinito

    Grazie a mzanella per la sollecita risposta. Il risultato che intendo ottenere è la memorizzazione nel file formmail.php dei dati di un visitor del mio sito. Su tuo suggerimento ho eliminato lo script php, ma i parametri nome, email,msg non vengono comunque scritti su formmail.php. Del resto io mi sono attenuto a tutte le indicazioni provenienti dai testi, dal web, e da questo forum: una volta che html ha acquisito le informazioni, è php che deve riceverle per poter scrivere su file. Almeno così tutti dicono. Ho copiato attentamente gli esempi proposti da più di una fonte, ma i parametri non vengono passati all'istruzione $nome=$_POST["nome"]; ecc. Inoltre mi scuso ma certamente per mia incompetenza non ho capito la tua ultima frase. NonSoloFisica2

  4. #4
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ok, in questo caso l'errore sta nell'attributo action del form.
    Nel codice della pagina che hai mostrato (chiamiamola index.php tanto per darle un nome) sono presenti sia il form per l'invio dei dati che il codice PHP per gestirli (con le varie letture da $_POST, la fwrite, eccetera). Però hai usato formmail.php come action del modulo, quindi i dati vengono inviati direttamente a quest'ultima pagina (che immagino sia pensata solo per essere scritta, non per gestire i dati in arrivo da un modulo), anziché ad index.php che sarebbe in grado di gestirli.

    Una soluzione è cambiare l'action:
    Codice PHP:
    <form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    In questo modo i dati saranno inviati alla pagina stessa, e lo script per salvarli si attiverà.

    Altra cosa: al momento la fwrite (come il resto dello script) viene chiamata ad ogni caricamento della pagina. Questo significa che, soltanto aprendo la pagina per compilare il modulo, parte una scrittura sul file formmail.php (che produrrà campi vuoti come "Nome: \nE-mail:\nMessaggio:\n"). Sarebbe meglio attivare quel codice solo a condizione che siano stati ricevuti dei dati tramite POST:
    Codice PHP:
    if (isset($_POST['nome'], $_POST['email'], $_POST['msg'])) {
    $nome=$_POST["nome"];
    $email=$_POST["email"];
    $msg=$_POST["msg"];
    //compilo un messaggio combinando i dati recuperati dal form
    $testo="Nome:".$nome."\n" ...
    ...
    }
    Ultima osservazione: perché scrivere i dati ricevuti in un file PHP?
    Per questo genere di operazioni è più semplice e sicuro utilizzare un database. Pensa, per esempio, se qualcuno aprisse il file formmail.php nel browser: potrebbe vedere in chiaro gli indirizzi email degli utenti...

  5. #5
    NonSoloFisica2 non è connesso Utente AlterBlog
    Data registrazione
    11-04-2017
    Messaggi
    14

    Predefinito

    Grazie mzanella. Ora funziona! Ma lo statement "<?php echo $_SERVER['PHP_SELF']; ?>" a me sembra una macumba togliendo "php echo" per esempio funziona ugualmente. Comunque basta che funzioni!
    Come mai tutte le guide e gli esempi reperibili dal web ed anche da questo forum dicono altre cose?
    La tua ultima osservazione mi lascia perplesso. Al file formmail.php posso aver accesso soltanto io. Oppure no? Quel file è accessibile anche ad altri?
    Poiché i tuoi suggerimenti sono stati determinanti per risolvere il mio problema, seguirò anche questa tua ultima osservazione. Non conosco i database come MySql ma poichè negli ultimi 50 anni (ho detto 50!) ho dovuto imparare decine di linguaggi di programmazione per la mia professione.. Imparerò anche questo. Di nuovo grazie. NonSoloFisica2

  6. #6
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ma lo statement "<?php echo $_SERVER['PHP_SELF']; ?>" a me sembra una macumba togliendo "php echo" per esempio funziona ugualmente
    In questo caso specifico non è necessario: omettendo l'attributo action si sottintende che il form debba inviare i dati alla pagina stessa. Però alcuni (tra cui io) preferiscono renderlo comunque esplicito, ad esempio usando $_SERVER['PHP_SELF'], che rappresenta il percorso dello script in esecuzione.

    Come mai tutte le guide e gli esempi reperibili dal web ed anche da questo forum dicono altre cose?
    ...vallo a sapere ! Sulla base delle mie esperienze, penso che a volte diano per scontato che si lavori in un certo contesto, oppure mostrano un esempio che è corretto singolarmente ma ha dei problemi se inserito in un sistema più grande ed articolato.

    La tua ultima osservazione mi lascia perplesso. Al file formmail.php posso aver accesso soltanto io. Oppure no? Quel file è accessibile anche ad altri?
    A meno che tu non intervenga esplicitamente in qualche modo per vietarlo, ogni file PHP nel tuo spazio è accessibile a chiunque ne conosca (o abbia modo di ricavarne) l'URL. Potenzialmente potrebbe essere Google stesso a trovarlo ed indicizzarlo, mostrandolo tra i risultati delle ricerche.
    Ad esempio io vi sono appena acceduto .
    Un modo rapido per bloccarne l'accesso via web è inserire una regola nel file .htaccess, così facendo nemmeno tu potrai accedervi dal browser (ma potrai farlo attraverso altri sistemi, come FTP, il gestore file di AlterVista, ecc.).

  7. #7
    NonSoloFisica2 non è connesso Utente AlterBlog
    Data registrazione
    11-04-2017
    Messaggi
    14

    Predefinito

    Gentile mzanella, ho un altro problema. Probabilmente è improprio porti la questione che segue e quindi me ne scuso. Ho due domini: quello che conosci su Altervista (nonsolofisica2.altervista.org) ed uno a pagamento su Aruba (nonsolofisica.it). Riportato il codice che tu mi hai suggerito (perfettamente funzionante su Altervista) in Aruba, ho scoperto, dopo una intera giornata di fallimenti, che quell'editor non accetta l'elemento <textarea>. Appena arriva <textarea> cancella tutti gli altri statements succesivi ponendo un pulsante "Invia Modulo" nell'editor stesso. Aruba non ha un forum come Altervista ed ogni richiesta di assistenza è a pagamento. Puoi aiutarmi oppure la richiesta è impropria? nonsolofisica2

  8. #8
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Ho in gestione un dominio su Aruba, ma non ho mai riscontrato questo problema.
    Generalmente io scrivo i miei file in locale nel mio computer e, quando sono pronti, li copio nel server. Se segui un procedimento diverso (ad esempio usando l'editor fornito da Aruba per modificare i file HTML/PHP) può darsi che sia quello il problema (problema di Aruba a questo punto, non sta né in cielo né in terra che un editor possa decidere di non accettare un elemento HTML standard come la texarea).

    Se hai modo, prova a modificare il file in locale, e caricarlo tramite FTP.
    Sicuro che l'assistenza sia a pagamento? Non ne ho mai usufruito, ma ho sempre creduto fosse inclusa nel pagamento annuale.

  9. #9
    NonSoloFisica2 non è connesso Utente AlterBlog
    Data registrazione
    11-04-2017
    Messaggi
    14

    Predefinito

    Ciao mzanella. Scusa il ritardo con cui rispondo alle tue ultime osservazioni, ma sono stato disperatamente occupato a risolvere il problema di <textarea> e successivamente di un'altro problema intervenuto con <iframe> (ora risolto).
    Hai ragione tu sui ticket di Aruba. Il nome ticket, di sanitaria memoria, mi aveva portato fuori strada. Il tuo dubbio mi ha convinto a provare e avevi ragione: non sono a pagamento. Ho aperto un ticket e dopo molte verifiche mi hanno detto che il mio problema con <textarea> dipende da loro, Aruba. E' l'editor di Aruba che ha un "bug". Hanno verificato ed ora ci stanno lavorando sopra per risolverlo. Grazie di tutto. nonsolofisica2

  10. #10
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Prego !

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •