simfatic/formhandler

PHP的基本通用表单处理器

1.1.3 2021-11-05 10:45 UTC

This package is auto-updated.

Last update: 2024-09-05 16:46:15 UTC


README

此软件包可用于创建简单的PHP脚本,用于处理表单提交。目前,此PHP表单处理器可以进行验证、处理验证码、发送表单电子邮件以及处理文件附件。

简单用法

use Simfatic\FormHandler\FormHandler;

$fh = new FormHandler(); 

$fh->validate(function($validator)
{
	$validator->field('name')->isRequired();
	$validator->field('email')->isEmail()->isRequired();

})->sendEmailTo('someone@website.com');


echo $fh->process($_POST);

表单验证使用Simfatic\Boar完成。因此,任何自定义都可以放在验证回调中。

自定义邮件发送器

FormHandler使用PHPMailer。选项可以像这样自定义。

use Simfatic\FormHandler\FormHandler;

$fh = new FormHandler(); 

$fh->validate(function($validator)
{
	$validator->field('name')->isRequired();
	$validator->field('email')->isEmail()->isRequired();

})->configMailer(function($mailer)
{
	$mailer->setFrom('someone@yourwebsite.com','Form',false);
	
	$mailer->isSMTP();                                    // Send using SMTP
    $mailer->Host       = 'smtp.example.com';             // Set the SMTP server to send through
    $mailer->SMTPAuth   = true;                           // Enable SMTP authentication
    $mailer->Username   = 'user@example.com';             // SMTP username
    $mailer->Password   = 'secret';                       // SMTP password
    $mailer->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS; // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
	$mailer->Port       = 587;   
	
	/*
	Example: adding Cc
	$mail->addCC('cc@example.com');
	*/
	
})->sendEmailTo('someone@gmail.com');


echo $fh->process($_POST);

文件附件

调用attachFiles,传递文件上传字段的名称。

$fh = new FormHandler(); 

$fh->validate(function($validator)
{
    $validator->field('name')->isRequired();
    $validator->field('email')->isEmail()->isRequired();

})->attachFiles(['image'])
->sendEmailTo('someone@gmail.com');

ReCaptcha v2

为了显示“我不是机器人”复选框,在您的表单中创建一个div,如下所示:

<div class="g-recaptcha" data-sitekey="xxxxxxxxxxx"></div>

然后更新处理器

use Simfatic\FormHandler\FormHandler;

$pp = new FormHandler(); 

$pp->validate(function($validator)
{
	$validator->field('name')->isRequired();
	$validator->field('email')->isEmail()->isRequired();
})
->requireReCaptcha(function($recaptcha)
{
	$recaptcha->initSecretKey('xxxxxx');
})
->configMailer(function($mailer)
{
	$mailer->setFrom('someone@form.guide','Form',false);
})
->sendEmailTo('someone@gmail.com');


echo $pp->process($_POST);

示例文件夹中查看完整的示例。

客户端处理

您可以直接在表单的action属性中提供自定义handler.php的链接。

另一个选择是使用JavaScript处理表单的响应。process()函数的响应是JSON。以下是一个示例。此示例使用jQuery。

$(function()
{
	$('#contact_form').submit(function(e)
	{
		e.preventDefault();
		$.post( 'handler.php', $('form#contact_form').serialize(), 
		    function(data) 
		      {
                if(data.result == 'success')
                {
                    $('form#contact_form').hide();
                    $('#success_message').show();
                }
                else
                {
                    $('#error_message').append('<ul></ul>')
                    jQuery.each(data.errors,function(key,val)
                    {
                        $('#error_message ul').append('<li>'+key+':'+val+'</li>');
                    });
                    $('#error_message').show();
                    
                }
		        
		      },'json');
	});
});