• User

    Sto impazzendo, come fare la pagina php legata a un form html?

    Ho fatto il form html, e fin qui tutto ok, ma non riesco a fare lo script php, tra <? e ?> non rieso a capire cosa inserire!
    Aiuto :arrabbiato:


  • User Attivo

    cioe? spegati meglio. cosa ti serve, qual' è il prblema?


  • User

    Ho inserito nella pagina html un form di registrazione (inserisci nome, cognome,email etc etc..) ho bisogno di fare anche una pagina php legata a quella html con scritto ad esempio "Grazie signor. Pincopallino, riceverà una mail di notifica etc etc.." "Ha dimenticato di complirarei capi obbligatori"...

    ho scritto un codice di questo tipo:

    <?
    echo "Grazie $nome $cognome,
    echo "abbiamo registrato il suo indirizzo email : $email", riceverà una mail di conferma";
    ?>
    <?php
    mail("$email" "Notifica", "Lei risulta iscritto\testo testo\testo");
    ?>

    if(empty($nome)) { return false; }

    if(empty($cognome)) { return false; }
    if(empty($email)) { return false; }

    Mi sa tanto che tutta questa roba l'ho scritta in modo confusionario e vada scritta in tutta un altra maniera 😞


  • User Attivo

    @Vanilla said:

    Ho inserito nella pagina html un form di registrazione (inserisci nome, cognome,email etc etc..) ho bisogno di fare anche una pagina php legata a quella html con scritto ad esempio "Grazie signor. Pincopallino, riceverà una mail di notifica etc etc.." "Ha dimenticato di complirarei capi obbligatori"...

    ho scritto un codice di questo tipo:

    <?
    echo "Grazie $nome $cognome,
    echo "abbiamo registrato il suo indirizzo email : $email", riceverà una mail di conferma";
    ?>
    <?php
    mail("$email" "Notifica", "Lei risulta iscritto\testo testo\testo");
    ?>

    if(empty($nome)) { return false; }

    if(empty($cognome)) { return false; }
    if(empty($email)) { return false; }

    Mi sa tanto che tutta questa roba l'ho scritta in modo confusionario e vada scritta in tutta un altra maniera 😞 Io farei una roba del genere, vediamo se ti è di aiuto

    
    <?
    if((empty($nome))or(empty($cognome))or(empty($email))) { 
         echo "Hai dimenticato qualche campo vuoto";
         exit; 
    }else{
         $headers = "From: Nomesito <[email protected]\n"."Reply-To: $email\n"."MIME-Version: 1.0\n"."Content-Type: text/html; charset=iso-8859-1\r\n"."X-Mailer: PHP/".phpversion();
         if(mail($email, "notifica", "Lei risulta\testo testo", $headers)){
               echo "Grazie $nome $cognome,
               echo "abbiamo registrato il suo indirizzo email : $email", riceverà una mail di conferma";
          }else{
               echo "C'è stato qualche problema nell'invio dell'email";
          }
    }
    ?>
    
    

    Ti consiglio tuttavia di utilizzare le variabili globali, quindi, ad esempio, invece di $email $_GET['email'] o $_POST['email'] a seconda del metodo dichiarato nel modulo della pagina html


  • User

    Niente.. 😞 forse faccio qualche megaerrore
    Il codice della pag htm è questo:

    <html>
    <head>
    <title>Pagina di registrazione</title>
    </head>
    <body bgcolor="#F5F5F5">
    <p align="center"> <font size="4" face="tahoma, verdana, arial" color="#708090">
    Inserisci i tuoi dati<br>
    <font size="2"> I campi segnati da * sono obbligatori!</font>
    <br><br>
    <FORM ACTION="prova2.php" METHOD="POST">
    *Nome :
    <input type="text" name="nome"> <br>
    *Cognome:
    <input type="text" name="cognome"><br>
    *Email :
    <input type="text" name="email"><br>

    Città :
    <input type="text" name="città"><br>

    *Cellulare:
    <input type="number" name="cellulare"><br>

    *Accetta il trattamento dei dati personali:
    <input type="radio" name="accetta"><br>
    <br>
    <input type= submit name="submit" value="Invia">
    <input type=reset name="reset" value="Annulla">
    </form>
    </body>
    </html>

    e la pagina php :

    <html>
    <head>
    <meta http-equiv="Content-type" content="text/html" charset="iso-8859-1">
    </head>
    <body>

    <?php

    $cognome=$_POST['cognome'];
    $nome=$_POST['nome'];
    $email=$_POST['email'];
    $città=$_POST['città'];
    $accetta=$_POST['accetta'];

    echo"
    <p>Grazie: <B>$cognome $nome</B></p>
    <p>I dati da lei inseriti sono:</p>
    <p>Email: <B>$email</B></p>

    <p>Città: <B>$città</B></p>
    <p>Accettazione del trattamento dei dati personali: <B>$accetta</B></p>";

    echo "<p>Le abbiamo inviato una mail di conferma.</p>"
    ?>

    </body>
    </html>


  • User Attivo

    l'hai detto sorella, hai fatto un mega errore.

    nella pagina php non devi inserire <html> <head> etc, la pagina

    che processa il modulo, deve essere in php puro!!


  • User Attivo

    No, il php è un linguaggio HTML-**embedded
    **per cui può essere benissimo "intrecciato" con html, l'importante è che la pagina venga salvata con estensione .php Vanilla posso sapere cos'è che non funziona? Dà qualche errore o cosa?


  • User Attivo

    ok, ho detto una stron...a.


  • Super User

    Ciao Vanilla,
    ti consiglio vivamente di dare una lettura alla guida di giorgio su php e magari, se hai intenzione di approfondire il linguaggio e la programmazione, di acquistare un buon manuale giusto per avere una guida di riferimento che ti segua nell'apprendimento della programmazione.

    Per gli elementi basilari la guida di giorgio è fatta molto bene.


  • User

    Bene, ho studiato i primi capitoletti della guida al php, ma gli erori escono sempre: questo è quello che ho appana fatto:
    codice pagina html:

    <html>
    <body>
    <form method=get action="controllo.php">
    <center>
    Inserisci qui i tuoi dati:<br>
    I campi contrassegnati da * sono obbligatori!<br>
    <form method=get action="tapullino.php">
    <table>
    *Nome:
    <br><input typ="text" name="nome" size="40">
    <br>
    *Cognome:<br>
    <input typ="text" name="cognome" size="40">
    <br>
    *Email:<br>
    <input typ="text" name="email" size="40">
    <br>
    *Cellulare:<br>
    <input typ="number" name="cellulare" size="40">
    <br>
    Città:
    <br><input type="text" name "citta" size=40"><br>
    Cap:<br>
    <input type="number" name="cap" size =40"><br>
    Tel. fisso:<br>
    <input type="number" name="fisso" size="40"><br>
    Nome azienda:<br>
    <input type="text" name="azienda" size="40"><br>
    Posizione lavorativa:<br>
    <select name="posizione_lavorativa">
    <option value="studente">Studente
    <option value="libero">Libero professionista
    <option value="segretario">Segretario
    <option value="insegnante">Insegnante
    <option value="ricercatore">Ricercatore
    <option value="altro">Altro
    </select>
    <br>
    <br>
    *Accetta il trattamento dei dati personali:
    <input type="radio" name="accetta"><br>
    <br>
    <input type= submit name="submit" value="Invia">
    <input type=reset name="reset" value="Annulla">
    </form>
    </table>
    </body>
    </html>

    e questa la pagina di controllo php:

    <html>
    <body>
    <center>
    <h1>Controllo dati da lei inseriti:</h1>
    <?php
    echo "Gentile $cognome $nome ,<br>";
    echo "abbiamo registrato il suo indirizzo email: $email <br>";
    echo "il suo numero di cellulare è $cellulare . <br>";
    echo "Lei è residente a $città , cap $cap , il suo numero di telefono fisso è $fisso <br> ";
    echo "Nome della sua azienda: $azienda . <br>";
    echo "Le sarà inviata una mail di conferma, grazie!<br>";
    ?>
    </body>
    </html>

    Facendo una prova e compilando i dati del form -> invia, appare un messaggio di errore così:
    Notice: Undefined variable: cognome in c:\programmi\easyphp1-8\www\controllo.php on line 7
    fino adf altre righe successive alla 7.
    Ho salvato entrambi i file nella cartella www di easy php, ci sto diventando scema, non capisco quale e dove sia l'errore? Avrò dimenticato qualcosa?


  • User

    ok ho dimenticato delle e a type, ma correggendo l'errore c'è sempre non cambia nulla..
    😞


  • User

    Ok ho appena fatto un nuovo codice php così:

    <html>
    <head>

    <?php

    $cognome= "cognome";
    $nome= "nome";
    $email= "email";
    $città= "città";
    $cap= "cap";
    $telefonofisso= "telefonofisso";
    $enteazienda= "enteazienda";
    $posizionelavorativa= "posizionelavorativa";
    $accetta= "accetta";
    ?>
    </head>
    <body>
    <center>
    <h1>Controllo dati da lei inseriti:</h1>
    <?php
    echo "Gentile $cognome $nome ,<br>";
    echo "abbiamo registrato il suo indirizzo email: $email <br>";
    echo "il suo numero di cellulare è $cellulare . <br>";
    echo "Lei è residente a $città , cap $cap , il suo numero di telefono fisso è $fisso <br> ";
    echo "Nome della sua azienda: $azienda . <br>";
    echo "Le sarà inviata una mail di conferma, grazie!<br>";
    ?>
    </body>
    </html>

    Ora easyphp mi segnale meno errori, "Undefined variable" alla riga 27,28,29


  • User

    Nel modo seguente, controllando i nomi delle variabili, che per ditrazione avevo scritto sbagliati, inviando i dati dal form viene visualizzato tutto il codice stesso:

    <html>
    <body>

    <?php

    $cognome= "cognome";
    $nome= "nome";
    $email= "email";
    $città= "citta";
    $cap= "cap";
    $telefonofisso= "fisso";
    $azienda= "azienda";
    $posizionelavorativa= "posizione_lavorativa";
    $accetta= "accetta";
    $cellulare=" cellulare";
    ?>

    <center>
    <h1>Controllo dati da lei inseriti:</h1>
    <?php
    echo "Gentile $cognome $nome ,<br>";
    echo "abbiamo registrato il suo indirizzo email: $email <br>";
    echo "il suo numero di cellulare è $cellulare . <br>";
    echo "Lei è residente a $citta , cap $cap , il suo numero di telefono fisso è $fisso <br> ";
    echo "Nome della sua azienda: $azienda . <br>";
    echo "Le sarà inviata una mail di conferma, grazie!<br>";
    ?>
    </body>
    </html>


  • Super User

    quando recuperi i dati prova a fare in questo modo:

    $cognome = $_POST['cognome'];

    :ciauz:


  • User

    ok provo, quindi non uso il metodo get ma il post..


  • Super User

    scusa non avevo visto che usi il get:

    method="GET" -> $_GET[nome_variabile];

    method="POST" -> $_POST[nome_variabile];

    il concetto non cambia.

    quando scrivi codice html ricordati che il valore che assegni ad un parametro va sempre incluso nei doppi apici quindi:

    <form method=get ...> NON VA BENE!!

    <form method="GET" ....> forma corretta.

    il problema delle variabili risiede in un'impostazione del file di configurazione php.ini.

    l'impostazione riguarda il parametro register_globals, se impostato a on ti consente di recuperare i dati interrogando direttamente il nome della variabile (come indicato nella guida e come hai fatto tu), se questo parametro però è impostato a off (impostazione altamente probabile) per recuperare i dati devi utilizzare l'array associativo $_GET o $_POST in relazione al metodo usato dalla form.

    se desideri scrivere codice portabile quanto più indipendente possibile dalle impostazioni del server utilizza sempre l'array associativo.

    in più è buona norma verificare l'esistenza di una variabile che arriva dall'esterno prima di utilizzarla quindi:

    $cognome = isset($_POST['cognome'])?$_POST['cognome']:'';

    questa istruzione dice se esiste l'elemento con key 'cognome' nell'array post assegna alla variabile $cognome il suo contenuto, in caso contrario (definito dai due punti) assegna stringa vuota.

    utilizzando questo controllo non otterrai errori anche se la variabile non esiste.

    ti ricordo che la non esistenza di una variabile è BEN DIVERSA dalla variabile che contiene stringa vuota.


  • User

    Grazie mille, a sto punto credo che il problema sia proprio nel file di configurazione: register_globals è su off, ho controllato il metodo che ho inserito nella pagina html (ok) ma anche usando l'array associativo $_POST la situazione non cambia, non so più che fare, ci rinuncio!


  • User

    ...<form method=get action="tapullino.php">
    prova con <form action="xxx.php" method="get"> anche se preferisco POST

    per il php ti conviene a mio parere mettere tutto insieme
    <?php
    $cognome= $_GET['cognome'];
    $nome= $_GET['nome'];
    $email= $_GET['email'];
    $città= $_GET['citta'];
    $cap= $_GET['cap'];
    $telefonofisso= $_GET['fisso'];
    $azienda= $_GET['azienda'];
    $posizionelavorativa= $_GET['posizione_lavorativa'];
    $accetta= $_GET['accetta'];
    $cellulare= $_GET['cellulare'];
    elseif (trim($name=$_GET['nome']) == "" OR trim($surname=$_GET['cognome']) == "" OR trim($mail=$_GET['email']) == "" OR etc etc):
    echo "Non Tutti i campi sono stati riempiti!";
    echo " <center><h1>Controllo dati da lei inseriti:</h1>";
    echo "Gentile $cognome $nome ,<br>";
    echo "abbiamo registrato il suo indirizzo email: $email <br>";
    echo "il suo numero di cellulare è $cellulare . <br>";
    echo "Lei è residente a $citta , cap $cap , il suo numero di telefono fisso è $fisso <br> ";
    echo "Nome della sua azienda: $azienda . <br>";
    echo "Le sarà inviata una mail di conferma, grazie!<br>";
    echo "</center>";
    ?>

    a questo modo almeno su architettura lamp il tutto funziona..


  • User

    ometti questo pezzo
    elseif (trim($name=$_GET['nome']) == "" OR trim($surname=$_GET['cognome']) == "" OR trim($mail=$_GET['email']) == "" OR etc etc):
    echo "Non Tutti i campi sono stati riempiti!";

    e correggi

    $città
    senno la variabile non viene trovata poi come dicevo funziona tutto.


  • User Attivo

    Io stavo avendo da stamattina lo stesso tuo problema... e il mio caso era ancora più semplice... :arrabbiato:
    Poi sono andato sulla guida di Gt, ho provato secondo l'esempio e in locale non mi fungeva... spostandomi su remoto invece è tutto ok!
    Segui questo esempio preso dalla guida Php di Gt: http://www.giorgiotave.it/guida_php/form.php

    L'unica domanda che ho è: "perchè in locale no e sul server Aruba sì???" :mmm:

    Ho fatto caso che molte volte Dreamweaver non aggiorna subito i file e continua a restituire gli stessi errori che magari erano stati commessi prima della modifica...
    In locale forse dipendeva da quello il problema!