Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Registro y sistema de verificación error

Estas en el tema de Registro y sistema de verificación error en el foro de PHP en Foros del Web. Hola nuevamente amigos, tengo un sistema de registro de usuaris pero tengo 2 problemas con el sistema. El primero seria para el formulario que quiero ...
  #1 (permalink)  
Antiguo 31/03/2013, 20:51
 
Fecha de Ingreso: febrero-2012
Mensajes: 34
Antigüedad: 14 años, 8 meses
Puntos: 0
Registro y sistema de verificación error

Hola nuevamente amigos, tengo un sistema de registro de usuaris pero tengo 2 problemas con el sistema. El primero seria para el formulario que quiero añadirle que solo admita por ejemplo solo correos @gmail.com pero yo pondré otro dominio, acá les dejo el código

Código PHP:
<?php
    
include('config.php'); // incluimos el archivo de conexión a la Base de Datos
    
if(isset($_POST['enviar'])) { // comprobamos que se han enviado los datos desde el formulario
        // creamos una función que nos parmita validar el email
        
function valida_email($correo) {
        if (
preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/', $correo)) return true;
        else return 
false;
        } 
        
// Procedemos a comprobar que los campos del formulario no estén vacíos
        
$sin_espacios = count_chars($_POST['usuario_matricula'], 1);
        if(!empty(
$sin_espacios[32])) { // comprobamos que el campo usuario_nombre no tenga espacios en blanco
            
echo "El campo <em>usuario_matricula</em> no debe contener espacios en blanco. <a href='javascript:history.back();'>Reintentar</a>";
        }elseif(empty(
$_POST['usuario_matricula'])) { // comprobamos que el campo usuario_nombre no esté vacío
            
echo "".text_register_error_username."";
        }elseif(empty(
$_POST['usuario_clave'])) { // comprobamos que el campo usuario_clave no esté vacío
            
echo "".text_register_error_password."";
        }elseif(
$_POST['usuario_clave'] != $_POST['usuario_clave_conf']) { // comprobamos que las contraseñas ingresadas coincidan
            
echo "".text_register_password_match."";
        }elseif(empty(
$_POST['usuario_nombre'])) { // validamos que el email ingresado sea correcto
            
echo "pon tu nombre";
        }elseif(!
valida_email($_POST['usuario_email'])) { // validamos que el email sea correcto
            
echo "".text_register_email_used."";
        }elseif(empty(
$_POST['sexo'])) { // validamos que el email ingresado sea correcto
            
echo "Seleccione su Sexo";
        }else { 
            
// "limpiamos" los campos del formulario de posibles códigos maliciosos
            
$usuario_matricula = mysql_real_escape_string($_POST['usuario_matricula']);
            
$usuario_clave = mysql_real_escape_string($_POST['usuario_clave']);
            
$usuario_nombre = mysql_real_escape_string($_POST['usuario_nombre']);
            
$usuario_email = mysql_real_escape_string($_POST['usuario_email']);
            
$sexo = mysql_real_escape_string($_POST['sexo']);
            
// comprobamos que el usuario ingresado no haya sido registrado antes
            
$sql = mysql_query("SELECT usuario_matricula FROM usuarios WHERE usuario_matricula = '$usuario_matricula'") 
            or die (
mysql_error());
            if(
mysql_num_rows($sql) > 0) {
                echo 
"esta matricula ya esta en uso";
            }else {
                
$CodigoKEY = SHA1(rand(0,100000000));
                
$usuario_clave = md5($usuario_clave); // encriptamos la contraseña ingresada con md5
                // ingresamos los datos a la BD
                
$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())");
                    
$registros = mysql_query("SELECT usuario_email,CodigoKEY FROM usuarios WHERE usuario_nombre = '$_POST[usuario_nombre]'");
    while(
$reg2 = mysql_fetch_array($registros)){
    
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]");
    }
                if(
$reg) {
                    echo 
"".text_register_successfully." <META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=index.php?page_id=login\">";
                }else {
                    echo 
"".text_register_error."";
                }
            }
        }
    }else {
?>
    <form action="index.php?page_id=registro" method="post">
        <label>nombre completo</label><br />
        <input type="text" name="usuario_nombre" maxlength="60" /><br />
        <label>matricula</label><br />
        <input type="text" name="usuario_matricula" maxlength="5" /><br />
        <label>contraseña</label><br />
        <input type="password" name="usuario_clave" maxlength="15" /><br />
        <label>repite contraseña</label><br />
        <input type="password" name="usuario_clave_conf" maxlength="15" /><br />
        <label>correo electronico</label><br />
        <input type="text" name="usuario_email" maxlength="50" /><br />
        <label>Sexo</label><br />
         <select name="sexo" id="sexo">
        <option value="0">Seleccione su Sexo</option>
        <option value="1">Hombre</option>
        <option value="2">Mujer</option>
        <option value="3">Indefinido</option>
      </select><br />
        <input type="submit" name="enviar" value="<?php echo text_button_account_create; ?>" />
        <input type="reset" value="<?php echo text_button_register_cleaner; ?>" />
    </form>
<?php
    
}
?>
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 PHP:
CREATE TABLE `usuarios` (
  `
usuario_id` int(4) NOT NULL AUTO_INCREMENT,
  `
usuario_matricula` varchar(5) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `
usuario_clave` varchar(32) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `
usuario_nombre` varchar(60) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `
usuario_email` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `
sexo` tinyint(6) NOT NULL DEFAULT '0',
  `
usuario_avatar` varchar(250) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `
EstadoKEY` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
  `
CodigoKEY` varchar(40) COLLATE utf8_unicode_ci NOT NULL,
  `
megusta` int(11) NOT NULL DEFAULT '0',
  `
ips` text COLLATE utf8_unicode_ci NOT NULL,
  `
usuario_freg` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  
PRIMARY KEY (`usuario_id`)
) 
ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=13 ; 
Donde 0 es Activado y 1 es Desactivado

