- Home
- Categorie
- Coding e Sistemistica
- PHP
- Sto impazzendo, come fare la pagina php legata a un form html?
-
@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
-
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>
-
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!!
-
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?
-
ok, ho detto una stron...a.
-
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.
-
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?
-
ok ho dimenticato delle e a type, ma correggendo l'errore c'è sempre non cambia nulla..
-
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
-
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>
-
quando recuperi i dati prova a fare in questo modo:
$cognome = $_POST['cognome'];
-
ok provo, quindi non uso il metodo get ma il post..
-
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.
-
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!
-
...<form method=get action="tapullino.php">
prova con <form action="xxx.php" method="get"> anche se preferisco POSTper 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..
-
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.
-
Io stavo avendo da stamattina lo stesso tuo problema... e il mio caso era ancora più semplice...
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.phpL'unica domanda che ho è: "perchè in locale no e sul server Aruba sì???"
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!
-
Ok, grazie mille a tutti per l'aiuto, domani provo di nuovo... e speriamo sia la volta buona!!
-
Grazie wilma_dammi_la_clava ci sono riuscita!!!
Devo inoltre inserire il codice php per far sì che nel campo email sia inserita la "@" , far in modo che alcuni campi siano obbligatori, e mandare una mail di conferma iscrizione all'indirizzo mail inserito dall'utente. Chi mi da una mano?
-
Metti un ciclo if con questa condizione:
ereg("[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+", $variabile_email) ``` ciao