2016-05-05 12 views
0

Ich habe das Skript von here verwendet, um die Verifizierung durchzuführen.Ist es falsch, die Bestätigung von Google zu analysieren?

Die $result === FALSE Bedingung wurde umgangen, unabhängig davon, dass ich auf die Re-Captcha-Validierung auf meinem Formular klickte.

Also beschloss ich, ihn manuell zu analysieren, wie so:

Die Rückkehr sieht wie folgt aus, wenn ein Fehler:

{ 
"success":false, 
"error-codes":[ 
    "missing-input-response" 
] 
} 

Und wenn es Erfolg ist es ähnlich aussieht, aber einige zusätzliche Dinge gebunden sind, aber die I Hauptsache gezielt war die Zeichenfolge "success":true,

Mit diesem Teil des Skripts direkt unterhalb der $result Variable:

$result_copy = $result; 
// remove white spaces everywhere 
$mod_res_copy = preg_replace('/\s+/', '', $result_copy); 
$success_string = '"success":true'; 
if(strpos($mod_res_copy, $success_string) !== false) { 
    $status = "ok"; 
}else { 
    $status = "not-ok"; 
} 
if ($status == "not-ok") { 
    echo "Please complete the captcha to prevent spam."; 
    exit; 
}else { 
    // trigger database insert of comment or whatever 
} 

Was ich wissen will, ist das falsch? Kann das gefälscht werden? Ich verwende PHP als meine serverseitige Skriptsprache.

Antwort

0

Sie tun viel mehr Arbeit als Sie benötigen, um $result zu analysieren.
Es ist in JSON Format, so ist dies alles, was Sie brauchen:

$status = json_decode($result)->success ? 'ok' : 'not-ok';