Form Mail

Alice De Gaetani

Nuovo Utente
3 Ott 2013
8
0
0
Ciao a tutti! Ho provato a capire come fare leggendo le discussioni precedenti, ma sono troppo alle prime armi e non sono riuscita nel mio intento. Vorrei riuscire a creare un form per dare la possibilità agli utenti che visitano il mio sito di mandarmi un messaggio (inserendo il proprio nome e cognome, la propria mail e poi il testo) che mi arrivi nella mia casello di posta gmail.

Quello che ho fatto fino ad adesso è stato creare due file .php (form.php | send.php) con due codici che ho preso qui sul forum. Ma non so concretamente creare la form e collegarla ai due file php.

Grazie, Alice.
 
Nello specifico mi sono creata questo form, con il seguente codice e non so come procedere:

HTML:
<form>
<h1>Lasciami un messaggio!<br />
Send me a message!</h1>
<label for="nome"> Nome/Name:</label><input id="nome" type="text" size="39" maxlength="45" >
<label for="cognome"> Cognome/Surname:</label><input id="cognome" type="text" size="39" maxlength="45">
<label for="email"> Email:</label><input id="Email" type="text" size="39" maxlength="45">
<label for="testo"> Testo/Text:</label><textarea name="testo" id="Testo/Text" cols="32" rows="5" ></textarea>
<input type="submit" id="submit" name="submit" value="Invia/Send" />
</form>

form.JPG

Grazie, Alice.
 
Ultima modifica di un moderatore:
Ciao devi mettere nel action del form il nome della pagina che elaborerà i dati
HTML:
<form action="send.php" method="post">
 
Poi nella pagina send.php dovrai inviare la mail utilizzando i dati presi dal form ma credo tu l'abbia già preso il codice della pagina :)
 
non riesco :(

allora questo è l'html del form:

HTML:
<form action="send.php" method="post">
<h1>Lasciami un messaggio!<br />
Send me a message!</h1>
<label for="nome"> Nome/Name:</label><input id="nome" type="text" size="39" maxlength="45" >
<label for="surname"> Cognome/Surname:</label><input id="cognome" type="text" size="39" maxlength="45">
<label for="email"> Email:</label><input id="Email" type="text" size="39" maxlength="45">
<label for="message"> Testo/Text:</label><textarea name="testo" id="Testo/Text" cols="32" rows="5" ></textarea>
<input type="submit" id="submit" name="submit" value="Invia/Send" />
</form>

questo il contenuto di send.php (che ho preso qui dal sito):

PHP:
<?php
// specifica la tua email e l'oggetto del messaggio
$your_email = '[email protected]';
$subject = 'Nuovo messaggio';

// funzione per la visualizzazione degli errori
function show_error($errtxt)
{
    // creo la query per la pagina
    $query = array('err' => $errtxt);
    $query = http_build_query($query);
    
    // reindirizzo alla pagina
    header("Location: form.php?{$query}");
    
    // interrompo lo script
    exit();
}

// se il form è stato inviato
if(isset($_POST['submit']))
{
    // recupero i dati inviati
    $name    = isset($_POST['name'])    ? trim($_POST['name'])    : '';
    $surname = isset($_POST['surname']) ? trim($_POST['surname']) : '';
    $email   = isset($_POST['email'])   ? trim($_POST['email'])   : '';
    $message = isset($_POST['message']) ? trim($_POST['message']) : '';
    
    // controlla che i campi non siano vuoti
    if($name == '')
        show_error('Non hai inserito il tuo nome.');
    if($surname == '')
        show_error('Non hai inserito il tuo cognome.');
    if(!preg_match('/^([\w\-\+\.]+)@([\w\-\+\.]+).([\w\-\+\.]+)$/', $email))
        show_error('L\'e-mail che hai fornito non &egrave; valida.');
    if($message == '')
        show_error('Non hai inserito il tuo messaggio.');
    
    // crea il messaggio da inviare
    $msgtxt = "Un nuovo messaggio ti è stato inviato da un utente.\n";
    $msgtxt = "L'utente ha fornito queste informazioni:\n";
    $msgtxt = "---------------------------------------------------\n";
    $msgtxt = "Nome: {$name}\n";
    $msgtxt = "Cognome: {$surname}\n";
    $msgtxt = "E-mail: {$email}\n";
    $msgtxt = "---------------------------------------------------\n";
    $msgtxt = "{$message}\n";
    $msgtxt = "---------------------------------------------------\n";
    $msgtxt = "L'indirizzo IP dell'utente è {$_SERVER['REMOTE_ADDR']}.";
    
    // tenta di inviare il messaggio
    if(!mail($your_email, $subject, $msgtxt))
        show_error('Impossibile inviare il messaggio. Riprova pi&ugrave; tardi.');
    
    // visualizza il messaggio di avvenuto invio
    header('Location: form.php?sent=true');
}
// altrimenti
{
    // reindirizza al file del form
    show_error('Non hai inviato i dati. Ritenta.');
}
?>

Al momento quando clicco su 'invia" visualizzo nella pagina web il file send.php e non arriva alcuna mail nella mia casella di posta.

Sappiate che sono davvero alle prime armi.

Grazie per l'attezione, Alice.
 
Ultima modifica di un moderatore:
Potrebbe anche essere la funzione mail().
Prima verifica che i dati arrivino tutti e poi se ancora non hai risolto prova ad usare phpmailer.
 
ciao
non ho guardato bene il codice, ma, anche da altri post, il problema può essere che gmail non vada d'accordo con la funzione mail().
anche altri non funziano es libero, email e altri.
il problema da molti è stato risolto abbandonando la funzione mail() e passando alla classe phpmailer (o simile).
detteo questo per un form di invio così ti conviene fare una pagina sola.

p.s.
puoi postare il link dove hai preso lo script
 
ciao
anche hotmail rientra in quelli che non funziano.
attenta però non è che lo script non invii è che vengono bloccate, cioè non è un problema di script
da varie discussioni sembra che sia un problema delle intestazioni dell'email.
per quello ti dicevo di passare alla classe phpmailler o simile.
una cosa considerato che hai un sito (dominio) per caso non hai la casella email con il nome del dominio (es. info@tuo_dominio.it)?
se l'hai e usi la funzione mail indirizzata a tale casella le amail le ricevi
 
Allora ragazzi, rieccomi!

L'email adesso arriva :mavieni:

però ci sarà ancora qualche problema nel codice, perché l'email contiene solo l'indirizzo ip e non i dati e il messaggio e in secondo luogo (come potete vedere se vi collegate a alicedegaetani.com) quando si clicca invia tutto il form mi appare in un'altra pagina e continua a dire che non ci sono tutti i dati, che manca il nome, ecc.

Possibili soluzioni?

Grazie, Alice.
 
A me esce solo " La mail è stata inoltrata con successo. ".
Vuol dire che in questi 20 giorni hai risolto? :)
 
Mancano i name ai tag input
HTML:
<input id="nome" type="text" size="39" maxlength="45" >
cambia
HTML:
<input id="nome" name="name" type="text" size="39" maxlength="45" >
altrimenti il dato non passa
PHP:
$name    = isset($_POST['name'])    ? trim($_POST['name'])    : '';
 

Discussioni simili