- Home
- Categorie
- Coding e Sistemistica
- PHP
- Strano problema con semplice form
-
L'errore ti dice cosa non va, è lo stesso del precedente: hai richiamato una variabile non definita. Devi crearla comunque se la utilizzi, o fare un check.
Occhio, scrivere:
$nome="";
if(isset($_POST['nome'])){ $nome = $_POST['nome']; }è come scrivere semplicemente:
$nome = (isset($_POST['nome'])) ? trim($_POST['nome']) : '';Qui definisci una variabile a seconda della condizione iniziale (isset($_POST['nome'])), dopo il ? hai l'assegnazione della variabile, se vera (esiste) gli dai il valore inviato, se no (dopo i : l'assegnazione se è falsa, cioè se non esiste il $_POST relativo) gli da valore "".
L'uso di mail() sembra dare problemi di sicurezza, per questo potrebbero bloccarlo.
Puoi provare una delle classi già in rete per riformulare il tuo invio di mail.
Dai un occhiata qui:
-
Grazie, ma per l'smtp dovrò studiare un po' , ora non saprei proprio come utilizzarle queste classi
Per l'errore invece me lo da sia con il tuo metodo sia con l'altro.
Questa è la riga che causa il problema ed in cui ho usato la funzione da te suggerrita$note = (isset($_POST['note'])) ? trim($_POST['note']) : '';
Sulle altre variabili con il tuo metodo non da più errori, ma su questa textarea continua a dare errore...solo in questa.
-
Vedi questa è l'ultima riga che compone il messaggio. Se la lascio così
Note: $note";
Mi da errore solo sulla riga 140
Se lo scrivo cosìNote: $note ";
Mi da errore sia sulla riga 140 che 141
-
Questo è il codice della action
[PHP]<?php$nome = (isset($_POST['nome'])) ? trim($_POST['nome']) : '';
$cognome = (isset($_POST['cognome'])) ? trim($_POST['cognome']) : '';
$email = (isset($_POST['email'])) ? trim($_POST['email']) : '';
$cell = (isset($_POST['cell'])) ? trim($_POST['cell']) : '';
$eta = (isset($_POST['eta'])) ? trim($_POST['eta']) : '';
$genitore = (isset($_POST['genitore'])) ? trim($_POST['genitore']) : '';
$regione = (isset($_POST['regione'])) ? trim($_POST['regione']) : '';
$citta = (isset($_POST['citta'])) ? trim($_POST['citta']) : '';
$cap = (isset($_POST['cap'])) ? trim($_POST['cap']) : '';
$provincia = (isset($_POST['provincia'])) ? trim($_POST['provincia']) : '';
$sesso = (isset($_POST['sesso'])) ? trim($_POST['sesso']) : '';
$occupazione = (isset($_POST['occupazione'])) ? trim($_POST['occupazione']) : '';
$note = (isset($_POST['note'])) ? trim($_POST['note']) : '';
$to = "miamail.com";
$messaggio.="$nome ha inviato i suoi dati dal sito.
I suoi dati sono:\n
Nome: $nome\n
Cognome: $cognome\n
Email: $email\n
Cellulare: $cell\n
Eta: $eta Genitore: $genitore\n
Regione: $regione Citta: $citta\n
Cap: $cap Provincia: $provincia\n
Sesso: $sesso\n
Occupazione attuale: $occupazione\n
Note: $note
";
if (mail($to,"$cognome $nome",$messaggio,"From: $email\n")) {
echo "Dati inviati correttamente, grazie $nome!";
} else {
echo "Si è verificato un problema. Non preoccuparti, inviaci Nome Cognome Cellulare ed Età a: miamail.com Grazie.";
}?>[/PHP]
-
Se fai un echo di $note che ti dice?
Se elimini il richiamo nel $messaggio ?
-
Se lo elimno dal messaggio da errore alla linea precedente......
-
Il fatto è che da errore dove lascio la chiusura del messaggio ";
Se metto la chiusura in una riga da sola da errore in quella riga
-
Ora ho tolto il punto da
[PHP]$messaggio.="$nome ha inviato
[/PHP]
e non mi da più l'errore...per ora.
Poteva essere quello il problema o andava lasciato?
-
oh madonnina....ora il form funziona, non da errore sul file di log, ma lascia il campo email vuoto e lo sostituisce con il nome.....
-
No ok sistemato il problema.
Ora mi rimane solo il dubbio di quel punto che ho tolto, andava lasciato?
-
Non l'avevo notato, effettivamente era un problema. Nel senso che il punto serve per aggiungere ad una variabile già dichiarata del contenuto. Tu la variabile messaggio non l'avevi dichiarata prima, quindi andava in errore. Giusto toglierlo.
Esempio di utilizzo:
$descrizione = "Orologio ";
$descrizione .= "in oro ";
$descrizione .= "20 carati";echo $descrizione; // Output: Orologio in oro 20 carati
Occhio: se hai aggiornamenti a distanza di tempo così breve, puoi utilizzare la funzione "modifica" dell'ultimo post già inviato per evitare di allungare la discussione e i post presenti con messaggi mono-riga.
Credo hai risolto. Se hai intenzione di lavorare molto con PHP, ripassa le basi (ogni tanto toccherebbe anche a me che ho queste sviste), perché trick come quello del punto sono molto utili (così come considerare che esistono anche altri tipi di concatenazioni).
Buona fortuna!
-
Ahahahahahha sì in effetti ho scritto un po' "alla whatsapp" giustissima osservazione!
Ah bene a sapersi l'utilizzo del punto nelle variabili.
Sì in effetti dovrei studiacchiare un po' le basi.....
Grazie mille gigi per le dritte ed il tempo.
Ciao alla prossima grazie!