Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - #!drvy

#841
Consejo: Aprende inglés y busca documentación oficial antes que cualquier cosa.

https://developers.google.com/recaptcha/docs/v3


Hay 3 versiones como tu bien dices. Esta la V2 y la V3. De la V2 tienes 2 opciones:
- Que te salga el check siempre (y que Google decida si hacerle challange al usuario)
- QUe te salga el check y el challange solo cuando Google cree que debería hacerle challenge al usuario, esta última se clasifica como "Invisible".

La V3 es muy parecida a la V2, la diferencia principal es que usa IA y trabaja de forma constante desde que el usuario entra a tu página. En vez de retar o hacer cosas raras, lo que hace es analizar el comportamiento y dar una puntuación de 0 a 1. Normalmente, si está por debajo de 0.5, Google cree que el usuario no es un humano o que al menos huele mal.


Ambas versiones lo que hacen es dar un hash que tienes que pasarle a Google y Google a partir de ahí te dice lo que opina, se basa así:

Recaptcha genera un hash -> Tu recibes ese hash en el servidor -> Se lo mandas a Google -> Google te responde si es valido o no.

Para implementar el V3 en PHP es relativamente sencillo. Supongamos que tienes un formulario relativamente simple:

Código (html5) [Seleccionar]
<form action='' method='POST'>
   <input type='text' name='user' placeholder='Usuario'>
   <input type='password' name='pass' placeholder='Contraseña'>
   <input type='hidden' name='loginToken' id='loginToken' value=''>
   <button type='submit'>Entrar</button>
</form>
<script src='https://www.google.com/recaptcha/api.js?render=reCAPTCHA_site_key'></script>
<script src='recaptcha.js'></script>


Si te fijas hay un campo hidden que se llama loginToken, ese es el que va a contener el token (hash) que te da el Recaptcha. Tienes que poblarlo y para hacerlo puedes hacer esto en javascript (recaptcha.js).

Código (javascript) [Seleccionar]
// Cuando el recaptcha se haya cargado...
grecaptcha.ready(function() {

   // Añadimos un evento que escucha para cuando se envie el formulario..
   document.getElementById('loginForm').addEventListener('submit', function(e){

       // Si se envia, sacamos el token asignandole de acion 'loginForm'
       grecaptcha.execute('reCAPTCHA_site_key', {action: 'loginForm'}).then(function(token) {

           // y ponemos el token en el campo invisible.
           document.getElementById('loginToken').value = token;

       });
   });
});



Así pues cuando se envíe el formulario, te va a pasar un token al servidor con el nombre loginToken. Ahora necesitas validarlo, en PHP capturas el token y se lo mandas a Google:

Código (php) [Seleccionar]
<?php
define
('RECAPTCHA_SECRET''blablabla');
define('RECAPTCHA_URL''https://www.google.com/recaptcha/api/siteverify');


