Form values not submitting to email after validation

Ask about general coding issues or problems here.

Moderators: macek, egami, gesf

laxmon400
New php-forum User
New php-forum User
Posts: 1
Joined: Wed Jul 16, 2014 10:00 pm

Form values not submitting to email after validation

Postby laxmon400 » Wed Jul 16, 2014 10:19 pm

Hi everyone,

I am having no luck submitting my "wikigets.com/contact.php" form.

After validation errors are corrected and ready for resubmission they just stay on the form without emailing the submission.

Please help .

below is my code.

Code: Select all

<!DOCTYPE HTML>
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body>
 <?php
 if (isset($_POST['submit'])){
 
 $name = $_POST['name'];
 $email = $_POST['email'];
 $phone = $_POST['phone'];
 $country = $_POST['country'];
 $comment = $_POST['comment'];
 $gender = $_POST['gender'];
 
 $to = "laxmon@wikigets.com";
 $subject = "New contact form submission";
 $message =" A visitor of WIKIGETS has submited a form onine\n\n $name\n\n $email\n\n $phone \n\n $country \n\n $gender\n\n $comment";
 if ($security=="40") {
   
     $s=1;
} else {
$s=2;
  }
  if($s=='1'){
   
   mail($to,$subject,$message);
   Echo('<span class= "success"> Success!! An email has been sent to our web team. Please allow 24 hours for a response.</span>');
   }
else if ($s=='2')
{
   
 
   Echo('<span class= "fail">Sorry! Please ensure to fill all feilds correctly</span>' );
   }
 
 
}
 ?>
<?php
$country_options= array("select","Afghanistan",   "Albania",   "Algeria",   "American Samoa",   "Andorra",   "Angola",   "Anguilla",   "Antarctica",   "Antigua And Barbuda",   "Argentina",   "Armenia",   "Aruba",   "Australia",   "Austria",   "Azerbaijan",   "Bahamas",   "Bahrain",   "Bangladesh",   "Barbados",   "Belarus",   "Belgium",   "Belize",   "Benin",   "Bermuda",   "Bhutan",   "Bolivia",   "Bosnia And Herzegovina",   "Botswana",   "Bouvet Island",   "Brazil",   "British Indian Ocean Territory",   "Brunei Darussalam",   "Bulgaria",   "Burkina Faso",   "Burundi",   "Cambodia",   "Cameroon",   "Canada",   "Cape Verde",   "Cayman Islands",   "Central African Republic",   "Chad",   "Chile",   "China",   "Christmas Island",   "Cocos (Keeling) Islands",   "Colombia",   "Comoros",   "Congo",   "Congo, The Democratic Republic Of The",   "Cook Islands",   "Costa Rica",   "Cote D'Ivoire",   "Croatia",   "Cuba",   "Cyprus",   "Czech Republic",   "Denmark",   "Djibouti",   "Dominica",   "Dominican Republic",   "Ecuador",   "Egypt",   "El Salvador",   "Equatorial Guinea",   "Eritrea",   "Estonia",   "Ethiopia",   "Falkland Islands (Malvinas)",   "Faroe Islands",   "Fiji",   "Finland",   "France",   "French Guiana",   "French Polynesia",   "French Southern Territories",   "Gabon",   "Gambia",   "Georgia",   "Germany",   "Ghana",   "Gibraltar",   "Greece",   "Greenland",   "Grenada",   "Guadeloupe",   "Guam",   "Guatemala",   "Guernsey",   "Guinea",   "Guinea-Bissau",   "Guyana",   "Haiti",   "Heard Island And Mcdonald Islands",   "Holy See (Vatican City State)",   "Honduras",   "Hong Kong",   "Hungary",   "Iceland",   "India",   "Indonesia",   "Iran, Islamic Republic Of",   "Iraq",   "Ireland",   "Isle Of Man",   "Israel",   "Italy",   "Jamaica",   "Japan",   "Jersey",   "Jordan",   "Kazakhstan",   "Kenya",   "Kiribati",   "Korea, Democratic People'S Republic Of",   "Korea, Republic Of",   "Kuwait",   "Kyrgyzstan",   "Lao People'S Democratic Republic",   "Latvia",   "Lebanon",   "Lesotho",   "Liberia",   "Libyan Arab Jamahiriya",   "Liechtenstein",   "Lithuania",   "Luxembourg",   "Macao",   "Macedonia, The Former Yugoslav Republic Of",   "Madagascar",   "Malawi",   "Malaysia",   "Maldives",   "Mali",   "Malta",   "Marshall Islands",   "Martinique",   "Mauritania",   "Mauritius",   "Mayotte",   "Mexico",   "Micronesia, Federated States Of",   "Moldova, Republic Of",   "Monaco",   "Mongolia",   "Montserrat",   "Morocco",   "Mozambique",   "Myanmar",   "Namibia",   "Nauru",   "Nepal",   "Netherlands",   "Netherlands Antilles",   "New Caledonia",   "New Zealand",   "Nicaragua",   "Niger",   "Nigeria",   "Niue",   "Norfolk Island",   "Northern Mariana Islands",   "Norway",   "Oman",   "Pakistan",   "Palau",   "Palestinian Territory, Occupied",   "Panama",   "Papua New Guinea",   "Paraguay",   "Peru",   "Philippines",   "Pitcairn",   "Poland",   "Portugal",   "Puerto Rico",   "Qatar",   "Reunion",   "Romania",   "Russian Federation",   "Rwanda",   "Saint Helena",   "Saint Kitts And Nevis",   "Saint Lucia",   "Saint Pierre And Miquelon",   "Saint Vincent And The Grenadines",   "Samoa",   "San Marino",   "Sao Tome And Principe",   "Saudi Arabia",   "Senegal",   "Serbia And Montenegro",   "Seychelles",   "Sierra Leone",   "Singapore",   "Slovakia",   "Slovenia",   "Solomon Islands",   "Somalia",   "South Africa",   "South Georgia And The South Sandwich Islands",   "Spain",   "Sri Lanka",   "Sudan",   "Suriname",   "Svalbard And Jan Mayen",   "Swaziland",   "Sweden",   "Switzerland",   "Syrian Arab Republic",   "Taiwan, Province Of China",   "Tajikistan",   "Tanzania, United Republic Of",   "Thailand",   "Timor-Leste",   "Togo",   "Tokelau",   "Tonga",   "Trinidad And Tobago",   "Tunisia",   "Turkey",   "Turkmenistan",   "Turks And Caicos Islands",   "Tuvalu",   "Uganda",   "Ukraine",   "United Arab Emirates",   "United Kingdom",   "United States",   "United States Minor Outlying Islands",   "Uruguay",   "Uzbekistan",   "Vanuatu",   "Venezuela",   "Viet Nam",   "Virgin Islands, British",   "Virgin Islands, U.S.",   "Wallis And Futuna",   "Western Sahara",   "Yemen",   "Zambia",   "Zimbabwe"
 
);
 
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr = $countryErr = $phoneErr = "";
$name = $email = $gender = $comment = $website = $phone = "";
$country ="";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$nameErr = "Only letters and white space allowed";
}
}
if (empty($_POST["email"])) {
$emailErr = "Email is required";
} else {
$email = test_input($_POST["email"]);
// check if e-mail address syntax is valid
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
$emailErr = "Invalid email format";
}
}
if (empty($_POST["website"])) {
$website = "";
} else {
$website = test_input($_POST["website"]);
// check if URL address syntax is valid (this regular expression also allows dashes in the URL)
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "Invalid URL";
}
 
