View Full Version : php form to mail Help please
zoe20
10-05-2009, 05:39 AM
hi am new to php and i want to make an inquiry form with following fields. please help me.
Name :
Gender: male / female
Date Of Birth :
Place of birth :
Time:
Comments:
This is the php am using:
<?
/*
Form to mail
*/
// ------------- CONFIGURABLE SECTION ------------------------
$mailto = 'youre-mail@gmail.com' ;
// the pages to be displayed, eg
//$formurl = "http://www.example.com/feedback.htm" ;
//$errorurl = "http://www.example.com/error.htm" ;
//$thankyouurl = "http://www.yoursite.com/feedback.htm" ;
$formurl = "http://www.yoursite.org/feedback.htm" ;
$errorurl = "http://www.yoursite.org/error.htm" ;
$thankyouurl = "http://www.yoursite.org/thankyou.htm" ;
// -------------------- END OF CONFIGURABLE SECTION ---------------
$name = $_POST['name'] ;
$lname = $_POST['lname'] ;
$email = $_POST['email'] ;
$city = $_POST['city'] ;
$country = $_POST['country'] ;
$comments = $_POST['comments'] ;
$http_referrer = getenv( "HTTP_REFERER" );
$subject = $name." Feedback" ;
if (!isset($_POST['email'])) {
header( "Location: $formurl" );
exit ;
}
if (empty($name) || empty($email) || empty($comments)) {
header( "Location: $errorurl" );
exit ;
}
if (get_magic_quotes_gpc()) {
$comments = stripslashes( $comments );
}
$messageproper =
"This message was sent from:
\n" . "$http_referrer\n\n\r" .
"------------------- COMMENTS ----From----------\n\n" .
"Name: ".$name."\r\n".
"Last Name: ".$lname."\r\n".
"Email: ".$email."\r\n".
"City: ".$city."\r\n".
"Country: ".$country."\r\n".
"Comments: ".$comments.
"\n\n------------------------------------------------------------\n" ;
mail($mailto, $subject, $messageproper, "From: \"$name\" <$email>\nReply-To: \"$name\" <$email>\nX-Mailer: chfeedback.php 2.03" );
mail($email,"Thank you for your comments","\r\nThank you for giving us your comments at yoursite.org\r\n\r\nRegars Admin\r\nwww.yoursite.org","From:Admin yoursite.org<yoursite@gmail.com>");
header( "Location: $thankyouurl" );
exit ;
?>
This is mark up and the css:
<form name="feedback" method="POST" action="feedback.php3" onSubmit="">
<input TYPE="hidden" NAME="VTI-GROUP" VALUE="0">
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="30%"><div align="justify" class="maintext"><font face="Verdana" size="2">Name :</font></div></td>
<td width="70%"><div align="left">
<input name="name" type="text" class="textt" size="20">
</div></td>
</tr>
<tr>
<td width="30%"><div align="justify" class="maintext"><font face="Verdana" size="2">Gender :</font></div></td>
<td width="70%"><div align="left">
<label class="maintext">
<input type="radio" name="radio" id="r" value="r" />
Male</label>
<label>
<input type="radio" name="radio" id="r2" value="r2" />
<span class="maintext">Female</span></label>
</div></td>
</tr>
<tr>
<td width="30%"><div align="justify" class="maintext"><font face="Verdana" size="2">Date Of Birth:</font></div></td>
<td width="70%"><div align="left">
<label><span class="mainconttext">Month</span>
<select name="1r" size="1" id="1r">
<option selected="selected">January</option>
<option>February</option>
<option>March</option>
<option>April</option>
<option>May</option>
<option>June</option>
<option>July</option>
<option>August</option>
<option>September</option>
<option>October</option>
<option>November</option>
<option>December</option>
</select>
</label>
<label><span class="mainconttext">Date</span></label>
<span class="mainconttext">
<label> </label>
</span>
<label><select name="2r" size="1" id="2r">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
<option>18</option>
<option>19</option>
<option>20</option>
<option>21</option>
<option>22</option>
<option>23</option>
<option>24</option>
<option>25</option>
<option>26</option>
<option>27</option>
<option>28</option>
<option>29</option>
<option>30</option>
<option>31</option>
</select>
</label>
<label><span class="mainconttext">Year
</span>
<select name="3r" size="1" id="3r">
<option>1986</option>
<option>1985</option>
<option>1984</option>
<option>1983</option>
<option>1982</option>
<option>1981</option>
<option>1980</option>
<option>1979</option>
<option>1978</option>
<option>1977</option>
<option>1976</option>
<option>1975</option>
<option>1974</option>
</select>
</label>
</div></td>
</tr>
<tr>
<td width="30%"><div align="justify" class="maintext"><font face="Verdana" size="2"> City / Country:</font></div></td>
<td width="70%"><div align="left">
<input name="city" type="text" class="textt" size="20">
</div></td>
</tr>
<tr>
<td width="30%"><div align="justify" class="maintext"><font face="Verdana" size="2">Time :</font></div></td>
<td width="70%"><div align="left">
<input name="country" type="text" class="textt" size="20">
</div></td>
</tr>
<tr>
<td width="30%"></td>
<td width="70%"></td>
</tr>
<tr>
<td width="30%"><div align="justify"><font face="Verdana" size="2"> <span class="maintext">Comments :</span></font></div></td>
<td width="70%"><div align="left">
<textarea name="comments" cols="30" rows="6" class="textt"></textarea>
</div></td>
</tr>
</table>
<p align="center">
<input type="submit" value="Submit" name="submit" onClick='return doCheck()'>
<input type="reset" value="Reset" name="B2">
</form>
forum_amnesiac
10-05-2009, 08:17 AM
Can you explain a bit more about the problems you're having
I have looked at your code and spotted a few problems.
You refer to $_POST['lname'], you don't have an input field for this.
You have radio input for gender but don't use it, if you want to use radio buttons try this method:
<tr>
<td width="30%">Gender :</td>
<td width="70%">
<input type="radio" name="gender" id="gender" value="" />Male
<input type="radio" name="gender" id="gender" value="" />
</td>
</tr>
I have stripped out div's and span's to try to make it a bit clearer.
In your HTML you can validate that the field with name/id gender has a value other than "".
In your PHP you can do this:
$gender=$_POST['gender'];
The variable $gender will be set to either male or female and can be added to the email message.
Is this the sort of help you're looking for
prasanthmj
10-05-2009, 11:21 AM
Add some more basic validations for the email field to prevent email injection.
Examples: see PHP Form to email (http://www.html-form-guide.com/email-form/php-form-to-email.html)
The variable names used in the PHP script and the form are not consistent.
zoe20
10-05-2009, 06:18 PM
sorry for the delayed reply.Yes this is what am looking for. can u help me please?
regards
forum_amnesiac
10-06-2009, 07:30 AM
I have written the HTML & PHP with some validation, you should change it to suit your requirements.
I have split the code because of the size restrictions here.
I have kept your code with all the div, label & font tags you had, I think you should look at these, some of them appear unneccessary and others would be better suited to being in a style sheet:
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
function validateEmail(field, mail2chk, retfield){
var emailPattern = /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,3})+$/im;
var chkresult =emailPattern.test(mail2chk.value);
if (mail2chk.value!=""){
if (chkresult==false){
alert("Please enter a valid email address ; eg you@somewhere.com.")
field.form.elements[retfield].value="";
field.form.elements[retfield].select();
field.form.elements[retfield].focus();
}
}
return ;
}
function handleEnter (field, event) {
var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
if (keyCode == 13) {
var i;
for (i = 0; i < field.form.elements.length; i++)
if (field == field.form.elements[i])
break;
i = (i + 1) % field.form.elements.length;
field.form.elements[i].focus();
return false;
}
else
return true;
}
/***********************************************
* Required field(s) validation v1.10- By NavSurf
* Visit Nav Surf at http://navsurf.com
* Visit http://www.dynamicdrive.com/ for full source code
***********************************************/
function formCheck(formobj){
// Enter name of mandatory fields
var fieldRequired = Array("name", "gender", "city", "comments", "email");
// Enter field description to appear in the dialog box
var fieldDescription = Array("Name", "Gender", "City", "Comments", "Email");
// dialog message
var alertMsg = "Please complete the following:\n";
var l_Msg = alertMsg.length;
for (var i = 0; i < fieldRequired.length; i++){
var obj = formobj.elements[fieldRequired[i]];
if (obj){
switch(obj.type){
case "select-one":
if (obj.selectedIndex == -1 || obj.options[obj.selectedIndex].text == ""){
alertMsg += " - " + fieldDescription[i] + "\n";
}
break;
case "select-multiple":
if (obj.selectedIndex == -1){
alertMsg += " - " + fieldDescription[i] + "\n";
}
break;
case "text":
case "textarea":
if (obj.value == "" || obj.value == null){
alertMsg += " - " + fieldDescription[i] + "\n";
}
break;
default:
}
if (obj.type == undefined){
var blnchecked = false;
for (var j = 0; j < obj.length; j++){
if (obj[j].checked){
blnchecked = true;
}
}
if (!blnchecked){
alertMsg += " - " + fieldDescription[i] + "\n";
}
}
}
}
if (alertMsg.length == l_Msg){
return true;
}else{
alert(alertMsg);
return false;
}
}
// -->
</script>
</head>
<body>
<form name="feedback" method="POST" action="feedck.php3" onsubmit="return formCheck(this);">
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="30%">
<div align="justify" class="maintext">
<font face="Verdana" size="2"> Name :</font>
</div>
</td>
<td width="70%">
<div align="left">
<input name="name" type="text" class="textt" size="20">
</div>
</td>
</tr>
<tr>
<td width="30%">
<div align="justify" class="maintext">
<font face="Verdana" size="2"> Email :</font>
</div>
</td>
<td width="70%">
<div align="left">
<input name="email" type="text" class="textt" size="20" onblur="validateEmail(this, this.form.email, 'email')" onkeypress="return handleEnter(this, event)">
</div>
</td>
</tr>
<tr>
<td>
<div align="justify" class="maintext">
<font face="Verdana" size="2"> Gender :</font>
</div>
</td>
<td>
<div align="left">
<label class="maintext">
<input type="radio" name="gender" id="gender" value="Male">Male
<input type="radio" name="gender" id="gender" value="Female">Female
</label>
</div>
</td>
</tr>
<tr>
<td>
<div align="justify" class="maintext">
<font face="Verdana" size="2"> Date Of Birth:</font>
</div>
</td>
<td>
<div align="left">
<label>
<span class="mainconttext">Month</span>
<select name="mth" size="1" id="mth">
<option selected="selected">January</option>
<option>February</option>
<option>March</option>
<option>April</option>
<option>May</option>
<option>June</option>
<option>July</option>
<option>August</option>
<option>September</option>
<option>October</option>
<option>November</option>
<option>December</option>
</select>
</label>
<label>
<span class="mainconttext">Date</span>
</label>
<label>
<select name="dy" size="1" id="dte">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
<option>11</option>
<option>12</option>
<option>13</option>
<option>14</option>
<option>15</option>
<option>16</option>
<option>17</option>
<option>18</option>
<option>19</option>
<option>20</option>
<option>21</option>
<option>22</option>
<option>23</option>
<option>24</option>
<option>25</option>
<option>26</option>
<option>27</option>
<option>28</option>
<option>29</option>
<option>30</option>
<option>31</option>
</select>
</label>
<label>
<span class="mainconttext">Year</span>
<select name="yr" size="1" id="yr">
<option>1986</option>
<option>1985</option>
<option>1984</option>
<option>1983</option>
<option>1982</option>
<option>1981</option>
<option>1980</option>
<option>1979</option>
<option>1978</option>
<option>1977</option>
<option>1976</option>
<option>1975</option>
<option>1974</option>
</select>
</label>
</div>
</td>
</tr>
<tr>
<td>
<div align="justify" class="maintext">
<font face="Verdana" size="2"> City :</font>
</div>
</td>
<td>
<div align="left">
<input name="city" type="text" class="textt" size="20">
</div>
</td>
</tr>
<tr>
forum_amnesiac
10-06-2009, 07:34 AM
<td>
<div align="justify" class="maintext">
<font face="Verdana" size="2"> Country :</font>
</div>
</td>
<td>
<div align="left">
<select name="country" size="1">
<option>Afghanistan</option>
<option>Åland Islands</option>
<option>Albania</option>
<option>Algeria</option>
<option>American Samoa</option>
<option>Andorra</option>
<option>Angola</option>
<option>Anguilla</option>
<option>Antarctica</option>
<option>Antigua and Barbuda</option>
<option>Argentina</option>
<option>Armenia</option>
<option>Aruba</option>
<option >Australia</option>
<option>Austria</option>
<option>Azerbaijan</option>
<option>Bahamas</option>
<option>Bahrain</option>
<option>Bangladesh</option>
<option>Barbados</option>
<option>Belarus</option>
<option>Belgium</option>
<option>Belize</option>
<option>Benin</option>
<option>Bermuda</option>
<option>Bhutan</option>
<option>Bolivia</option>
<option>Bosnia and Herzegovina</option>
<option>Botswana</option>
<option>Bouvet Island</option>
<option>Brazil</option>
<option>British Indian Ocean territory</option>
<option>Brunei Darussalam</option>
<option>Bulgaria</option>
<option>Burkina Faso</option>
<option>Burundi</option>
<option>Cambodia</option>
<option>Cameroon</option>
<option>Canada</option>
<option>Cape Verde</option>
<option>Cayman Islands</option>
<option>Central African Republic</option>
<option>Chad</option>
<option>Chile</option>
<option>China</option>
<option>Christmas Island</option>
<option>Cocos (Keeling) Islands</option>
<option>Colombia</option>
<option>Comoros</option>
<option>Congo</option>
<option>Congo, Democratic Republic</option>
<option>Cook Islands</option>
<option>Costa Rica</option>
<option>Côte d'Ivoire (Ivory Coast)</option>
<option>Croatia (Hrvatska)</option>
<option>Cuba</option>
<option>Cyprus</option>
<option>Czech Republic</option>
<option>Denmark</option>
<option>Djibouti</option>
<option>Dominica</option>
<option>Dominican Republic</option>
<option>East Timor</option>
<option>Ecuador</option>
<option>Egypt</option>
<option>El Salvador</option>
<option>Equatorial Guinea</option>
<option>Eritrea</option>
<option>Estonia</option>
<option>Ethiopia</option>
<option>Falkland Islands</option>
<option>Faroe Islands</option>
<option>Fiji</option>
<option>Finland</option>
<option >France</option>
<option>French Guiana</option>
<option>French Polynesia</option>
<option>French Southern Territories</option>
<option>Gabon</option>
<option>Gambia</option>
<option>Georgia</option>
<option >Germany</option>
<option>Ghana</option>
<option>Gibraltar</option>
<option>Greece</option>
<option>Greenland</option>
<option>Grenada</option>
<option>Guadeloupe</option>
<option>Guam</option>
<option>Guatemala</option>
<option>Guinea</option>
<option>Guinea-Bissau</option>
<option>Guyana</option>
<option>Haiti</option>
<option>Heard and McDonald Islands</option>
<option>Honduras</option>
<option>Hong Kong</option>
<option>Hungary</option>
<option>Iceland</option>
<option>India</option>
<option>Indonesia</option>
<option>Iran</option>
<option>Iraq</option>
<option>Ireland</option>
<option>Israel</option>
<option>Italy</option>
<option>Jamaica</option>
<option>Japan</option>
<option>Jordan</option>
<option>Kazakhstan</option>
<option>Kenya</option>
<option>Kiribati</option>
<option>Korea (north)</option>
<option>Korea (south)</option>
<option>Kuwait</option>
<option>Kyrgyzstan</option>
<option>Lao People's Democratic Republic</option>
<option>Latvia</option>
<option>Lebanon</option>
<option>Lesotho</option>
<option>Liberia</option>
<option>Libyan Arab Jamahiriya</option>
<option>Liechtenstein</option>
<option>Lithuania</option>
<option>Luxembourg</option>
<option>Macao</option>
<option>Macedonia, Former Yugoslav Republic Of</option>
<option>Madagascar</option>
<option>Malawi</option>
<option>Malaysia</option>
<option>Maldives</option>
<option>Mali</option>
<option>Malta</option>
<option>Marshall Islands</option>
<option>Martinique</option>
<option>Mauritania</option>
<option>Mauritius</option>
<option>Mayotte</option>
<option>Mexico</option>
<option>Micronesia</option>
<option>Moldova</option>
<option>Monaco</option>
<option>Mongolia</option>
<option>Montenegro</option>
<option>Montserrat</option>
<option>Morocco</option>
<option>Mozambique</option>
<option>Myanmar</option>
<option>Namibia</option>
<option>Nauru</option>
<option>Nepal</option>
<option>Netherlands</option>
<option>Netherlands Antilles</option>
<option>New Caledonia</option>
<option >New Zealand</option>
<option>Nicaragua</option>
<option>Niger</option>
<option>Nigeria</option>
<option>Niue</option>
<option>Norfolk Island</option>
forum_amnesiac
10-06-2009, 07:35 AM
<option>Northern Mariana Islands</option>
<option>Norway</option>
<option>Oman</option>
<option>Pakistan</option>
<option>Palau</option>
<option>Palestinian Territories</option>
<option>Panama</option>
<option>Papua New Guinea</option>
<option>Paraguay</option>
<option>Peru</option>
<option>Philippines</option>
<option>Pitcairn</option>
<option>Poland</option>
<option>Portugal</option>
<option>Puerto Rico</option>
<option>Qatar</option>
<option>Réunion</option>
<option>Romania</option>
<option>Russian Federation</option>
<option>Rwanda</option>
<option>Saint Helena</option>
<option>Saint Kitts and Nevis</option>
<option>Saint Lucia</option>
<option>Saint Pierre and Miquelon</option>
<option>Saint Vincent and the Grenadines</option>
<option>Samoa</option>
<option>San Marino</option>
<option>Sao Tome and Principe</option>
<option>Saudi Arabia</option>
<option>Senegal</option>
<option>Serbia</option>
<option>Seychelles</option>
<option>Sierra Leone</option>
<option>Singapore</option>
<option>Slovakia</option>
<option>Slovenia</option>
<option>Solomon Islands</option>
<option>Somalia</option>
<option>South Africa</option>
<option>South Georgia and the South Sandwich Islands</option>
<option>Spain</option>
<option>Sri Lanka</option>
<option>Sudan</option>
<option>Suriname</option>
<option>Svalbard and Jan Mayen Islands</option>
<option>Swaziland</option>
<option>Sweden</option>
<option>Switzerland</option>
<option>Syria</option>
<option>Taiwan</option>
<option>Tajikistan</option>
<option>Tanzania</option>
<option>Thailand</option>
<option>Togo</option>
<option>Tokelau</option>
<option>Tonga</option>
<option>Trinidad and Tobago</option>
<option>Tunisia</option>
<option>Turkey</option>
<option>Turkmenistan</option>
<option>Turks and Caicos Islands</option>
<option>Tuvalu</option>
<option>Uganda</option>
<option>Ukraine</option>
<option>United Arab Emirates</option>
<option >United Kingdom</option>
<option selected="selected">United States of America</option>
<option>Uruguay</option>
<option>Uzbekistan</option>
<option>Vanuatu</option>
<option>Vatican City</option>
<option>Venezuela</option>
<option>Vietnam</option>
<option>Virgin Islands (British)</option>
<option>Virgin Islands (US)</option>
<option>Wallis and Futuna Islands</option>
<option>Western Sahara</option>
<option>Yemen</option>
<option>Zaire</option>
<option>Zambia</option>
<option>Zimbabwe</option>
</select>
</div>
</td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td>
<div align="justify">
<font face="Verdana" size="2">
<span class="maintext">Comments :</span>
</font>
</div>
</td>
<td>
<div align="left">
<textarea name="comments" cols="30" rows="6" class="textt"></textarea>
</div>
</td>
</tr>
</table>
<p align="center">
<input type="submit" value="Submit" name="submit">
<input type="reset" value="Reset" name="B2">
</p>
</form>
</body>
This is the PHP, the only test I've put into this is that there is a valid email address.
<?php
/*
Form to mail
*/
// ------------- CONFIGURABLE SECTION ------------------------
$mailto = 'youre-mail@gmail.com' ;
// the pages to be displayed, eg
//$formurl = "http://www.example.com/feedback.htm" ;
//$errorurl = "http://www.example.com/error.htm" ;
//$thankyouurl = "http://www.yoursite.com/feedback.htm" ;
$formurl = "http://www.yoursite.org/feedback.htm" ;
$errorurl = "http://www.yoursite.org/error.htm" ;
$thankyouurl = "http://www.yoursite.org/thankyou.htm" ;
// -------------------- END OF CONFIGURABLE SECTION ---------------
$name = $_POST['name'] ;
$email = trim($_POST['email']);
#ADD THIS LINE TO STRIP OUT ALL \r\n characters - reduce risk of email injection
$email = preg_replace('/[\n|\r].*/', '', $email);
$gender = $_POST['gender'] ;
$month = $_POST['mth'] ;
$day = $_POST['dy'] ;
$year = $_POST['yr'] ;
$dob=$month." ".$day." ".$year;
$city = $_POST['city'] ;
$country = $_POST['country'] ;
$comments = $_POST['comments'] ;
$http_referrer = getenv( "HTTP_REFERER" );
$subject = $name." Feedback" ;
if (!preg_match('/\b[A-Z0-9._%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}\b/im', $email)) {
header( "Location: $errorurl" );
exit ;
}
if (get_magic_quotes_gpc()) {
$comments = stripslashes( $comments );
}
$messageproper =
"This message was sent from:
\n" . $http_referrer."\n\n\r" .
"------------------- COMMENTS ----From----------\n\n" .
"Name: ".$name."\r\n".
"Email: ".$email."\r\n".
"Gender: ".$gender."\r\n".
"Date of Birth: ".$dob."\r\n".
"City: ".$city."\r\n".
"Country: ".$country."\r\n".
"Comments: ".$comments.
"\n\n------------------------------------------------------------\n" ;
mail($mailto, $subject, $messageproper, "From: \"$name\" <$email>\nReply-To: \"$name\" <$email>\nX-Mailer: chfeedback.php 2.03" );
mail($email,"Thank you for your comments","\r\nThank you for giving us your comments at yoursite.org\r\n\r\nRegards Admin\r\nwww.yoursite.org","From:Admin yoursite.org<yoursite@gmail.com>");
header( "Location: $thankyouurl" );
exit ;
?>
This code is not perfect, it needs fully testing and you should change it as necessary.
zoe20
10-07-2009, 06:05 PM
I tried i and its not working any help will be highly appreciated.
Regards
Raja
djr33
10-08-2009, 01:15 AM
Please be clearer in your questions. We can't help you without enough information. What isn't working, how did you try it, and can we see a demo page?
forum_amnesiac
10-08-2009, 05:40 AM
I managed to send an email to myself using the code I gave, all the fields where clearly there.
You need to be more specific about your problems
Powered by vBulletin® Version 4.2.2 Copyright © 2021 vBulletin Solutions, Inc. All rights reserved.