- Lid geworden
- 13 aug 2013
- Berichten
- 5.389
Een goede onzichtbare aanvulling op een reCaptcha is controle op geo locatie.
Dit is de ip2geo functie (hierin niets wijzigen)
Zo gebruik je de function ip2geo voor een controle op geo locatie.
Als je wilt dat er geen mail wordt verstuurd als er geen landcode bekend is haal dan het volgende weg in regel 7
|| $cc === "??"
Dit is de ip2geo functie (hierin niets wijzigen)
PHP:
// iplocate.io voor omzetting van ip naar geo locatie.
// gratis te gebruiken tot max 1000 aanvragen per dag.
function ip2geo ($ip = "", $select = "") {
if (!filter_var($ip, FILTER_VALIDATE_IP)) return null;
$url = "https://www.iplocate.io/api/lookup/".$ip."/json?apikey=&callback=";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
$response = curl_exec($ch);
curl_close($ch);
if ($response === false) return null;
$data = json_decode($response);
if (is_null($data)) return null;
$arr = (array) $data;
$prop = strtolower(trim(strval($select)));
if (empty($arr)) return null;
if (array_key_exists('error', $arr)) return null;
if ($prop == "") return $arr;
if (!array_key_exists($prop, $arr)) return null;
if (strlen(strval($arr[$prop])) == 0) return "??";
return $arr[$prop];
}
Zo gebruik je de function ip2geo voor een controle op geo locatie.
PHP:
// De 2-letterige landcodes die zijn toegestaan, bijv. "NL,BE,LU,DE"
// Je vindt landcodes op https://nl.wikipedia.org/wiki/ISO_3166-1
$allow = "NL,BE,LU";
$ip = $_SERVER['REMOTE_ADDR'];
$cc = ip2geo ($ip, 'country_code');
$ok = (stripos($allow, $cc) !== false || $cc === "??");
if ($ok == false) {
echo "Mail niet versturen";
} else {
echo "Mail versturen is ok";
// hier je mail script invoegen
}
Als je wilt dat er geen mail wordt verstuurd als er geen landcode bekend is haal dan het volgende weg in regel 7
|| $cc === "??"
Laatst bewerkt: