PHP - Realizar un registro por dispositivo

 
Vista:
sin imagen de perfil

Realizar un registro por dispositivo

Publicado por Angel (1 intervención) el 02/05/2022 04:08:39
Saludos a todos,
en mi pagina web hecha en php, los usuarios pueden llenar un formulario y con el boton aceptar guardar dicho registro.

Lo que deseo y no se como hacerlo es, que el sistema me identifique ese equipo, ya sea pc o celular y no permita que este realice otro registro, osea no permitir dos registros desde el mismo equipo.

Saludos,
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Realizar un registro por dispositivo

Publicado por antonio (16 intervenciones) el 02/05/2022 20:34:24
Eso es bastante difícil, porque ya diferencia entre dispositivos es la MAC y casi todos los dispositivos tienen restringido que una pagina web la muestre o la sepa:

No, no puede obtener la dirección MAC , principalmente porque la dirección MAC identifica de forma exclusiva la computadora en ejecución, por lo que sería una vulnerabilidad de seguridad, esto es lo que seguro que te mostrará.

Y si es por versión o tipo de dispositivo te digo que hay varias personas con el mismo dispositivo y versión del mismo por ejemplo los de iphone.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ivan

Realizar un registro por dispositivo

Publicado por Ivan (118 intervenciones) el 02/05/2022 20:55:44
Hola,

interesante tu pregunta, la teoría es identificar algunos componentes claves del equipo y obtener sus números de serie o similar. Una vez los tengas en un string lo encriptas todo con md5 o sha1 y ya tienes un identificador unico para esa máquina.

EL PROBLEMA:
Para acceder a dichos componentes y números de serie debes instalar una aplicación en el dispositivo. Cosa que con PHP y a través de Internet no se puede hacer. Imagínate el problema de seguridad que sería que desde internet accedieran así de fácil a tu ordenador.

SOLUCIONES:
Con los métodos que dispone PHP no se puede hacer con suficientes garantias, porque a lo sumo puedes identificar el Navegador de Internet y poca cosa más, con lo cual es muy fácil cambiar de navegador.

Puedes intentar ejecutar comandos shell, exec, etc. en el dispositivo, pero una vez más, desde Internet, suelen estar prohibidos estos métodos en los servidores.

De todos modos te pongo un código para que lo pruebes

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
 function UniqueMachineID($salt = "") {
  if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
      $temp = sys_get_temp_dir().DIRECTORY_SEPARATOR."diskpartscript.txt";
      if(!file_exists($temp) && !is_file($temp)) file_put_contents($temp, "select disk 0\ndetail disk");
      $output = shell_exec("diskpart /s ".$temp);
      $lines = explode("\n",$output);
      $result = array_filter($lines,function($line) {
          return stripos($line,"ID:")!==false;
      });
      if(count($result)>0) {
          $result = array_shift(array_values($result));
          $result = explode(":",$result);
          $result = trim(end($result));
      } else $result = $output;
  } else {
      $result = shell_exec("blkid -o value -s UUID");
      if(stripos($result,"blkid")!==false) {
          $result = $_SERVER['HTTP_HOST'];
      }
  }
  return sha1($salt.sha1($result));
}
echo '<h2>Identificador con shell:</h2>'.UniqueMachineID();
echo '<h2>Identificador con $_SERVER:</h2>'.sha1($_SERVER['HTTP_USER_AGENT']);
?>

Un saludo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar