Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] verificar si usuario es mayor de edad

Estas en el tema de verificar si usuario es mayor de edad en el foro de PHP en Foros del Web. quisiera tratar de verificar antes de poder hacer un insert si el usuarios a registrarse es mayor de edad, si es mayor de edad puede ...
  #1 (permalink)  
Antiguo 04/08/2017, 07:48
Avatar de aviweb2015  
Fecha de Ingreso: abril-2016
Ubicación: venezuela
Mensajes: 215
Antigüedad: 8 años
Puntos: 1
verificar si usuario es mayor de edad

quisiera tratar de verificar antes de poder hacer un insert si el usuarios a registrarse es mayor de edad, si es mayor de edad puede registrarse en el sistema, pero si es menor de edad el sistema no lo deje registrarse, ya que es requerido que sea mayor de edad para poder registrarse. pero no logro que funcione, gracias de ante mano


proceso para registrar

Código PHP:
Ver original
  1. <!-- proceso para registrar-->
  2. <?php
  3. if(isset($_POST['guardar'])){
  4.  
  5.  
  6. if($_POST['pass']!=$_POST['pass2']) {
  7.  
  8.            $errMSG = "¡ Ups Aviso: Las Contraseñas deben coincidir !";
  9.               header("refresh:5;registrarse.php");
  10.  
  11.  
  12.   }else {
  13.  
  14.  
  15.   $sql = "SELECT cedula FROM usuarios WHERE cedula = :cedula LIMIT 1"; //Creamos la select
  16.   $check = $DB_con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
  17.   $check->bindParam(':cedula', $_POST['cedula']);//Substituimos las variables de la SELECT
  18.   $check->execute();//Ejecutamos la consulta
  19.   $contador = $check -> rowCount();//Esta función devuelve el número de resultados que ha devuelto la SELECT
  20.   if ($contador > 0) {
  21.   $check->closeCursor();
  22.  
  23.           $errMSG = "¡ Ups Aviso: Este usuario ya se encuentra registrado !";
  24.               header("refresh:5;registrarse.php");
  25.   }
  26.  
  27.  
  28.   //avisame si el nombre de usuario existe
  29.   $sql = "SELECT id_usuarios FROM usuarios WHERE user = :user LIMIT 1";
  30.   //Creamos la select
  31.   $user_check = $DB_con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
  32.   $user_check->bindParam(':user', $_POST['user']);
  33.   $user_check->execute();
  34.   if($user_check->rowCount() > 0){
  35.   $user_check->closeCursor();
  36.  
  37.  
  38.   $errMSG = "¡ Aviso: El nombre de usuario ya se encuetra registrado !";
  39.   header("refresh:5;registrarse.php");
  40.  
  41.  
  42.   }
  43.  
  44.  
  45.   $sql= "SELECT edad FROM usuarios WHERE user = :user LIMIT 1"; //Creamos la select
  46.   $check = $DB_con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
  47.   $check->bindParam(':edad', $_POST['edad']);//Substituimos las variables de la SELECT
  48.   $check->execute();//Ejecutamos la consulta
  49.   $edad = $check->fetchColumn();
  50.   $edad=$_POST['edad'];
  51.  
  52.   if ($edad > 18){
  53.   $check->closeCursor();
  54.  
  55.  
  56.      $errMSG = "¡ Aviso: no se permiten registros a menores de edad !";
  57.        header("refresh:5;registrarse.php");
  58.  
  59.   }
  60.  
  61.   else
  62.   {
  63.  
  64.   $sql=$DB_con->prepare("INSERT INTO usuarios (user,pass,idnivel,cedula,nombres,apellidos,fecha_nac,edad,cod,telefono,direccion,id_seguros,id_servicios,observaciones)
  65.  VALUES (:user,:pass,:idnivel,:cedula,:nombres,:apellidos,:fecha_nac,:edad,:cod,:telefono,:direccion,:id_seguros,:id_servicios,:observaciones)");
  66.   $sql->bindParam(':user', $_POST['user']);
  67.   $sql->bindParam(':pass', $_POST['pass']);
  68.   $sql->bindParam(':idnivel', $_POST['idnivel']);
  69.   $sql->bindParam(':cedula', $_POST['cedula']);
  70.   $sql->bindParam(':nombres', $_POST['nombres']);
  71.   $sql->bindParam(':apellidos', $_POST['apellidos']);
  72.   $sql->bindParam(':fecha_nac', $_POST['fecha_nac']);
  73.   $sql->bindParam(':edad', $_POST['edad']);
  74.   $sql->bindParam(':cod', $_POST['cod']);
  75.   $sql->bindParam(':telefono', $_POST['telefono']);
  76.   $sql->bindParam(':direccion', $_POST['direccion']);
  77.   $sql->bindParam(':id_seguros', $_POST['id_seguros']);
  78.   $sql->bindParam(':id_servicios', $_POST['id_servicios']);
  79.   $sql->bindParam(':observaciones', $_POST['observaciones']);
  80.   $sql->execute();
  81.  
  82.       $successMSG ="¡ Bien Hecho: Usuario registrado correctamente !";
  83.             header("refresh:5;login.php");
  84.          }
  85.       }
  86.     }
  87.   ?>
  88.   <!-- fin proceso para registrar-->



función para calcular la edad a partir de la fecha de nacimiento


Código Javascript:
Ver original
  1. <script>
  2.   function calcAge(dateString) {
  3.     var birthday = +new Date(dateString);
  4.     return ~~((Date.now() - birthday) / (31557600000));
  5. }
  6.  
  7. function add_months(datestr, months) {
  8.     var new_d = new Date(datestr);
  9.     new_d.setMonth(new_d.getMonth() + months);
  10.     return new_d;
  11. }
  12.  
  13. $(document).ready(function(){
  14. $('select').material_select();
  15. $(".button-collapse").sideNav();
  16. $('.modal').modal();
  17. $('.datepicker').pickadate({
  18.         selectMonths: true, // Creates a dropdown to control month
  19.         selectYears: 10, // Creates a dropdown of 15 years to control year
  20.         format: 'yyyy-mm-dd', // formto de fecha  
  21.         onClose: function() {
  22.             $('#edad').val(calcAge($('#fecha_nac').val()));
  23.         }
  24.     });
  25.  
  26.  });
  27.  </script>
__________________
yoclens avilan
  #2 (permalink)  
Antiguo 04/08/2017, 07:53
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: verificar si usuario es mayor de edad

Por el lado de JS yo utuilizaria moment.js para la tarea de validar el tiempo transcurrido desde la fecha que seleccione el cliente y seria menos codigo (relativamente), por otro lado, seria bueno que valides por el lado de PHp ya que js puede ser manipulado, seria algo así:

Código PHP:
Ver original
  1. $fecha = "2017-07-11";//Suponiendo que es el post que envia el cliente
  2.  
  3. $actual = date("Y");
  4. $cliente = date("Y", strtotime($fecha));
  5.  
  6. if(($actual-$cliente) < 18 ){
  7.     echo "no Puede Registrarse";
  8. }else{
  9.     echo "Si Puede registrarse";
  10. }
__________________
[email protected]
HITCEL
  #3 (permalink)  
Antiguo 04/08/2017, 07:59
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: verificar si usuario es mayor de edad

Con moment.js lo haria de esta manera:

Código Javascript:
Ver original
  1. var fecha = "1980-07-11";
  2.  
  3.     var tiempo = moment(fecha).fromNow();
  4.  
  5.     var t = tiempo.split(" ");
  6.  
  7.  if(t[0]<18){
  8.     $("#resultado").html("No puede realizar el Registro ");
  9.  }else{
  10.     $("#resultado").html("Puede Registrarse ");    
  11.  }
__________________
[email protected]
HITCEL
  #4 (permalink)  
Antiguo 04/08/2017, 08:00
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 2 meses
Puntos: 1146
Respuesta: verificar si usuario es mayor de edad

No te funciona porque le estas diciendo lo contrario...

Código PHP:
Ver original
  1. if ($edad > 18){ // si edad es Mayor a 18 = error
  2.   $check->closeCursor();
  3.  
  4.  
  5.      $errMSG = "¡ Aviso: no se permiten registros a menores de edad !";
  6.        header("refresh:5;registrarse.php");
  7.  
  8.   }

debe ser
if ($edad < 18)
  #5 (permalink)  
Antiguo 04/08/2017, 08:20
Avatar de aviweb2015  
Fecha de Ingreso: abril-2016
Ubicación: venezuela
Mensajes: 215
Antigüedad: 8 años
Puntos: 1
Respuesta: verificar si usuario es mayor de edad

Cita:
Iniciado por xfxstudios Ver Mensaje
Por el lado de JS yo utuilizaria moment.js para la tarea de validar el tiempo transcurrido desde la fecha que seleccione el cliente y seria menos codigo (relativamente), por otro lado, seria bueno que valides por el lado de PHp ya que js puede ser manipulado, seria algo así:

Código PHP:
Ver original
  1. $fecha = "2017-07-11";//Suponiendo que es el post que envia el cliente
  2.  
  3. $actual = date("Y");
  4. $cliente = date("Y", strtotime($fecha));
  5.  
  6. if(($actual-$cliente) < 18 ){
  7.     echo "no Puede Registrarse";
  8. }else{
  9.     echo "Si Puede registrarse";
  10. }

gracias amigo lo he colocado asi pero igual me sigue el problema, asi ponga todo bien ahora me muestra la alerta de: ¡ Aviso: no se permiten registros a menores de edad !


Código PHP:
Ver original
  1. <!-- proceso para registrar-->
  2. <?php
  3. if(isset($_POST['guardar'])){
  4.  
  5.  
  6.     if($_POST['pass']!=$_POST['pass2']) {
  7.  
  8.                $errMSG = "¡ Ups Aviso: Las Contraseñas deben coincidir !";
  9.                   header("refresh:5;registrarse.php");
  10.  
  11.  
  12.  }else {
  13.  
  14.  
  15.   $sql = "SELECT cedula FROM usuarios WHERE cedula = :cedula LIMIT 1"; //Creamos la select
  16.   $check = $DB_con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
  17.   $check->bindParam(':cedula', $_POST['cedula']);//Substituimos las variables de la SELECT
  18.   $check->execute();//Ejecutamos la consulta
  19.   $contador = $check -> rowCount();//Esta función devuelve el número de resultados que ha devuelto la SELECT
  20.   if ($contador > 0) {
  21.   $check->closeCursor();
  22.    
  23.               $errMSG = "¡ Ups Aviso: Este usuario ya se encuentra registrado !";
  24.                   header("refresh:5;registrarse.php");
  25.     }
  26.  
  27.  
  28.     //avisame si el nombre de usuario existe
  29.     $sql = "SELECT id_usuarios FROM usuarios WHERE user = :user LIMIT 1"; //Creamos la select
  30.     $user_check = $DB_con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
  31.     $user_check->bindParam(':user', $_POST['user']);
  32.     $user_check->execute();
  33.     if($user_check->rowCount() > 0){
  34.     $user_check->closeCursor();
  35.  
  36.  
  37.     $errMSG = "¡ Aviso: El nombre de usuario ya se encuetra registrado !";
  38.     header("refresh:5;registrarse.php");
  39.    
  40.  
  41.     }
  42.  
  43.     else
  44.  
  45.  
  46.          {
  47.  
  48.  
  49. $fecha=$_POST['fecha'];
  50.  
  51.  
  52. $sql=$DB_con->prepare("INSERT INTO usuarios (user,pass,idnivel,cedula,nombres,apellidos,fecha_nac,edad,cod,telefono,direccion,id_seguros,id_servicios,observaciones)
  53.  VALUES (:user,:pass,:idnivel,:cedula,:nombres,:apellidos,:fecha_nac,:edad,:cod,:telefono,:direccion,:id_seguros,:id_servicios,:observaciones)");
  54. $sql->bindParam(':user', $_POST['user']);
  55. $sql->bindParam(':pass', $_POST['pass']);
  56. $sql->bindParam(':idnivel', $_POST['idnivel']);
  57. $sql->bindParam(':cedula', $_POST['cedula']);
  58. $sql->bindParam(':nombres', $_POST['nombres']);
  59. $sql->bindParam(':apellidos', $_POST['apellidos']);
  60. $sql->bindParam(':fecha_nac', $_POST['fecha_nac']);
  61. $sql->bindParam(':edad', $_POST['edad']);
  62. $sql->bindParam(':cod', $_POST['cod']);
  63. $sql->bindParam(':telefono', $_POST['telefono']);
  64. $sql->bindParam(':direccion', $_POST['direccion']);
  65. $sql->bindParam(':id_seguros', $_POST['id_seguros']);
  66. $sql->bindParam(':id_servicios', $_POST['id_servicios']);
  67. $sql->bindParam(':observaciones', $_POST['observaciones']);
  68. $sql->execute();
  69.    }
  70.  
  71. if(($fecha) < 18 ){
  72.    
  73.       $errMSG = "¡ Aviso: no se permiten registros a menores de edad !";
  74.            header("refresh:5;registrarse.php");
  75.  
  76. }else{
  77.  
  78.      $successMSG ="¡ Bien Hecho: Usuario registrado correctamente !";
  79.                 header("refresh:5;login.php");
  80.  
  81.             }
  82.  
  83.        }
  84.   }
  85. ?>
  86. <!-- fin proceso para registrar-->
__________________
yoclens avilan
  #6 (permalink)  
Antiguo 04/08/2017, 15:51
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: verificar si usuario es mayor de edad

lo estas haciendo mal, por otro lado estas validando luego de la inserción????
__________________
[email protected]
HITCEL
  #7 (permalink)  
Antiguo 04/08/2017, 15:52
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 10 meses
Puntos: 263
Respuesta: verificar si usuario es mayor de edad

prueba asi:

Código PHP:
Ver original
  1. $fecha= date("Y", strtotime($_POST['fecha']));
  2. $ahora = date("Y");
  3.  
  4.  
  5. if(($ahora - $fecha) < 18 ){
  6.    
  7.       $errMSG = "¡ Aviso: no se permiten registros a menores de edad !";
  8.            header("refresh:5;registrarse.php");
  9.  
  10. }else{
  11.  
  12.  
  13.  
  14. $sql=$DB_con->prepare("INSERT INTO usuarios (user,pass,idnivel,cedula,nombres,apellidos,fecha_nac,edad,cod,telefono,direccion,id_seguros,id_servicios,observaciones)
  15.  VALUES (:user,:pass,:idnivel,:cedula,:nombres,:apellidos,:fecha_nac,:edad,:cod,:telefono,:direccion,:id_seguros,:id_servicios,:observaciones)");
  16. $sql->bindParam(':user', $_POST['user']);
  17. $sql->bindParam(':pass', $_POST['pass']);
  18. $sql->bindParam(':idnivel', $_POST['idnivel']);
  19. $sql->bindParam(':cedula', $_POST['cedula']);
  20. $sql->bindParam(':nombres', $_POST['nombres']);
  21. $sql->bindParam(':apellidos', $_POST['apellidos']);
  22. $sql->bindParam(':fecha_nac', $_POST['fecha_nac']);
  23. $sql->bindParam(':edad', $_POST['edad']);
  24. $sql->bindParam(':cod', $_POST['cod']);
  25. $sql->bindParam(':telefono', $_POST['telefono']);
  26. $sql->bindParam(':direccion', $_POST['direccion']);
  27. $sql->bindParam(':id_seguros', $_POST['id_seguros']);
  28. $sql->bindParam(':id_servicios', $_POST['id_servicios']);
  29. $sql->bindParam(':observaciones', $_POST['observaciones']);
  30. $sql->execute();
  31.    }
  32.  
  33.  
  34.  
  35.      $successMSG ="¡ Bien Hecho: Usuario registrado correctamente !";
  36.                 header("refresh:5;login.php");
  37.  
  38.             }
  39.  
  40.        }
  41.   }
