2015-04-30 6 views
-1

У меня есть форма на сайте клиентов, которая получает несколько форм, потому что посетитель продолжает нажимать кнопку отправки.Отключить кнопку отправки после проверки формы PHP

Я пытаюсь отключить кнопку отправки после того как все мои обязательные поля заполнены.

Но я проверить свою форму с PHP, и большинство из того, что я видел людей с помощью JavaScript или JQuery для проверки формы. Я хотел бы оставить его в PHP, если это возможно.

Вот моя форма HTML.

<form action="mail.php" method="post"> 
<table border="0" cellspacing="2" cellpadding="2"> 
<tr> 
<td><strong>Company Name:</strong></td> 
<td><label><span style="display: none;">Company Name</span><input type="text" name="companyname" size="30" /></label></td> 
</tr> 
<tr> 
<td style="text-align: right;"><strong><span style="color: #990000;">*</span> First Name:</strong></td> 
<td><label><span style="display: none;">First Name</span><input type="text" name="firstname" size="30" /></label></td> 
</tr> 
<tr> 
<td style="text-align: right;"><strong><span style="color: #990000;">*</span> Last Name:</strong></td> 
<td><label><span style="display: none;">Last Name</span><input type="text" name="lastname" size="30" /></label></td> 
</tr> 
<tr> 
<td style="text-align: right;"><strong><span style="color: #990000;">*</span> Street Address:</strong></td> 
<td><label><span style="display: none;">Street Address</span><input type="text" name="address1" size="30" /></label></td> 
</tr> 
<tr> 
<td style="text-align: right;"><strong>Suite/Apt:</strong></td> 
<td><label><span style="display: none;">Suite/Apt</span><input type="text" name="address2" size="30" /></label></td> 
</tr> 
<tr> 
<td style="text-align: right;"><strong><span style="color: #990000;">*</span> City:</strong></td> 
<td><label><span style="display: none;">City</span><input type="text" name="city" size="30" /></label></td> 
</tr> 
<tr> 
<td style="text-align: right;"><strong><span style="color: #990000;">*</span> State:</strong></td> 
<td><label><span style="display: none;">State</span><input type="text" name="state" size="2" /></label></td> 
</tr> 
<tr> 
<td style="text-align: right;"><strong><span style="color: #990000;">*</span> Zip:</strong></td> 
<td><label><span style="display: none;">Zip</span><input type="text" name="zip" size="4" /></label></td> 
</tr> 
<tr> 
<td style="text-align: right;"><strong><span style="color: #990000;">*</span> Daytime Phone:</strong></td> 
<td><label><span style="display: none;">Daytime Phone</span><input type="text" name="dayphone" size="30" /></label></td> 
</tr> 
<tr> 
<td style="text-align: right;"><strong><span style="color: #990000;">*</span> Email Address:</strong></td> 
<td><label><span style="display: none;">Email Address</span><input type="text" name="email" size="30" /></label></td> 
</tr> 
<tr> 
<td></td> 
<td><input type="submit" name="submitButtonName" value="Submit Order" style="background-color: #012e63; color: white;" /></td> 
</tr> 
</table> 
</form> 

Вот мой почтовый сценарий.

<?php 

