Reputation: 29
When I submit my form an email is sent to my email address with details entered in the form but when I recieve the email the data is blank here is my code
<?php
$form = '<form action="test2.php" method="POST">
<table width="300" style="border: 1px solid black;">
<tr>
<td>Name <td><input type="text" id="name">
<tr>
<td>Phone Number <td><input type="text" id="telephone">
<tr>
<td colspan="2">
<input type="submit" name="submit" value="submit"/></div>
</tr>
</table>';
echo $form;
$to = '[email protected]';
$name = $_POST['name'];
$telephone = $_POST['telephone'];
$body = "<div>Name: $name <br>Telephone Number: $telephone<br></div>";
// subject
$subject = 'Call Back Requested';
// message
$message = $body;
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// Additional headers
$headers .= 'To:' . "\r\n";
$headers .= 'From: Call Back Request <[email protected]>' . "\r\n";
if(isset($_POST['submit'])){
mail($to, $subject, $message, $headers);
}
?>
The problem is when I submit the form the I recieve an email that says
Name (Nothing) Phone Number (Nothing)
Can anyone tell me where I am going wrong
Thanks In Advance
Adam
Upvotes: 0
Views: 84
Reputation:
you have alot of mistakes in closing tags .. and its bad practice to display a whole html form using echo .. check out this code:
<?php
extract($_POST);
if ( isset($submit) )
{
$to = '[email protected]';
$body = "<div>Name: $name <br>Telephone Number: $telephone<br></div>";
$subject = 'Call Back Requested';
$message = $body;
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To:' . "\r\n";
$headers .= 'From: Call Back Request <[email protected]>' . "\r\n";
mail($to, $subject, $message, $headers);
}
?>
<html>
<form action="test2.php" method="POST">
<table width="300" style="border: 1px solid black;">
<tr>
<td>Name </td>
<td> <input type="text" id="name" name="name" /> </td>
</tr>
<tr>
<td>Phone Number </td>
<td> <input type="text" id="telephone" name="telephone" /> </td>
</tr>
<tr>
<td colspan="2"> <input type="submit" name="submit" value="submit"/> </td>
</tr>
</form>
</html>
Upvotes: 0
Reputation: 11
Just after a quick look you should swap your $body to read
$body = '<div>Name: ' . $name . '<br>Telephone Number: ' . $telephone . '<br></div>';
Try that out and see if it works
Upvotes: 0
Reputation: 47667
You have to specify the name
attribute for your inputs:
<input type="text" id="name" name="name">
<input type="text" id="telephone" name="telephone">
instead of
<input type="text" id="name">
<input type="text" id="telephone">
Upvotes: 3