if (empty($_POST["phone"])) {
$phone = "";
} else {
$phone = test_input($_POST["phone"]);
// check if URL address syntax is valid (this regular expression also allows dashes in the URL)
}
 
 
}
 
if (empty($_POST["comment"])) {
$comment = "";
} else {
$comment = test_input($_POST["comment"]);
}
 
if (empty($_POST["gender"])) {
$genderErr = "Gender is required";
} else {
$gender = test_input($_POST["gender"]);
}
$country = $_POST['country'];
if (!in_array($country, $country_options)) {
$country1 = "Please select your country";}
}
 
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
 
<h2>contact us</h2>

 
<p><span class="error">* required field.</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
  <p>Name:
  <input type="text" name="name" value="<?php echo $name;?>">
  <span class="error">* <?php echo $nameErr;?></span>
  <br><br>
    E-mail: <input type="text" name="email" value="<?php echo $email;?>">
  <span class="error">* <?php echo $emailErr;?></span>
  <br><br>
   Phone Number: <input type="text" name="phone" value="<?php echo $phone;?>">
 
  <br><br>
    Country:
  <?php
$item = 'select';
 
echo '<select name="country">';
foreach($country_options as $c)
{
   $sel=''; // Set $sel to empty initially
   $tag = 'selected="selected"';
   
   if(isset($_POST['country']) && $_POST['country'] == $c) // Here we check if the form has been posted so an error isn't thrown and then check it's value against $c
   { $sel = $tag; }
   elseif(!isset($_POST['country']) && $item == $c) // So that the $item doesn't override the posted value we need to check to make sure the form has NOT been submitted also in the
   { $sel = $tag; }   
   
   echo '<option value="'.$c.'" '.$sel.'>'.$c.'</option>';
}
echo '</select>';
 
?>
  <span class="error">*<?php echo (isset($country1)) ? $country1 : '';?></span>
  <br><br>
    Website: <input type="text" name="website" value="<?php echo $website;?>">
  <span class="error"><?php echo $websiteErr;?></span>
  <br><br>
    Gender:
  <input type="radio" name="gender" <?php if (isset($gender) && $gender=="female") echo "checked";?> value="female">Female
  <input type="radio" name="gender" <?php if (isset($gender) && $gender=="male") echo "checked";?> value="male">Male
  <span class="error">* <?php echo $genderErr;?></span>
  <br><br>
    Comment:
  <textarea name="comment" rows="5" cols="40"><?php echo $comment;?></textarea>
  </p>
  <p>What is 8+32 = :  <input type="text" name="security" id="security" ><br>
    <br>
    <input type="submit" name="submit" value="Submit">
  </p>
</form>
 
 
</body>
</html>

BigZ1981
New php-forum User
New php-forum User
Posts: 7
Joined: Sat Jul 19, 2014 11:24 pm

Re: Form values not submitting to email after validation

Postby BigZ1981 » Sun Jul 20, 2014 1:40 am

I know PHP is loose with its variables, but I would try being explicit and putting the single quotes around your $s assigning values or taking the quotes off your numbers on your if statements to see if that changes things. The way the code looks to me is that you're putting an integer type value into the variable $s and comparing it to a string. In such a case, your if statements won't process because it's not finding a match. Using $s='1'/$s='2' or if ($s==1)/if ($s==2) might get it to process correctly.

EDIT:
On a side note, if you want the form to clear after it submits, I would add a line on that if ($s=='1') statement to clear out all values ($xxx=$yyy=$zzz="").


Return to “PHP coding => General”

Who is online

Users browsing this forum: Google Feedfetcher and 1 guest