2016-05-26 14 views
0

私は車のVIN番号のために余りにも限界と照会フォームをあまりにも17文字、17文字しか見ていない、次のenquiry.phpコードを改正する方法があるenquiry.phpフォームフィールドを特定の文字の制限に限定する

<?php 
    //if mysite.co.za is there in HTTP_REFERRER variable 
    if(strpos($_SERVER['HTTP_REFERER'],'mysite.co.za')) 
    { 
    //only process operation here 
    require_once('recaptchalib.php'); 
    $privatekey = " "; 
    $resp = recaptcha_check_answer ($privatekey, 
$_SERVER["REMOTE_ADDR"], 
$_POST["recaptcha_challenge_field"], 
$_POST["recaptcha_response_field"]); 

    if (!$resp->is_valid) { 
    header("Location: http://www.mysite.co.za/car-electronic-equipment-replacement-error.html"); 
    } else { 
    // Your code here to handle a successful verification 
    function spamcheck($field) { 
    //filter_var() sanitizes the e-mail 
    //address using FILTER_SANITIZE_EMAIL 
    $field=filter_var($field, FILTER_SANITIZE_EMAIL); 

    //filter_var() validates the e-mail 
    //address using FILTER_VALIDATE_EMAIL 
    if(filter_var($field, FILTER_VALIDATE_EMAIL)) { 
    return TRUE; 
    } else { 
    return FALSE; 
    } 
} 
//check if the email address is invalid 
    $to = "[email protected]"; 
    $subject = "Key-Soft Enquiry Form"; 
    $name_field = $_POST['name']; 
    $email_field = $_POST['email']; 
    $number_field = $_POST['number']; 
    $make_field = $_POST['make']; 
    $model_field = $_POST['model']; 
    $vin_field = $_POST['vin']; 
    $location_field = $_POST['location']; 
    $locked_field = $_POST['locked']; 
    $lostKeys_field = $_POST['lostKeys']; 
    $remoteKey_field = $_POST['remoteKey']; 
    $info = $_POST['info']; 
    $headers = 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
    $headers="From: $name_field <$email_field>" . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

    $body = "From: $name_field\n 
    Email Address: $email_field\n 
    Phone Number: $number_field\n 
    Car Make: $make_field\n 
    Year Model: $model_field\n 
    Vin Number: $vin_field\r 
    Location of vehicle: $location_field\n 
    Is the car locked: $locked_field\n 
    Are all keys lost: $lostKeys_field\n 
    Are they remote keys: $remoteKey_field\n 
    Additional Info: $info"; 

    header("Location: http://www.mysite.co.za/vehicle-security-key-duplication-thank-you.html"); 
    mail($to, $subject, $body, $headers); 

} 
} 
?> 
+0

そうしないのはなぜHTMLの最大の長さのタグを使用して同様にまずユーザーインターフェイスの入力を検証しますか? –

答えて

0

あなたは(exempleためにJavaScriptで)

を提出する前に、フォームの入力を検証することができそして、あなたは間違いなくあなたのデータを制御する必要があります:ユーザーが偽のVIN番号で必要なフィールドをバイパスしておくと、これを強制PHPで処理する前に:

あなたが送信された値が有効であるかないかどうかを確認するために正規表現を使用することができ、公式形式のVINをによって:

$vin_field = (string) $_POST['vin']; 

if (!preg_match('/^(?:([A-HJ-NPR-Z]){3}|\d{3})(?1){2}\d{2}(?:(?1)|\d)(?:\d|X)(?:(?1)+\d+|\d+(?1)+)\d{6}$/', $vin_field)) { 
    // the value is not correct, you should not save here 
    // consider redirecting the user to the form page with an error 
} 

正規表現とVIN形式の検証についてstack overflow questionがあります。

javascriptフォームフィールドの検証には、インターネットの中にたくさんのメソッドがあります。

Stack overflow question about itもあります。

0

あなたのケースでは、あなたがこのようなあなたの変数をチェックすることができますので、あなたは、int strlen (string $string)機能を使用して文字列のな長さを確認することができます。

if (strlen($vinfield) != 17){ 
    ///do something 
} 

しかし、私は最初にすべての入力フォームにご変数を検証します。

<input type="text" name="vin" maxlength="17" id="vin"> 

そしてまた、そのように検証するためにはJavaScriptを使用します:

<script> 
function validate() { 
    submitFlag = true; 
    if(document.yourForm.vin.value.length != 17){ 
     submitFlag=false; 
     alert("ivalid length - 17 characters needed!"); 
    } 
    return submitFlag; 
} 
</script> 

そして、あなたのformタグでこれを含める:

onsubmit="return validate()" 
+0

maxlength属性はユーザーが何も入力しないようにしたり、短い文字列を入力したりすることを妨げません – jiboulex

+0

なぜJavaスクリプトとPHPの検証も使用する必要があります。最大値はユーザーを少し制限します。 –

+0

多くのありがとうございました、援助は大歓迎です。 – DylanG

関連する問題