Created
July 18, 2019 15:28
-
-
Save parzibyte/744507dede3f5729c2397a0ee2e9491a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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