提交时隐藏或清除PHP表单
我有一个php联系人表单,它可以很好地进行验证等,但我有一个小问题。我调整过的原始代码将页面重定向到一个新页面,在提交时显示了一条我不满意的感谢消息,因此我设法在原始页面上显示了一条感谢消息,但是输入表单内容仍然保留,我宁愿它没有。更好的是,我希望能够完全隐藏表单,并用“谢谢”替换它 我应该提到,当完成后,它将与其他项目一起放在页面上,因此它只是我隐藏或清除后的表单 这是标题中的代码提交时隐藏或清除PHP表单,php,forms,submit,hide,captcha,Php,Forms,Submit,Hide,Captcha,我有一个php联系人表单,它可以很好地进行验证等,但我有一个小问题。我调整过的原始代码将页面重定向到一个新页面,在提交时显示了一条我不满意的感谢消息,因此我设法在原始页面上显示了一条感谢消息,但是输入表单内容仍然保留,我宁愿它没有。更好的是,我希望能够完全隐藏表单,并用“谢谢”替换它 我应该提到,当完成后,它将与其他项目一起放在页面上,因此它只是我隐藏或清除后的表单 这是标题中的代码 <?php $your_email ='email@example.com'; session_sta
<?php
$your_email ='email@example.com';
session_start();
$errors = '';
$name = '';
$company = '';
$visitor_email = '';
$phone = '';
$user_message = '';
if(isset($_POST['submit']))
{
$name = $_POST['name'];
$company = $_POST['company'];
$visitor_email = $_POST['email'];
$phone = $_POST['phone'];
$user_message = $_POST['message'];
///------------Do Validations-------------
if(empty($name)||empty($visitor_email))
{
$errors .= "\n Name and Email are required fields. ";
}
if(IsInjected($visitor_email))
{
$errors .= "\n Bad email value!";
}
if(empty($_SESSION['6_letters_code'] ) ||
strcasecmp($_SESSION['6_letters_code'], $_POST['6_letters_code']) != 0)
{
//Note: the captcha code is compared case insensitively.
//if you want case sensitive match, update the check above to
// strcmp()
$errors .= "\n The captcha code does not match!";
}
if(empty($errors))
{
//send the email
$to = $your_email;
$subject="New form submission";
$from = $your_email;
$ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
$body = "A user $name submitted the contact form:\n".
"Name: $name\n".
"Company: $company\n".
"Email: $visitor_email \n".
"Phone: $phone\n".
"Message: \n ".
"$user_message\n".
"IP: $ip\n";
$headers = "From: $from \r\n";
$headers .= "Reply-To: $visitor_email \r\n";
mail($to, $subject, $body,$headers);
//header('Location: #thanks');
$myForm = '< style="visibility: hidden;">';
$thankyou = file_get_contents("thank-you.html");
}
}
// Function to validate against any email injection attempts
function IsInjected($str)
{
$injections = array('(\n+)',
'(\r+)',
'(\t+)',
'(%0A+)',
'(%0D+)',
'(%08+)',
'(%09+)'
);
$inject = join('|', $injections);
$inject = "/$inject/i";
if(preg_match($inject,$str))
{
return true;
}
else
{
return false;
}
}
?>
“id='captchaimg'>
在此处输入上面的代码:
无法读取图像?单击以刷新
这将隐藏表单。但这不会阻止你被垃圾邮件。如果你不想被垃圾邮件,你必须跟踪IP地址,并在提交电子邮件之前检查IP地址是否在最近30秒内没有发送电子邮件,比如说
if(empty($_POST)){
//You form goes here;
}
else{
echo $thankyou;
}
此外,您还可以使用类似于:
if(empty($thankyou)){
//You form goes here;
}
else{
echo $thankyou;
}
您最好创建单独的操作文件并用于显示感谢信息:
if(isset($_SESSION['msg'])){
echo $_SESSION['msg'];
}
else{
//display from here
}
您可以在表单上触发此函数onsubmit或onclick事件
<script>
function hideform()
{
document.forms['contact_form'].style.visibility = 'hidden';
}
</script>
函数hideform()
{
document.forms['contact_form'].style.visibility='hidden';
}
您可以使用jQuery在成功提交时清除表单div
$('#myform').submit(function(){
$('#formcontainer').empty;
});
其中myform和form container是您的表单的ID和包含表单的div,这似乎很有用。谢谢。我实际上并不太在意跟踪IP地址。这部分是我用于验证码的代码。我将其保留为新奇值,因为似乎不需要删除它。
<script>
function hideform()
{
document.forms['contact_form'].style.visibility = 'hidden';
}
</script>
$('#myform').submit(function(){
$('#formcontainer').empty;
});