__________________
[email protected]
HITCEL
  #8 (permalink)  
Antiguo 04/08/2017, 21:01
Avatar de aviweb2015  
Fecha de Ingreso: abril-2016
Ubicación: venezuela
Mensajes: 215
Antigüedad: 8 años
Puntos: 1
Respuesta: verificar si usuario es mayor de edad

gracias a @xfxstudios pude solucionarlo anexo el código como debería quedar


Código PHP:
Ver original
  1. <!-- proceso para registrar-->
  2. <?php
  3. if(isset($_POST['guardar'])){
  4.  
  5.  
  6.  
  7.  if($_POST['pass']!=$_POST['pass2']) {
  8.  
  9.                $errMSG = "¡ Ups Aviso: Las Contraseñas deben coincidir !";
  10.                   header("refresh:5;registrarse.php");
  11.  
  12.  
  13.  }else{
  14.  
  15.  
  16.   $sql = "SELECT cedula FROM usuarios WHERE cedula = :cedula LIMIT 1"; //Creamos la select
  17.   $check = $DB_con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
  18.   $check->bindParam(':cedula', $_POST['cedula']);//Substituimos las variables de la SELECT
  19.   $check->execute();//Ejecutamos la consulta
  20.   $contador = $check -> rowCount();//Esta función devuelve el número de resultados que ha devuelto la SELECT
  21.   if ($contador > 0) {
  22.   $check->closeCursor();
  23.    
  24.               $errMSG = "¡ Ups Aviso: Este usuario ya se encuentra registrado !";
  25.                   header("refresh:5;registrarse.php");
  26.  
  27.     }else{
  28.  
  29.  
  30.   $sql = "SELECT user FROM usuarios WHERE user = :user LIMIT 1"; //Creamos la select
  31.   $check = $DB_con->prepare($sql); //Preparamos la SELECT, de ésta manera evitamos SQL Injection
  32.   $check->bindParam(':user', $_POST['user']);//Substituimos las variables de la SELECT
  33.   $check->execute();//Ejecutamos la consulta
  34.   $contador = $check -> rowCount();//Esta función devuelve el número de resultados que ha devuelto la SELECT
  35.   if ($contador > 0) {
  36.   $check->closeCursor();
  37.    
  38.               $errMSG = "¡ Aviso: El nombre de usuario ya se encuetra registrado !";
  39.                   header("refresh:5;registrarse.php");
  40.  
  41.         }else{
  42.  
  43.  
  44.  
  45.     $edad=$_POST['edad'];
  46.  
  47.  
  48.     if(($edad) < 18 ){
  49.    
  50.              $errMSG = "¡ Aviso: no se permiten registros a menores de edad !";
  51.                header("refresh:5;registrarse.php");
  52.  
  53.          
  54.          }else{
  55.  
  56.  
  57. $sql=$DB_con->prepare("INSERT INTO usuarios (user,pass,idnivel,cedula,nombres,apellidos,fecha_nac,edad,cod,telefono,direccion,id_seguros,id_servicios,observaciones)
  58.  VALUES (:user,:pass,:idnivel,:cedula,:nombres,:apellidos,:fecha_nac,:edad,:cod,:telefono,:direccion,:id_seguros,:id_servicios,:observaciones)");
  59. $sql->bindParam(':user', $_POST['user']);
  60. $sql->bindParam(':pass', $_POST['pass']);
  61. $sql->bindParam(':idnivel', $_POST['idnivel']);
  62. $sql->bindParam(':cedula', $_POST['cedula']);
  63. $sql->bindParam(':nombres', $_POST['nombres']);
  64. $sql->bindParam(':apellidos', $_POST['apellidos']);
  65. $sql->bindParam(':fecha_nac', $_POST['fecha_nac']);
  66. $sql->bindParam(':edad', $_POST['edad']);
  67. $sql->bindParam(':cod', $_POST['cod']);
  68. $sql->bindParam(':telefono', $_POST['telefono']);
  69. $sql->bindParam(':direccion', $_POST['direccion']);
  70. $sql->bindParam(':id_seguros', $_POST['id_seguros']);
  71. $sql->bindParam(':id_servicios', $_POST['id_servicios']);
  72. $sql->bindParam(':observaciones', $_POST['observaciones']);
  73. $sql->execute();
  74.  
  75.           $successMSG ="¡ Bien Hecho: Usuario registrado correctamente !";
  76.                 header("refresh:5;login.php");
  77.            
  78.                   }
  79.          
  80.               }
  81.           }
  82.       }
  83.  
  84.   }
  85. ?>
  86. <!-- fin proceso para registrar-->
__________________
yoclens avilan

Etiquetas: pdo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:09.