validacion.php

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


?>
el sistema de validación lo saque de este aporte y lo agregue a mi sistema:
http://www.forosdelweb.com/f18/aporte-sistema-verificacion-correo-1008306/


También estuve buscando y encontré otro archivo para validación lo adapte pero sale un error y tampoco activa la cuenta

confirm.php

Código PHP:
<?php
require_once('config.php');
include(
'functions.php');

    if(
$_GET['usuario_email']!='' && numeric($_GET['usuario_email'])==TRUE && strlen($_GET['key'])==32 && alpha_numeric($_GET['key'])==TRUE)
    {

        
$query = mysql_query("SELECT usuario_email, CodigoKEY, EstadoKEY FROM usuarios WHERE usuario_email = '".mysql_real_escape_string($_GET['usuario_email'])."'");

        if(
mysql_num_rows($query)==0)
        {
            
$row = mysql_fetch_assoc($query);
            if(
$row['EstadoKEY']==0)
            {
                echo 
"&error=".$error = 'This member is already active !';
            }
            elseif(
$row['CodigoKEY']!=$_GET['key'])
            {
                echo 
"&error=".$error = 'The confirmation key that was generated for this member does not match with the one entered !';
            }
            else
            {
                
$update = mysql_query("UPDATE usuarios SET EstadoKEY=0 WHERE usuario_email='".mysql_real_escape_string($row['usuario_email'])."'") or die(mysql_error());
                
$msg = 'Congratulations !  You just confirmed your membership !';
            }
        }
        else {

            echo 
"&error=".$error = 'User not found !';

        }

    }
    else {

        
$error = 'Invalid data provided !';

    }

    if(isset(
$error))
    {
        echo 
"&error=".$error;
    }
    else {
        echo 
"&msg=".$msg;
    }
?>
por favor espero me puedan ayudar con estos dos problemas que tengo y no he podido resolver.

de ante mano gracias. Saludos!
  #2 (permalink)  
Antiguo 31/03/2013, 21:06
 
Fecha de Ingreso: marzo-2013
Ubicación: Venezuela
Mensajes: 2
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Registro y sistema de verificación error

Creo que con:

Código PHP:
Ver original
  1. preg_match('/^[A-Za-z0-9-_.+%]+(@gmail.com)/', $correo)

En vez de:

Código PHP:
Ver original
  1. preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/', $correo)

Sólo aceptaría correos @gmail.com (cambia @gmail.com por el dominio que quieras).
  #3 (permalink)  
Antiguo 31/03/2013, 22:46
 
Fecha de Ingreso: febrero-2012
Mensajes: 34
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Registro y sistema de verificación error

Cita:
Iniciado por aszoN Ver Mensaje
Creo que con:

Código PHP:
Ver original
  1. preg_match('/^[A-Za-z0-9-_.+%]+(@gmail.com)/', $correo)

En vez de:

