Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
提交时隐藏或清除PHP表单_Php_Forms_Submit_Hide_Captcha - Fatal编程技术网

提交时隐藏或清除PHP表单

提交时隐藏或清除PHP表单,php,forms,submit,hide,captcha,Php,Forms,Submit,Hide,Captcha,我有一个php联系人表单,它可以很好地进行验证等,但我有一个小问题。我调整过的原始代码将页面重定向到一个新页面,在提交时显示了一条我不满意的感谢消息,因此我设法在原始页面上显示了一条感谢消息,但是输入表单内容仍然保留,我宁愿它没有。更好的是,我希望能够完全隐藏表单,并用“谢谢”替换它 我应该提到,当完成后,它将与其他项目一起放在页面上,因此它只是我隐藏或清除后的表单 这是标题中的代码 <?php $your_email ='email@example.com'; session_sta

我有一个php联系人表单,它可以很好地进行验证等,但我有一个小问题。我调整过的原始代码将页面重定向到一个新页面,在提交时显示了一条我不满意的感谢消息,因此我设法在原始页面上显示了一条感谢消息,但是输入表单内容仍然保留,我宁愿它没有。更好的是,我希望能够完全隐藏表单,并用“谢谢”替换它

我应该提到,当完成后,它将与其他项目一起放在页面上,因此它只是我隐藏或清除后的表单

这是标题中的代码

<?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
}

您可以在表单上触发此函数onsubmitonclick事件

 <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;
});