elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  AYUDA Registro y sistema de verificación de usuarios
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: AYUDA Registro y sistema de verificación de usuarios  (Leído 2,387 veces)
J0RG325

Desconectado Desconectado

Mensajes: 3


Ver Perfil
AYUDA Registro y sistema de verificación de usuarios
« en: 31 Marzo 2013, 07:16 am »

Hola gente del foro, tengo un sistema de registro de usuariso pero tengo 2 problemas con el sistema el primero seria para el formulario, quiero añadirle que solo admita correos @gmail.com por ejemplo pero yo pondre otro dominio, aca les dejo el codigo

registro.php

Código
  1. <?php
  2.    include('config.php'); // incluimos el archivo de conexión a la Base de Datos
  3.    if(isset($_POST['enviar'])) { // comprobamos que se han enviado los datos desde el formulario
  4.        // creamos una función que nos parmita validar el email
  5.        function valida_email($correo) {
  6.        if (preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/', $correo)) return true;
  7.        else return false;
  8.        }
  9.        // Procedemos a comprobar que los campos del formulario no estén vacíos
  10.        $sin_espacios = count_chars($_POST['usuario_matricula'], 1);
  11.        if(!empty($sin_espacios[32])) { // comprobamos que el campo usuario_nombre no tenga espacios en blanco
  12.            echo "El campo <em>usuario_matricula</em> no debe contener espacios en blanco. <a href='javascript:history.back();'>Reintentar</a>";
  13.        }elseif(empty($_POST['usuario_matricula'])) { // comprobamos que el campo usuario_nombre no esté vacío
  14.            echo "".text_register_error_username."";
  15.        }elseif(empty($_POST['usuario_clave'])) { // comprobamos que el campo usuario_clave no esté vacío
  16.            echo "".text_register_error_password."";
  17.        }elseif($_POST['usuario_clave'] != $_POST['usuario_clave_conf']) { // comprobamos que las contraseñas ingresadas coincidan
  18.            echo "".text_register_password_match."";
  19.        }elseif(empty($_POST['usuario_nombre'])) { // validamos que el email ingresado sea correcto
  20.            echo "pon tu nombre";
  21.        }elseif(!valida_email($_POST['usuario_email'])) { // validamos que el email sea correcto
  22.            echo "".text_register_email_used."";
  23.        }elseif(empty($_POST['sexo'])) { // validamos que el email ingresado sea correcto
  24.            echo "Seleccione su Sexo";
  25.        }else {
  26.            // "limpiamos" los campos del formulario de posibles códigos maliciosos
  27.            $usuario_matricula = mysql_real_escape_string($_POST['usuario_matricula']);
  28.            $usuario_clave = mysql_real_escape_string($_POST['usuario_clave']);
  29.            $usuario_nombre = mysql_real_escape_string($_POST['usuario_nombre']);
  30.            $usuario_email = mysql_real_escape_string($_POST['usuario_email']);
  31.            $sexo = mysql_real_escape_string($_POST['sexo']);
  32.            // comprobamos que el usuario ingresado no haya sido registrado antes
  33.            $sql = mysql_query("SELECT usuario_matricula FROM usuarios WHERE usuario_matricula = '$usuario_matricula'")
  34.            or die (mysql_error());
  35.            if(mysql_num_rows($sql) > 0) {
  36.                echo "esta matricula ya esta en uso";
  37.            }else {
  38.                $CodigoKEY = SHA1(rand(0,100000000));
  39.                $usuario_clave = md5($usuario_clave); // ciframos la contraseña ingresada con md5
  40.                // ingresamos los datos a la BD
  41.                $reg = mysql_query("INSERT INTO usuarios (usuario_matricula, usuario_clave, usuario_nombre, usuario_email, sexo, usuario_avatar, EstadoKEY, CodigoKEY, megusta, ips, usuario_freg) VALUES ('".$usuario_matricula."', '".$usuario_clave."', '".$usuario_nombre."', '".$usuario_email."', '".$sexo."', '1', '".$CodigoKEY."', '5', '".$_SERVER['REMOTE_ADDR']."', NOW())");
  42.                    $registros = mysql_query("SELECT usuario_email,CodigoKEY FROM usuarios WHERE usuario_nombre = '$_POST[usuario_nombre]'");
  43.    while($reg2 = mysql_fetch_array($registros)){
  44.    mail("$_POST[usuario_email]","Activa tu cuenta.","Hola $_POST[usuario_nombre], Bienvenido tu te as registrado en web matriculas aco y para activar tu cuenta necesitas meterte en esta url. http://localhost/aco/index.php?page_id=validacion&email=$reg2[usuario_email]&key=$reg2[CodigoKEY]");
  45.    }
  46.                if($reg) {
  47.                    echo "".text_register_successfully." <META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=index.php?page_id=login\">";
  48.                }else {
  49.                    echo "".text_register_error."";
  50.                }
  51.            }
  52.        }
  53.    }else {
  54. ?>
  55.    <form action="index.php?page_id=registro" method="post">
  56.        <label>nombre completo</label><br />
  57.        <input type="text" name="usuario_nombre" maxlength="60" /><br />
  58.        <label>matricula</label><br />
  59.        <input type="text" name="usuario_matricula" maxlength="5" /><br />
  60.        <label>contraseña</label><br />
  61.        <input type="password" name="usuario_clave" maxlength="15" /><br />
  62.        <label>repite contraseña</label><br />
  63.        <input type="password" name="usuario_clave_conf" maxlength="15" /><br />
  64.        <label>correo electronico</label><br />
  65.        <input type="text" name="usuario_email" maxlength="50" /><br />
  66.        <label>Sexo</label><br />
  67.         <select name="sexo" id="sexo">
  68.        <option value="0">Seleccione su Sexo</option>
  69.        <option value="1">Hombre</option>
  70.        <option value="2">Mujer</option>
  71.        <option value="3">Indefinido</option>
  72.      </select><br />
  73.        <input type="submit" name="enviar" value="<?php echo text_button_account_create; ?>" />
  74.        <input type="reset" value="<?php echo text_button_register_cleaner; ?>" />
  75.    </form>
  76. <?php
  77.    }
  78. ?>
  79.  


El otro problema es con el archivo de validacion, como veran el registro es mediante una activación y al registrarte te envia un link para que la actives, el registro hace su funcion pero el que lo valida no, ya que cuando me dirijo a el link que me manda me sale el siguiente mensaje: Tu cuenta ha sido activada Inicia Sesion. Pero enrealidad no hace el cambio ya que sigue quedando desactivada la cuenta

para poner un poco más claro esta es la DB

Código
  1. CREATE TABLE `usuarios` (
  2.  `usuario_id` int(4) NOT NULL AUTO_INCREMENT,
  3.  `usuario_matricula` varchar(5) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  4.  `usuario_clave` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  5.  `usuario_nombre` varchar(60) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  6.  `usuario_email` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  7.  `sexo` tinyint(6) NOT NULL DEFAULT '0',
  8.  `usuario_avatar` varchar(250) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  9.  `EstadoKEY` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
  10.  `CodigoKEY` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
  11.  `megusta` int(11) NOT NULL DEFAULT '0',
  12.  `ips` text COLLATE utf8_unicode_ci NOT NULL,
  13.  `usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  14.  PRIMARY KEY (`usuario_id`)
  15. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=13 ;
  16.  

Donde 0 es Activado y 1 es Desactivado

validacion.php

Código
  1. <?php
  2.    session_start();
  3.    include('config.php');
  4.  
  5. $verificacion = mysql_query("SELECT * FROM usuarios WHERE usuario_matricula = '$_GET[usuario_matricula]' AND CodigoKey = '$_GET[key]'");
  6. if ($veri = mysql_fetch_array($verificacion))
  7.    mysql_query("UPDATE usuarios SET EstadoKEY = '0' WHERE usuario_matricula = '$_GET[usuario_matricula]'");
  8.    echo "Tu cuenta ha sido activada Inicia Sesion.";
  9.    echo "<meta http-equiv='refresh' content='2; url=index.php'>";
  10.  
  11.  
  12. ?>
  13.  

tambien estuve buscando y encontre otro archivo para validación lo adapte pero sale un error y tampoco activa la cuenta

confirm.php

Código
  1. <?php
  2. require_once('config.php');
  3. include('functions.php');
  4.  
  5.    if($_GET['usuario_email']!='' && numeric($_GET['usuario_email'])==TRUE && strlen($_GET['key'])==32 && alpha_numeric($_GET['key'])==TRUE)
  6.    {
  7.  
  8.        $query = mysql_query("SELECT usuario_email, CodigoKEY, EstadoKEY FROM usuarios WHERE usuario_email = '".mysql_real_escape_string($_GET['usuario_email'])."'");
  9.  
  10.        if(mysql_num_rows($query)==0)
  11.        {
  12.            $row = mysql_fetch_assoc($query);
  13.            if($row['EstadoKEY']==0)
  14.            {
  15.                echo "&error=".$error = 'This member is already active !';
  16.            }
  17.            elseif($row['CodigoKEY']!=$_GET['key'])
  18.            {
  19.                echo "&error=".$error = 'The confirmation key that was generated for this member does not match with the one entered !';
  20.            }
  21.            else
  22.            {
  23.                $update = mysql_query("UPDATE usuarios SET EstadoKEY=0 WHERE usuario_email='".mysql_real_escape_string($row['usuario_email'])."'") or die(mysql_error());
  24.                $msg = 'Congratulations !  You just confirmed your membership !';
  25.            }
  26.        }
  27.        else {
  28.  
  29.            echo "&error=".$error = 'User not found !';
  30.  
  31.        }
  32.  
  33.    }
  34.    else {
  35.  
  36.        $error = 'Invalid data provided !';
  37.  
  38.    }
  39.  
  40.    if(isset($error))
  41.    {
  42.        echo "&error=".$error;
  43.    }
  44.    else {
  45.        echo "&msg=".$msg;
  46.    }
  47. ?>
  48.  


« Última modificación: 31 Marzo 2013, 10:52 am por J0RG325 » En línea

Wofo

Desconectado Desconectado

Mensajes: 168


Ver Perfil
Re: AYUDA Registro y sistema de verificación de usuarios
« Respuesta #1 en: 1 Abril 2013, 20:31 pm »

No me dio la paciencia para buscar el error, pero sí me dí cuenta de que las funciones que estás usando son obsoletas (mysql_query y por el estilo) y es poco recomendable usarlas. Busca sobre mysqli, que es la nueva librería que deberías usar.

Saludos,
Wofo.


« Última modificación: 1 Abril 2013, 20:35 pm por Wofo » En línea

Phantasy

Desconectado Desconectado

Mensajes: 51


Como siempre, pierde el que mas recibe.


Ver Perfil
Re: AYUDA Registro y sistema de verificación de usuarios
« Respuesta #2 en: 11 Abril 2013, 16:55 pm »

Puedes coger y crear dos inputs. Uno en el que se escriba el nombre:

Ej:    ANONIMO

Y otro en el que este DISABLED pero con un value:

Ej: @GMAIL.COM

Luego juntas las dos variables y listo.

anonimo@gmail.com

-----------------------

Tambien puedes coger y poner dos inputs. Uno en el que pones el nombre y otro el correo y puedes comparar el input del correo con "@GMAIL.COM" u otro dominio.


Un saludo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Agregar sistema de verificación humana « 1 2 »
Programación Visual Basic
Mad Antrax 10 14,038 Último mensaje 12 Mayo 2013, 17:59 pm
por yams
Sistema de verificación humana.
PHP
& eDu & 8 4,021 Último mensaje 14 Noviembre 2008, 17:18 pm
por ActiveSheet
Sistema de verificacion de pasaporte como el SIRI de la procuraduria
Foro Libre
Graphixx 1 4,860 Último mensaje 7 Junio 2011, 18:56 pm
por Mardorx
Google+ contará con un sistema de verificación para atraer a los famosos
Noticias
wolfbcn 3 2,383 Último mensaje 20 Julio 2011, 22:06 pm
por ShotgunLogic
Sistema de registro de usuarios con rangos.
PHP
GonzaFz 2 3,891 Último mensaje 2 Febrero 2013, 06:39 am
por GonzaFz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines