2016-05-26 7 views
0

ich suche zu begrenzen und Anfrageformular speziell zu 17 Zeichen für ein Kraftfahrzeug Fahrgestellnummer, nur 17 Zeichen, gibt es eine Möglichkeit, den folgenden enquiry.php Code zur Änderung erzwingen dies, da die Benutzer das gewünschte Feld mit gefälschten VIN Zahlen halten Umgehung: (für eine exemple in Javascript)enquiry.php Begrenzung Formularfeld auf eine bestimmte Zeichenbegrenzung

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

Warum nicht Eingabedaten auf der Benutzeroberfläche zuerst validieren? –

Antwort

0

Sie könnten den Eingang des Formulars bestätigen vor dem Absenden

Und Sie sollten auf jeden Fall Ihre Daten kontrollieren bevor es in pHP-Verarbeitung:

Abhängig von dem offiziellen Format VIN könnten Sie einen regulären Ausdruck verwenden, um zu überprüfen, ob der übermittelte Wert gültig ist oder nicht:

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

gibt es eine stack overflow question über ein VIN-Format mit einem regex Validierung.

für die JavaScript-Formularfelder Validierung gibt es Methoden unter dem Internet reichlich.

Es gibt auch eine Stack overflow question about it.

0

Sie können die Länge eines Strings überprüfen int strlen (string $string) Funktion verwenden, so in Ihrem Fall, dass Sie Ihre Variable wie folgt überprüfen könnte:

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

Aber ich würde zunächst einmal bestätigen Sie Ihre Variable auf Eingabeformular. Wie mit HTML max Länge tag:

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

Und dann auch Javascript verwenden, um zu validieren, wie so:

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

und nehmen diese in Ihrem Formular-Tag: Sie

onsubmit="return validate()" 
+0

Das Attribut maxlength keinen Benutzer verhindert in nichts oder eine kürzere Zeichenfolge – jiboulex

+0

Das ist zu geben, warum wou auch Java-Script und PHP-Validierung, Max-Wert nur verwenden soll, schränkt den Anwender ein wenig. –

+0

Vielen Dank, Jungs, Hilfe wird sehr geschätzt. – DylanG