problema invio mail con form php

callas4ever

Nuovo Utente
24 Lug 2012
1
0
0
Ciao a tutti, spero che possiate aiutarmi perchè non riesco a risolvere questo problema! Ho inserito in una pagina html un form email. Ho poi personalizzato i file form.php e send.php postati da alessandro (grazie!!) nella discussione http://forum.mrwebmaster.it/webdesign-grafica/21934-realizzare-form-mail-dreamweaver.html

e anche io ho il problema che la mail viene inviata, ma i campi nome, mail e messaggio risultano vuoti, e nel corpo della mail visualizzo solo l'idirizzo ip del mittente. Posto il codice delle tre pagine:

pagina originale: bio.html

<td align="left" valign="top" scope="col"><form action="send.php" method="get" name="ContactForm">
<p>&nbsp;</p>
<p>
<label for="name">name
<br>
</label>
<input name="name" type="text" id="name" size="40">
</p>

<p>
<label for="email">email<br>
</label>
<input name="email" type="text" id="email" size="40">
</p>
<p>
<label for="message">leave a message:</label>
</p>
<p>
<textarea name="message" cols="40" rows="5" id="message"></textarea>
</p>
<p>
<input type="submit" name="button" id="button" value="Submit">
</p>
</form></td>
</tr>
</table>

send.php
<?php
// specifica la tua email e l'oggetto del messaggio
$your_email = '[email protected]';
$subject = 'mail dal sito';

// 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']) : '';
$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(!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 = "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('servizio momentaneamente non disponibile. invia mail a [email protected]');
}
?>

form.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Invia e-mail</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>

<body>
<h1>Invia e-mail</h1>
<?php
if(isset($_GET['err']))
{
?>
<p style="color: red;"><?php echo $_GET['err']; ?></p>
<?php
}
elseif(isset($_GET['sent']))
{
?>
<p style="color: green;">Il messaggio &egrave; stato inviato con successo!</p>
<?php
}
?>
<form action="send.php" method="post">
<table cellspacing="10">
<tr>
<td><label>name</label></td>
<td><input type="text" name="name" /></td>
</tr>
<tr>
<td><label>email</label></td>
<td><input type="text" name="email" /></td>
</tr>
<tr>
<td><label>message</label></td>
<td><textarea name="message" cols="40" rows="5"></textarea></td>
</tr>
<tr>
<td><input type="submit" name="submit" value="Submit" /></td>
</tr>
</table>
</form>
</body>
</html>

Mi potete per favore aiutare?

grazie mille!!!
 

Discussioni simili