清理/验证使用jQuery提交的PHP联系人表单

清理/验证使用jQuery提交的PHP联系人表单,php,jquery,validation,post,sanitization,Php,Jquery,Validation,Post,Sanitization,因此,我有一个基本的mail()联系人表单,它通过jQuery脚本发布数据,我想验证和清理数据。显然,主要原因是为了安全,但也为了防止任何错误。目前唯一的验证形式是HTML(IE type=“tel”),这显然是不够的,也不安全 我的问题是如何保护此脚本?在jQuery或PHP中。对不起,我对这种东西还不太熟悉(编辑-我想知道如何特别保护它。示例代码、教程等-编辑) index.html <div class="order_info"> <form id="order-

因此,我有一个基本的mail()联系人表单,它通过jQuery脚本发布数据,我想验证和清理数据。显然,主要原因是为了安全,但也为了防止任何错误。目前唯一的验证形式是HTML(IE type=“tel”),这显然是不够的,也不安全

我的问题是如何保护此脚本?在jQuery或PHP中。对不起,我对这种东西还不太熟悉(编辑-我想知道如何特别保护它。示例代码、教程等-编辑)

index.html

<div class="order_info">
    <form id="order-form" class="order_form" action="php/order.php" method="post">
        <input id="or_name" class="or_field" required type="text" name="or_name" placeholder="Name*"> 
        <input id="or_company" class="or_field" type="text" name="or_company" placeholder="Company Name">
        <input id="or_email" class="or_field" required type="email" name="or_email" placeholder="Email*">
        <input id="or_tel" class="or_field" type="tel" name="or_tel" placeholder="Phone">
        <select id="or_package" class="or_field" required name="or_package">
            <option value="" selected disabled>Select Package*</option>
            <option value="Starter">Starter</option>
            <option value="Business">Business</option>
            <option value="Premier">Premier</option>
        </select>
        <textarea id="or_tarea" class="or_field" required name="or_details" placeholder="Project Details*"></textarea>
        <input id="or_submit" class="or_button" type="submit" value="SUBMIT!">
    </form>
</div>
order.php

<?php
$field_name = $_POST['or_name'];
$field_company = $_POST['or_company'];
$field_email = $_POST['or_email'];
$field_tel = $_POST['or_tel'];
$field_package = $_POST['or_package'];
$field_details = $_POST['or_details'];

$mail_to = 'email@email.com'; //Change to your email
$subject = 'Enquiry from '.$field_name.' ('.$field_company.')'; //Change to your subject

$body_message = 'From: '.$field_name."\n";
$body_message .= 'Company: '.$field_company."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Phone: '.$field_tel."\n";
$body_message .= 'Package: '.$field_package."\n";
$body_message .= 'Details: '.$field_details;

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

mail($mail_to, $subject, $body_message, $headers);
?>

IMO,您应该在客户端(JQuery)验证和删除数据,然后在服务器端(PHP)验证和/或清理数据。原因是,由于速度的原因,客户端的验证是用户友好的,并且您可以针对页面的特定区域。实际上,出于不同的原因,两者都是必要的。以下是包含更多信息的页面:

我不建议在客户端执行所有操作,因为表单可以直接提交到服务器,从而绕过JQuery验证


始终在服务器上验证您的表单!想象一下,有人用一个脚本将您的
order.php
作为目标,该脚本在一万次迭代循环中向它发出直接POST请求。你变成了一个巨大的垃圾邮件中继(可能是恶意的),无法控制电子邮件中发送的内容。谢谢你的回答。这里没有数据库活动,但我知道我仍然需要防止(头注入[?])攻击。我现在已经完善了这个问题,我想我是在寻找保护它所需要的实际代码,而不是这样做的原因。
<?php
$field_name = $_POST['or_name'];
$field_company = $_POST['or_company'];
$field_email = $_POST['or_email'];
$field_tel = $_POST['or_tel'];
$field_package = $_POST['or_package'];
$field_details = $_POST['or_details'];

$mail_to = 'email@email.com'; //Change to your email
$subject = 'Enquiry from '.$field_name.' ('.$field_company.')'; //Change to your subject

$body_message = 'From: '.$field_name."\n";
$body_message .= 'Company: '.$field_company."\n";
$body_message .= 'E-mail: '.$field_email."\n";
$body_message .= 'Phone: '.$field_tel."\n";
$body_message .= 'Package: '.$field_package."\n";
$body_message .= 'Details: '.$field_details;

$headers = 'From: '.$field_email."\r\n";
$headers .= 'Reply-To: '.$field_email."\r\n";

mail($mail_to, $subject, $body_message, $headers);
?>