if ($_POST['firstname']=="") 
{ 
Print("The following fields are required</h2> 
<b>First Name<br> 
Last Name<br> 
Street Address<br>  
City<br> 
State<br> 
Zip<br> 
Daytime Phone<br> 
Email Address</b><br><br> 
<a href=\"javascript:history.go(-1)\">< Back</a></center> 
</div>"); 
exit(); 
} 

if ($_POST['lastname']=="") 
{ 
Print("The following fields are required</h2> 
<b>First Name<br> 
Last Name<br> 
Street Address<br>  
City<br> 
State<br> 
Zip<br> 
Daytime Phone<br> 
Email Address</b><br><br> 
<a href=\"javascript:history.go(-1)\">< Back</a></center> 
</div>"); 
exit(); 
} 

if ($_POST['address1']=="") 
Print("The following fields are required</h2> 
<b>First Name<br> 
Last Name<br> 
Street Address<br>  
City<br> 
State<br> 
Zip<br> 
Daytime Phone<br> 
Email Address</b><br><br> 
<a href=\"javascript:history.go(-1)\">< Back</a></center> 
</div>"); 
exit(); 
} 

if ($_POST['city']=="") 
{ 
Print("The following fields are required</h2> 
<b>First Name<br> 
Last Name<br> 
Street Address<br>  
City<br> 
State<br> 
Zip<br> 
Daytime Phone<br> 
Email Address</b><br><br> 
<a href=\"javascript:history.go(-1)\">< Back</a></center> 
</div>"); 
exit(); 
} 

if ($_POST['state']=="") 
{ Print("The following fields are required</h2> 
<b>First Name<br> 
Last Name<br> 
Street Address<br>  
City<br> 
State<br> 
Zip<br> 
Daytime Phone<br> 
Email Address</b><br><br> 
<a href=\"javascript:history.go(-1)\">< Back</a></center> 
</div>"); 
exit(); 
} 

if ($_POST['zip']=="") 
{ 
Print("The following fields are required</h2> 
<b>First Name<br> 
Last Name<br> 
Street Address<br>  
City<br> 
State<br> 
Zip<br> 
Daytime Phone<br> 
Email Address</b><br><br> 
<a href=\"javascript:history.go(-1)\">< Back</a></center> 
</div>"); 
exit(); 
} 

if ($_POST['dayphone']=="") 
{ 
Print("The following fields are required</h2> 
<b>First Name<br> 
Last Name<br> 
Street Address<br>  
City<br> 
State<br> 
Zip<br> 
Daytime Phone<br> 
Email Address</b><br><br> 
<a href=\"javascript:history.go(-1)\">< Back</a></center> 
</div>"); 
exit(); 
} 

if ($_POST['email']=="") 
{ 
Print("The following fields are required</h2> 
<b>First Name<br> 
Last Name<br> 
Street Address<br>  
City<br> 
State<br> 
Zip<br> 
Daytime Phone<br> 
Email Address</b><br><br> 
<a href=\"javascript:history.go(-1)\">< Back</a></center> 
</div>"); 
exit(); 
} 

$title = 'My form submission'; 
$description = 'Mail'; 
$section = 'mail'; 

$cn =  $_POST["companyname"]; 
$fn =  $_POST["firstname"]; 
$ln =  $_POST["lastname"]; 
$ad =  $_POST["address1"]; 
$add =  $_POST["address2"]; 
$ci =  $_POST["city"]; 
$st =  $_POST["state"]; 
$zi =  $_POST["zip"]; 
$dp =  $_POST["dayphone"]; 
$em =  $_POST["email"]; 

$subject = "My form submissio"; 

$headers .= "From: ". $em; 

$message .= "SHIPPING INFORMATION\n\n"; 
$message .= "Company Name: $cn \n"; 
$message .= "First Name: $fn \n"; 
$message .= "Last Name: $ln \n"; 
$message .= "Street Address: $ad \n"; 
$message .= "Suite/Apt: $add \n"; 
$message .= "City: $ci \n"; 
$message .= "State: $st \n"; 
$message .= "Zip: $zi \n"; 
$message .= "Daytime Phone: $dp \n"; 
$message .= "Email Address: $em "; 

$useronea = "name"; 
$useroneb = "domain"; 
$useronec = "com"; 
$to = $useronea."@". $useroneb.".". $useronec; 
$mail_sent = @mail( $to, $subject, $message, $headers); 

echo "Thank you for your submission"; 

?> 
+2

Сессии и жетоны может быть лучший вариант http://www.phpro.org/tutorials/Preventing-Multiple-Submits.html –

+2

Вы должны всегда проверять на стороне сервера/в PHP. Проверка javascript - это просто, чтобы улучшить работу пользователя. – jeroen

+1

JS будет правильным способом справиться с этим. На стороне PHP это сложнее - вы можете ограничить количество запросов, но тогда вам нужно будет хранить временные метки для каждого пользователя, что делает все довольно сложным. –

ответ

0

Вот как я достиг этого с помощью Javascript.

<script type="text/javascript"> 

var submitting = false; 

function checkForm(form) 
{ 
    if(form.firstname.value == "") { 
     alert("Please enter First Name"); 
     form.firstname.focus(); 
     return false; 
    } 
    if(form.lastname.value == "") { 
     alert("Please enter Last Name"); 
     form.lastname.focus(); 
     return false; 
    } 
if(form.address1.value == "") { 
     alert("Please enter Street Address"); 
     form.lastname.focus(); 
     return false; 
    } 
if(form.city.value == "") { 
     alert("Please enter City"); 
     form.lastname.focus(); 
     return false; 
    }  
if(form.state.value == "") { 
     alert("Please enter State"); 
     form.lastname.focus(); 
     return false; 
    }  
if(form.zip.value == "") { 
     alert("Please enter Zip"); 
     form.lastname.focus(); 
     return false; 
    } 
if(form.dayphone.value == "") { 
     alert("Please enter Daytime Phone"); 
     form.lastname.focus(); 
     return false; 
    } 
if(form.email.value == "") { 
     alert("Please enter Email Address"); 
     form.lastname.focus(); 
     return false; 
    } 

    return true; 
} 

function resetForm(form) 
{ 
    form.myButton.disabled = false; 
    form.myButton.value = "Submit"; 
    submitting = false; 
} 

</script> 

<form action="mail.php" method="post" onsubmit=" 
if(submitting) { 
    alert('The form is being submitted, please wait a moment...'); 
    myButton.disabled = true; 
    return false; 
} 
if(checkForm(this)) { 
    myButton.value = 'Submitting form...'; 
    submitting = true; 
    return true; 
} 
return false;"> 
<table border="0" cellspacing="2" cellpadding="2"> 
<tr> 
<td><strong>Company Name:</strong></td> 
<td><label><span style="display: none;">Company Name</span><input type="text" name="companyname" size="30" /></label></td> 
</tr> 
<tr> 
<td style="text-align: right;"><strong><span style="color: #990000;">*</span> First Name:</strong></td> 
<td><label><span style="display: none;">First Name</span><input type="text" name="firstname" size="30" /></label></td> 
</tr> 
<tr> 
<td style="text-align: right;"><strong><span style="color: #990000;">*</span> Last Name:</strong></td> 
<td><label><span style="display: none;">Last Name</span><input type="text" name="lastname" size="30" /></label></td> 
</tr> 
<tr> 
<td style="text-align: right;"><strong><span style="color: #990000;">*</span> Street Address:</strong></td> 
<td><label><span style="display: none;">Street Address</span><input type="text" name="address1" size="30" /></label></td> 
</tr> 
<tr> 
<td style="text-align: right;"><strong>Suite/Apt:</strong></td> 
<td><label><span style="display: none;">Suite/Apt</span><input type="text" name="address2" size="30" /></label></td> 
</tr> 
<tr> 
<td style="text-align: right;"><strong><span style="color: #990000;">*</span> City:</strong></td> 
<td><label><span style="display: none;">City</span><input type="text" name="city" size="30" /></label></td> 
</tr> 
<tr> 
<td style="text-align: right;"><strong><span style="color: #990000;">*</span> State:</strong></td> 
<td><label><span style="display: none;">State</span><input type="text" name="state" size="2" /></label></td> 
</tr> 
<tr> 
<td style="text-align: right;"><strong><span style="color: #990000;">*</span> Zip:</strong></td> 
<td><label><span style="display: none;">Zip</span><input type="text" name="zip" size="4" /></label></td> 
</tr> 
<tr> 
<td style="text-align: right;"><strong><span style="color: #990000;">*</span> Daytime Phone:</strong></td> 
<td><label><span style="display: none;">Daytime Phone</span><input type="text" name="dayphone" size="30" /></label></td> 
</tr> 
<tr> 
<td style="text-align: right;"><strong><span style="color: #990000;">*</span> Email Address:</strong></td> 
<td><label><span style="display: none;">Email Address</span><input type="text" name="email" size="30" /></label></td> 
</tr> 
<tr> 
<td></td> 
<td><input type="submit" name="myButton" value="Submit Order" style="background-color: #012e63; color: white;" id="myButton"/></td> 
</tr> 
</table> 
</form>