function 
validateRecaptcha($token)
{
    
$data = array(
        
'secret' => RECAPTCHA_SECRET,
        
'response' => $token,
        
'remoteip' => $_SERVER['REMOTE_ADDR'// este es opcional
    
);

    
// Hacemos la petición a Google
    
$curl curl_init();
    
curl_setopt_array(
        
$curl,
        array(
            
CURLOPT_URL => RECATPCHA_URL,
            
CURLOPT_POST => true,
            
CURLOPT_POSTFIELDS => $data,
            
CURLOPT_RETURNTRANSFER => true
    
));

    
// Obtenemos la respuesta
    
$response json_decode(curl_exec($curl));

    
// Si la respuesta esta vacia, o la respuesta no es positiva
    
if (empty($response) || empty($response->success)) {
        return 
false;
    }

    
// Obtenemos la puntuación y comprobamos si es menor a 0.5
    
$score $response->score;

    if (
$score 0.5) {
        return 
false;
    }

    return 
true;
}

if (isset(
$_POST['user'], $_POST['password'], $_POST['loginToken'])) {

    
$token = (!empty($_POST['loginToken']) ? $_POST['loginToken'] : '');

    if (!
validateRecaptcha($token)) {
        die(
'El captcha no es valido');
    }

    
// Resto del codigo.
}


Lo he hecho todo un poco de memoria y sin probarlo pero debería funcionar. Pero, hazte caso y aprende inglés... es obligatorio para programar.

Saludos
#842
Buscate un hosting gratuito, tienes muchos como Hostinger, x10Host, 000webhost etc.. todos te dan FTP.

Si quieres montar un servidor FTP, es tan fácil como mirarte un tutorial.
https://www.adslzone.net/redes/windows/como-instalar-un-servidor-ftp-en-windows/


Saludos
#843
PHP / Re: My sqli echo parse error
6 Septiembre 2019, 09:25 AM
Cual es la línea 190?


Saludos
#844
Si tienes el evento capturado por javascript (addEventListener) no te hace falta el onclick. Aquí tienes el codigo que te he puesto funcionando, con addEventListener, sin onclick.

https://jsfiddle.net/s7f8Lgdk/


CitarQuisiera saber que podria ser gracias.

Has eliminado el ID del boton Inversor? Estás intentando añadir un evento a algo que no existe.

Saludos
#845
Yo uso el nativo de Windows 10. Me aseguro de que todas las aplicaciones que necesito y/o instalo están en el Start Menu, ya sea porque tienen una entrada o porque están pineadas. Los pines son super útiles una vez limpias todo el bloatware.



Y si me hace falta algo en concreto de forma rapida, simplemente pulso la tecla Windows y empiezo a escribir su nombre:




Hace tiempo utilizaba Launchy pero como el menú de inicio mejoró y la búsqueda es mucho más rápida pues no tengo más motivos.


PD: La búsqueda se ve así porque en la 1903 metieron un feature en el que la hacían centrarse en pantalla en vez de mostrar los resultados en el propio taskbar como antes. Se parece bastante más al Spotlight de Mac OS. Se puede poner así modificando el registro: https://winaero.com/blog/enable-floating-search-windows-10/


PD2: En Linux tienes eso por defecto también con ALT + F2 aunque yo recomiendo bindearlo a otra combinación más cómoda. En Mac OS tienes Spotlight (CMD + Espacio).

Saludos
#846
A parte de lo que te ha dicho el compañero @engel lex, si usas onclick o parecidos, has de asegurarte de que no mezclas ID con nombres de funciones. En este caso estas invocando una función llamada "inversor" y al mismo tiempo tienes un ID "inversor". Por lo tanto el navegador tira un TypeError.

Lo mejor es usar eventos de JS para capturar acciones.

Código (html5) [Seleccionar]
<form method="post" name="Formulario">
    <label for="numero">Numero:</label><br>
    <input type="text" name="numero" maxlength="10" placeholder="Digite el numero" id="numero">

    <button id="btnInvert" type="button">Inversor</button>
    <input type="text" name="inversor" maxlength="10" placeholder="Resultado" id="inversor"><br>
</form>


<script>
    document.getElementById('btnInvert').addEventListener('click', function(e){
        invertir();
    });

    function invertir() {
        var num1 = document.getElementById('numero').value;
        var resultado = 1/num1;
        document.getElementById('inversor').value = resultado;
    }
</script>


Saludos
#847
CitarEn general el exceso de actualizaciones contínuas, lo único que de verdad refleja es la inmadurez de un producto, de sus directivos y puede que hasta de sus programadores. En fin, unos PU70S cansinos.

O la constante implementación de nuevas funcionalidades e integración de parches de seguridad de Android (que son mensuales).


De todos modos, lo que indica el articulo, es que Nokia es el más rápido en actualizar sus dispositivos a una nueva versión de Android.




Y eso se debe principalmente a la poca gama de teléfonos que tienen yo creo..

Saludos
#848
Pues nada, parece que en las Condiciones de Uso se indica que para México no cubren artículos o servicios intangibles y efectivamente se están lavando las manos.

Eso no quiere decir que pueden hacerte un contracargo así porque si habiendo tú entregado el producto.. estoy de acuerdo con @engel lex, tienes para un juicio, puedes contactar con un abogado o ir a una asociación de protección de comercio o incluso a una de protección del consumidor, para que llevéis las cosas por lo formal, en muchas ocasiones estas cosas se solucionan de forma "amistosa" antes de llegar al propio juicio. Desde luego, tienes pruebas de que has entregado tu "producto" y de que has recibido el pago por parte del comprador.


Lo que sí que no te recomiendo es que lo dejes correr. Acabar en las listas de deudores (morosos, o buro o lo que sea), es una gran putada... igual ahora no te hace falta sacar un crédito o contratar algo .. pero en el futuro puede que sí y cuando más te haga falta es cuando más te va  dar por saco..

Saludos
#849
Hardware / Re: [TECLADO] Mecánico vs Membrana
2 Septiembre 2019, 11:18 AM
Yo he tenido un KROM, en concreto el Kernel TKL, me costó unos 50€ en su momento. La calidad de la impresión de las teclas dejaba algo que desear, sobretodo porque en algunas había restos no pulidos y se restregaba contra otras teclas creando ruidos y trabas innecesarias... puli las teclas y bueno, ni tan mal. Hay que decir que las teclas bailaban un poco lo cual siempre echa para atrás. Por lo demás, la respuesta era buena, se sentía bien escribir con él y los ajustes de iluminación tampoco estaban mal, un plus es que tenia teclas de FN. En fin, que pagabas por lo que recibias.. ni más ni menos.

Yo entiendo que 100€ te pueden parecer un gasto enorme en un teclado.. para mi no hay ni punto de comparación entre membrana y mecanico.. ni siquiera en los de tipo tijera (Scissor switch) que equipan los portátiles.. pero en fin.


Saludos
#850
Dudas Generales / Re: Pregunta sobre cookies
2 Septiembre 2019, 09:25 AM
Las cookies de terceros son cookies de otras páginas, por ejemplo: publicidad, analiticas o servicios como chat. No es para detectar si usas varias cuentas (al menos no de forma directa), es para que sepas (ya que están obligados de manera legal) que además de la página en la que estas, hay otras que recopilan información tuya y que almacenan una cookie en tu ordenador.

Saludos