Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Created July 18, 2019 15:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/744507dede3f5729c2397a0ee2e9491a to your computer and use it in GitHub Desktop.
Save parzibyte/744507dede3f5729c2397a0ee2e9491a to your computer and use it in GitHub Desktop.
<?php
$datos = [
'secret' => 'clave_privada', # clave privada. Obtener de coinhive
'token' => isset($_POST["coinhive-captcha-token"]) ? $_POST["coinhive-captcha-token"] : "", # el valor que recibimos del formulario. Poner modo por defecto si no lo mandan
'hashes' => 1024, # el mismo número que pusimos en el formulario
];
$contexto = stream_context_create([
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n", #Encabezados, dejar así
'method' => 'POST', # El método
'content' => http_build_query($datos) # Formamos la cadena de datos a enviar
]
]);
$url = 'https://api.coinhive.com/token/verify'; #Aquí se envían las peticiones
$respuesta = json_decode(file_get_contents($url, false, $contexto)); # Hacemos la petición POST
/*
La API devuelve un JSON. Lo decodificamos con json_decode y vemos si
no es NULL y si tiene una propiedad llamada success con el valor
true. En caso de que sí, adelante, el usuario ha
resuelto el captcha.
Si no (ya sea porque no se esperó, envió el formulario antes o
no resolvió los hashes esperados) entonces no lo dejamos pasar
*/
if($respuesta && $respuesta->success){
echo "Ok, pasa " . $_POST["nombre"]; #Ejemplo de lo que hacemos si todo va bien
}else{
echo "¡Alto ahí rufián!"
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment