- Home
- Categorie
- Coding e Sistemistica
- PHP
- Sto impazzendo, come fare la pagina php legata a un form html?
-
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
-
Funziona!!!!:D ti ringrazio!
Ciao
-
Ci sono degli ottimi esempi in rete di come costruire un'area riservata con un alto grado di sicurezza, ma per capirli biosogna avere una buona conoscenza del php... che io per es. non ho
-
Esatto, in un form di registrazione conviene usare il metodo post, e quando dall'altra parte recuperi i dati ovviamente li recuperi con post:
$nome=$_POST['nome'];
ti consiglio inoltre nella pagina controllo.php di togliere il codice html, usa solo php.Ciao
@Vanilla said:
ok provo, quindi non uso il metodo get ma il post..
-
TI RICORDO COMUNQUE CHE IL TUTTO NON PUO' FUNZIONARE CON PAGINE HTML MA SOLO SOTTO ESTENSIONE PHP
<?php
if (isset($_POST['invia'])) // SE VIENE PREMUTO IL PULSANTE INVIA DEL MODULO
{
$email = strip_tags($_POST['email']);// QUESTO CONTROLLO SERVE PER I CAMPI OBBLIGATORI
if ((!$_POST['intestazione']) || ($_POST['intestazione'] =="") OR
(!$_POST['cognome']) || ($_POST['cognome'] =="") OR
(!$_POST['nome']) || ($_POST['nome'] =="") OR
(!$_POST['indirizzo']) || ($_POST['indirizzo'] =="") OR
(!$_POST['num']) || ($_POST['num'] =="") OR
(!$_POST['citta']) || ($_POST['citta'] =="") OR
(!$_POST['stato']) || ($_POST['stato'] =="") OR
(!$_POST['tel']) || ($_POST['tel'] =="") OR
(!$_POST['email']) || ($_POST['email'] =="") OR
(!$_POST['piva']) || ($POST['piva'] ==""))
{
echo "Compilare i campi con asterisco<b><a href='#' onClick='history.go (-1)'>INDIETRO</a></b>";
}
else if (!eregi("^[.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$",$email))
{
echo "E-M@IL NON VALIDA PREGO REINSERIRLA <b><a href='#' onClick='history.go (-1)'>INDIETRO</a></b>";
}
else
{
$int = strip_tags($_POST['intestazione']);
$cognome = strip_tags($_POST['cognome']);
$nome = strip_tags($_POST['nome']);
$indirizzo = strip_tags($_POST['indirizzo']);
$num = strip_tags($_POST['num']);
$cap = strip_tags($_POST['cap']);
$citta = strip_tags($_POST['citta']);
$stato = strip_tags($_POST['stato']);
$tel = strip_tags($_POST['tel']);
$fax = strip_tags($_POST['fax']);
$cell = strip_tags($_POST['cell']);
$username = strip_tags($_POST['username']);
// CONTROLLO CHE NON SIA OMESSO O CHE SIA ALMENO DI OTTO CARATTERI LO USERNAME ALTRIMENTI GLI ASSEGNO, COME USERNAME, LA M@IL
if ($username == "")
{
$user = $email;
}
else
{
$user = $username;
}
$user_str = strlen($user);if ($user_str <
{
echo "USERNAME MINORE DI OTTO CARATTERI <b><a href='#' onClick='history.go (-1)'>INDIETRO</a></b></td>
</tr>";
}
else
{
// CODICE CON 12 CARATTERI ALFANUMERICI CASUALI
// QUESTO SERVE PER RICEVERE CONFERMA DALL'INDIRIZZO INDICATO
$numcod = 12;
$strx = '';
for ($i=1; $i<=$numcod; $i++)
{
$set = array(rand(65,90),rand(97,122),rand(48,57));
$strx .= chr($set[rand(0,2)]);
}
$codice = $strx; // QUESTO E' IL CODICE
$codice_md5 = md5($codice); // CODICE CRIPTATO IN MD5// INSERISCO I DATI NEL DATABASE
$insert = "INSERT INTO tabella (intestazione,cognome,nome,indirizzo,num,cap,citta,stato,tel,fax,cell,email,username,password,
codice) VALUES ('" . $int . "','" . $cognome . "','" . $nome . "','" . $indirizzo . "','" . $num . "','" . $cap . "','" . $citta . "','" . $stato . "','" . $tel . "','" . $fax . "','" . $cell . "','" . $email . "','" . $user . "','" . $password . "','" . $codice_md5 . "')";
mysql_query($insert,$conn) or die ("Impossibile eseguire l'operazione richiesta.<br>Cliente <b>$int</b> non inserito nel DB");// SPEDISCO LA MAIL AL CLIENTE
$oggi = date("d/m/Y");
$ore = date("H:i");
// VARIABILI CORPO MAIL
$messaggiox = "<b>ATTIVA ACCOUNT</b>";
$messaggio_server = $trad['messaggio_server']; // ALTRA VARIABILE$da = maildelmittente; // MAIL MITTENTE
$a = $email; // VARIABILE NELLA FUNZIONE MAIL CLIENTE
$oggetto = "OGGETTO DELLA MAIL"; // OGGETTO MAIL CLIENTE$ind_web = "tuositoweb"; // IL TUO SITO WEB PER EVENTUALI COLLEGAMENTI
// NUOVO MESSAGGIO MAIL IN FORMATO HTML
$messaggio = "TUTTO IL CONTENUTO DELLA MAIL - TI CONSIGLIO DI FARE UNA SEMPLICE PAGINA HTML";
// FINE NUOVA MESSAGGIO MAIL
$intestazioni = "From: TUO SITO WEB - Registrazione <$da> \r \n";
$intestazioni .= "Reply-To: TUO SITO WEB - Registrazione <$da> \r \n";
$intestazioni .= "X-Mailer: PHP/" . phpversion();
$intestazioni .= "MIME-version: 1.0\n";
$intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n"; /impostiamo il formato della mail in HTML/$corpo = "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">";
$corpo .= "<HTML><HEAD>";
$corpo .= "<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">";
// SE AL CORPO DEL MESSAGGIO ESISTE SCRIPT JAVA INSERIRLO QUI
$corpo .= "<script language="JavaScript" type="text/JavaScript">
<!--
function MM_openBrWindow(theURL,winName,features) {
window.open(theURL,winName,features);
}
//-->
<!--
function MM_displayStatusMsg(msgStr) {
status=msgStr;
document.MM_returnValue = true;
}
//-->
</script>";
$corpo .= "</HEAD>";
$corpo .= "<BODY>";
$corpo .= $messaggio;
$corpo .= "</BODY></HTML>";
@mail($a, $oggetto, $corpo, $intestazioni);// CHIUDO MAIL CLIENTE
echo "VI E' STATA INVIATA UNA MAIL ALL'INDIRIZZO INDICATO -LEGGERE QUANTO SCRITTO";
}
}
}
else
{QUI IL FORM CON ACTION POST
ES:
<form name="form_registrazione" method="post" action**="<?php echo $_SERVER['PHP_SELF']; ?>**"></form>
}