Código PHP:
Ver original
  1. preg_match('/^[A-Za-z0-9-_.+%]+@[A-Za-z0-9-.]+\.[A-Za-z]{2,4}$/', $correo)

Sólo aceptaría correos @gmail.com (cambia @gmail.com por el dominio que quieras).
gracias me funciono, con respecto al otro problema alguien tiene alguna idea
  #4 (permalink)  
Antiguo 01/04/2013, 11:30
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 18 años, 6 meses
Puntos: 47
Respuesta: Registro y sistema de verificación error

imagino que si yo me registro me llega un link para que le de click y este me lleva a una pagina donde me dice gracias o algo por el estilo...

Pregunto, ¿Esta haciendo el update al campo de EstadoKEY una vez yo he dado click al link que me llega por correo? imagino que en ese campo defines si ya di click o no al link que me enviaste... porque si no haces el update respectivo no me va cambiar el estado
  #5 (permalink)  
Antiguo 01/04/2013, 11:34
 
Fecha de Ingreso: abril-2008
Ubicación: El Salvador
Mensajes: 736
Antigüedad: 18 años, 6 meses
Puntos: 47
Respuesta: Registro y sistema de verificación error

Mira en el update que haces
Código PHP:
Ver original
  1. "UPDATE usuarios SET EstadoKEY = '0' WHERE usuario_matricula = '$_GET[usuario_matricula]'"

No deberias cambiar el campo del where "usuario_matricula " por "CodigoKEY" ya que asi se llama en tu tabla??
  #6 (permalink)  
Antiguo 01/04/2013, 18:37
 
Fecha de Ingreso: febrero-2012
Mensajes: 34
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Registro y sistema de verificación error

no me funciona y de hecho subí el código de validación mal ahora lo dejo como debe estar según yo

Código PHP:
<?php
    
include('config.php');

$verificacion = mysql_query("SELECT * FROM usuarios WHERE usuario_email = '$_GET[usuario_email]' AND CodigoKEY = '$_GET[key]'");
if (
$veri = mysql_fetch_array($verificacion))
    
mysql_query("UPDATE usuarios SET EstadoKEY = '0' WHERE usuario_email = '$_GET[usuario_email]'");
    echo 
"Tu cuenta ha sido activada Inicia Sesion.";
    echo 
"<meta http-equiv='refresh' content='5; url=index.php'>";

?>
como mencione anteriormente el sistema de validación lo saque de este post: http://www.forosdelweb.com/f18/aporte-sistema-verificacion-correo-1008306/

la diferencia de este sistema es que el usa el email como login y yo lo uso como un campo más y en el login uso "usuario_matricula". Sin embargo sigue sin funcionarme alguna idea?
  #7 (permalink)  
Antiguo 01/04/2013, 20:54
 
Fecha de Ingreso: febrero-2012
Mensajes: 34
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Registro y sistema de verificación error

ya lo solucione al fin una tonteria de mi parte al no leer bien.

En el registro te manda este link

Código PHP:
http://localhost/aco/index.php?page_id=validacion&email=$reg2[usuario_email]&key=$reg2[CodigoKEY] 
index.php?page_id=validacion& email =$reg2[usuario_email]&key=$reg2[CodigoKEY]

lo que esta en negrita es el get que manda en el de validación ya que yo lo tenia así

Código PHP:
"SELECT * FROM usuarios WHERE usuario_email = '$_GET[usuario_email ]' AND CodigoKEY = '$_GET[key]'" 
y para solucionarlo solo cambiarlo por esto

Código PHP:
"SELECT * FROM usuarios WHERE usuario_email = '$_GET[email]' AND CodigoKEY = '$_GET[key]'" 
tambien cambiar esto:

Código PHP:
"UPDATE usuarios SET EstadoKEY = '0' WHERE usuario_email = '$_GET[usuario_email ]'" 
por esto

Código PHP:
"UPDATE usuarios SET EstadoKEY = '0' WHERE usuario_email = '$_GET[email]'" 
como mencione fue una tontería de mi parte por no haber leido bien y al fin ya pude solucionarlo, les agradezco por su interes y su paciencia ya que estoy aprendiendoSi no es mucha molestia les pide que se den una vuelta por mi otro post y ojala me puedan ayudar con ese problema que tengo: http://www.forosdelweb.com/f18/script-gusta-adaptado-1044256/

Saludos

Etiquetas: formulario, mysql, registro, select, sistema, sql, usuarios
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 02:30.