Foros del Web » Programando para Internet » PHP »

[APORTE] Registro de usuario PHP y ajax

Estas en el tema de [APORTE] Registro de usuario PHP y ajax en el foro de PHP en Foros del Web. Bueno señores este formulario fue gracias a la colaboracion de personas q dia a dia entran a este foro, ya q aclarando mis dudas pude ...
  #1 (permalink)  
Antiguo 18/06/2008, 13:05
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
[APORTE] Registro de usuario PHP y ajax

Bueno señores este formulario fue gracias a la colaboracion de personas q dia a dia entran a este foro, ya q aclarando mis dudas pude culminarlo.
Aun pueden pulirlo un poco mas!!

base de datos
CREATE TABLE `clientes` (
`id` int(11) NOT NULL auto_increment,
`usuario` text NOT NULL,
`pass` text NOT NULL,
`nombre` text NOT NULL,
`apellido` text NOT NULL,
`mail` text NOT NULL,
`cedula` text NOT NULL,
`telefono` text NOT NULL,
`fecha` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=10 ;

primero hacemos la conexion a la base de datos
conect.php
Código PHP:
<?php

$host
="localhost";

$QQ="usuario";

$p="pass";

$db=mysql_connect($host,$QQ,$p)

or die (
"No pude conectarme a la base de datos");

mysql_select_db("nombre_de_la_base_de_datos")

or die (
"No puedo acceder a la base de datos del sistema");

?>
luego vamos al form
Código PHP:
<div id="log">
        <
div id="log_res">
        <!-- 
SPANNER -->
        </
div>
    </
div><div id="container">
                                        <
form method="post" id="form" action="register.php">
                                          <
table align="center" cellpadding="2" cellspacing="0">
                                            <
tr>
                                              <
td width="120" style="width:120px"><div align="right" class="textoResto">Nombre: </div></td>
                <
td width="172"><div align="left" class="string">
                  <
input name="nombre" type="text" class="input" id="nombre" value="" size="32" />
                  </
div>              </td>
              </
tr>
                                            <
tr>
                                              <
td class="textoResto" style="width:120px"><div align="right">Apellido: </div></td>
                <
td><div align="left">
                  <
input name="apellido" class="input" type="text" id="apellido" value="" size="32" />
                  </
div></td>
              </
tr>
                                            <
tr>
                                              <
td class="textoResto" style="width:120px"><div align="right">Usuario: </div></td>
                <
td><div align="left">
                  <
input name="usuario" type="text" class="input" id="usuario" value="" size="32" />
                  </
div>              </td>
              </
tr>
                                            <
tr>
                                              <
td class="textoResto" style="width:120px"><div align="right">Contraseña: </div></td>
                <
td><div align="left">
                  <
input name="pass" type="password" class="input" id="pass" value="" size="32" />
                  </
div></td>
              </
tr>
                                            <
tr>
                                              
                                              <
td class="textoResto" style="width:120px"><div align="right">Repetir Contraseña: </div></td>
                <
td><div align="left">
                  <
input name="re_pass" type="password" class="input" id="re_pass" value="" size="32" />
                  </
div></td>
              </
tr>
                                            <
tr>
                                              
                                              <
td class="textoResto" style="width:120px"><div align="right">E-Mail: </div></td>
                <
td><div align="left">
                  <
input name="mail" type="text" class="input" id="mail" value="" size="32" />
                  </
div></td>
              </
tr>
                                            <
tr>
                                              <
td style="width:120px"><div align="right" class="textoResto">C.I. / RIF.:</div></td>
                <
td><input name="cedula" type="text" class="input" id="cedula" value="" size="32" /></td>
              </
tr>
                                            <
tr>
                                              <
td style="width:120px"><div align="right" class="textoResto">Teléfono: </div></td>
                <
td><input name="telefono" type="text" class="input" id="telefono" value="" size="32" /></td>
              </
tr>
                                            <
tr>
                                              <
td style="width:120px"><div align="right" class="textoResto">Fecha: </div></td>
                <
td><div align="left">
                  <
input name="fecha" type="text" class="input" id="fecha" value="" size="25" />
                </
div></td>
              </
tr>
                                            <
tr>
                                              <
td colspan="2"><div align="right">
                                                <
input type="image" name="register" class="submit-btn" src="btn.gif" alt="submit" title="submit" />
                                                </
div></td>
              </
tr>
                                            </
table>
          </
form
en la misma página debemos incluir los javascript y un estilo css
Código PHP:
<script type="text/javascript" src="js/mootools.js"></script>
    <script type="text/javascript">
        window.addEvent('domready', function(){
                    $('registerForm').addEvent('submit', function(e) {
                        new Event(e).stop();
                        var log = $('log_res').empty().addClass('ajax-loading');
                        this.send({
                            update: log,
                            onComplete: function() {
                                log.removeClass('ajax-loading');
                            }
                        });
                    });
                });
    </script>
    <style type="text/css">

        body {
            font:0.7em Arial, helvetica, sens-serif;
            color:#567475;
        }
        .input {
            border: 1px solid #99b3b4;
            width: 170px;
            background: #e4ebeb;
            font: 11px verdana, sans-serif;
            color:#443;
            padding:3px;
            margin-bottom:4px;
            outline:none;
        }
        .input:focus {
            border:0px solid #567475;
            background: #e4ebeb;
        }
        .submit-btn {
            width: 54px;
            height: 20px;
            background: #743 url(submit.gif) no-repeat;
            outline: none;
        }
        .submit-btn:hover {
            background: #069 url(submit.gif) no-repeat 0 -20px;
        }
        div#container {
            border:0px solid #99b3b4;
            padding:15px;
            margin:auto;
            width:245px;
        }
        #log_res {
            height:auto;
            padding:10px;
            margin:10px auto 10px auto;
            width:270px;
        }
        #log_res p {
            margin:0;
            padding:4px 0 4px 0;
        }
        #log_res.ajax-loading
            {background: url(spinner.gif) no-repeat center;
        }
        .error {
            color:red;
            margin:0;
            padding:0;
        }

    </style> 
lugo leemos el archivo de verificacion de datos y la consulta a la db
register.php
Código PHP:
<?php
    
include('funciones.php');//las validaciones de los campos

    
if ($_POST['nombre']=='' || strlen($_POST['nombre'])<3)
    {
        
$errors[] = 'Nomnbre debe poseer al menos 3 letras.';
    }

    if (
$_POST['apellido']=='' || strlen($_POST['apellido'])<3)
    {
        
$errors[] = 'Apellido debe poseer al menos 3 letras.';
    }

    if (
$_POST['usuario']=='' || alpha_numeric($_POST['usuario'])==FALSE)
    {
        
$errors[] = 'Usuario debe contener valores alfa-numéricos';
    }

    if (
$_POST['pass']=='' || alpha_numeric($_POST['pass'])==FALSE)
    {
        
$errors[] = 'A password is required and must be alpha-numeric';
    }

    if (
$_POST['pass']!=$_POST['re_pass'])
    {
        
$errors[] = 'The two passwords must match';
    }

    if (
valid_email($_POST['mail'])==FALSE)
    {
        
$errors[] = 'Por favor, use una direccioón válida de E-Mail';
    }
    if (
$_POST['cedula']=='' || strlen($_POST['cedula'])<6)
    {
        
$errors[] = 'Cédula debe contener al menos 6 caracteres';
    }
    if (
$_POST['telefono']=='' || strlen($_POST['telefono'])<6)
    {
        
$errors[] = 'Telefono debe contener al menos 6 caracteres';
    }
    if (
$_POST['fecha']=='' || strlen($_POST['fecha'])<8)
    {
        
$errors[] = 'Fecha debe contener al menos 8 caracteres';
    }

    if(
is_array($errors))
    {
        echo 
'<p class="error"><b>Han ocurrido los siguientes errores</b></p>';
        while (list(
$key,$value) = each($errors))
        {

            echo 
'<span class="error">'.$value.'</span><br />';
        }
    }
    else {
    
//aqui colocas tu consulta o si lo vas a enciar via mail
         
include ('conect.php');

$nombre $_POST['nombre'];
$apellido $_POST['apellido'];
$pass $_POST['pass'];
$usuario $_POST['usuario'];
$mail $_POST['mail'];
$cedula $_POST['cedula'];
$telefono $_POST['telefono'];
$fecha $_POST['fecha'];


        
$query="INSERT INTO clientes SET

        nombre = '$nombre',

        apellido = '$apellido',

        usuario = '$usuario',
        
        pass = '$pass',
        
        mail = '$mail',
        
        cedula = '$cedula',
        
        telefono = '$telefono',
        
        fecha = '$fecha'"
;    

         
mysql_query($query) or die( "[ERROR] Query: $query, error: " mysql_error() );  



                
        echo 
'<p><b>Felicitaciones!</b></p>';
        echo 
'<span>Tu registro ha sido procesado con éxito. Ahora puedes ingresar usando tu usuario y contraseña. gracias por registrarte !</span>';
    }
?>
y por ultimo el archivo que define las funcion de verificacion
funciones.php
Código PHP:
<?php

    
function alpha_numeric($str)
    {
        return ( ! 
preg_match("/^([-a-z0-9])+$/i"$str)) ? FALSE TRUE;
    }

    function 
valid_email($str)
    {
        return ( ! 
preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix"$str)) ? FALSE TRUE;
    }

?>
solo les faltaria el moontools.js q pueden descargarselo d aqui
http://mad4milk.net

Gracias a quienes me ayudaron y a quienes se tomaron la molestia d leer.
Y gracias en general a los q hoy en dia hacen d este foro algo util "los usuarios"


Habran muchas personas q podran mejorarlo!!

Espero les sea util a muchos.

Saludos
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #2 (permalink)  
Antiguo 18/06/2008, 14:06
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: [APORTE] Registro de usuario PHP y ajax

anexo...
le aplique una verificacion de user en la base de datos

register.php
Código PHP:
<?php
    
include('funciones.php');//las validaciones de los campos

    
if ($_POST['nombre']=='' || strlen($_POST['nombre'])<3)
    {
        
$errors[] = 'Nomnbre debe poseer al menos 3 letras.';
    }

    if (
$_POST['apellido']=='' || strlen($_POST['apellido'])<3)
    {
        
$errors[] = 'Apellido debe poseer al menos 3 letras.';
    }

    if (
$_POST['usuario']=='' || alpha_numeric($_POST['usuario'])==FALSE)
    {
        
$errors[] = 'Usuario debe contener valores alfa-numéricos';
    }

    if (
$_POST['pass']=='' || alpha_numeric($_POST['pass'])==FALSE)
    {
        
$errors[] = 'A password is required and must be alpha-numeric';
    }

    if (
$_POST['pass']!=$_POST['re_pass'])
    {
        
$errors[] = 'The two passwords must match';
    }

    if (
valid_email($_POST['mail'])==FALSE)
    {
        
$errors[] = 'Por favor, use una direccioón válida de E-Mail';
    }
    if (
$_POST['cedula']=='' || strlen($_POST['cedula'])<6)
    {
        
$errors[] = 'Cédula debe contener al menos 6 caracteres';
    }
    if (
$_POST['telefono']=='' || strlen($_POST['telefono'])<6)
    {
        
$errors[] = 'Telefono debe contener al menos 6 caracteres';
    }
    if (
$_POST['fecha']=='' || strlen($_POST['fecha'])<8)
    {
        
$errors[] = 'Fecha debe contener al menos 8 caracteres';
    }

    if(
is_array($errors))
    {
        echo 
'<p class="error"><b>Han ocurrido los siguientes errores</b></p>';
        while (list(
$key,$value) = each($errors))
        {

            echo 
'<span class="error">'.$value.'</span><br />';
        }
    }
    
    
$conexion mysql_connect("localhost""root"""); 
mysql_select_db("pintor"$conexion); 
         
$sqlex2 mysql_query("SELECT usuario FROM clientes WHERE usuario='".$_POST['usuario']."'"$conexion);   
$num_rows mysql_num_rows($sqlex2);  
$usuari "";
if(
mysql_num_rows($sqlex2)>0)  

echo 
'Este usuario se encuentra registrado en el sistema'; } 
    else {
    
//aqui colocas tu consulta o si lo vas a enciar via mail
         
include ('conect.php');

 
$nombre $_POST['nombre'];
$apellido $_POST['apellido'];
$pass $_POST['pass'];
$usuario $_POST['usuario'];
$mail $_POST['mail'];
$cedula $_POST['cedula'];
$telefono $_POST['telefono'];
$fecha $_POST['fecha'];


        
$query="INSERT INTO clientes SET

        nombre = '$nombre',

        apellido = '$apellido',

        usuario = '$usuario',
        
        pass = '$pass',
        
        mail = '$mail',
        
        cedula = '$cedula',
        
        telefono = '$telefono',
        
        fecha = '$fecha'"
;    

         
mysql_query($query) or die( "[ERROR] Query: $query, error: " mysql_error() );  



    
                
        echo 
'<p><b>Felicitaciones!</b></p>';
        echo 
'<span>Tu registro ha sido procesado con éxito. Ahora puedes ingresar usando tu usuario y contraseña. gracias por registrarte !</span>';
        echo 
$usuari;
    }
?>
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #3 (permalink)  
Antiguo 18/06/2008, 15:53
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: [APORTE] Registro de usuario PHP y ajax

Hola T4ke0veR

Gracias por el aporte, seguro que a alguien le salva de romperse la cabeza para registrar usuarios.

Pero una cosa, tambien podrias verificar que el correo no exista en la BBDD para evitar tener usuarios con dos emails repetidos en la BBDD y dos cuentas.

Un saludo
  #4 (permalink)  
Antiguo 19/06/2008, 06:55
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: [APORTE] Registro de usuario PHP y ajax

gracias jaronu lo hare de inmediato y lo publicare!!!
y bueno pues hice una modificacion en el código pues la comprobacion de si existia unuario me estaba saltando las demas verificaciones

Código PHP:
<?php 
    
include('funciones.php');//las validaciones de los campos 
    
        
$conexion mysql_connect("localhost""root""");  
        
mysql_select_db("pintor"$conexion);  
          
        
$sqlex2 mysql_query("SELECT usuario FROM clientes WHERE usuario='".$_POST['usuario']."'"$conexion);    
        
$num_rows mysql_num_rows($sqlex2);   


    if (
$_POST['nombre']=='' || strlen($_POST['nombre'])<3
    { 
        
$errors[] = 'Nomnbre debe poseer al menos 3 letras.'
    } 

    if (
$_POST['apellido']=='' || strlen($_POST['apellido'])<3
    { 
        
$errors[] = 'Apellido debe poseer al menos 3 letras.'
    } 

    if (
$_POST['usuario']=='' || alpha_numeric($_POST['usuario'])==FALSE
    { 
        
$errors[] = 'Usuario debe contener valores alfa-numéricos'
    } 

    if (
$_POST['pass']=='' || alpha_numeric($_POST['pass'])==FALSE
    { 
        
$errors[] = 'A password is required and must be alpha-numeric'
    } 

    if (
$_POST['pass']!=$_POST['re_pass']) 
    { 
        
$errors[] = 'The two passwords must match'
    } 

    if (
valid_email($_POST['mail'])==FALSE
    { 
        
$errors[] = 'Por favor, use una direccioón válida de E-Mail'
    } 
    if (
$_POST['cedula']=='' || strlen($_POST['cedula'])<6
    { 
        
$errors[] = 'Cédula debe contener al menos 6 caracteres'
    } 
    if (
$_POST['telefono']=='' || strlen($_POST['telefono'])<6
    { 
        
$errors[] = 'Telefono debe contener al menos 6 caracteres'
    } 
    if (
$_POST['fecha']=='' || strlen($_POST['fecha'])<8
    { 
        
$errors[] = 'Fecha debe contener al menos 8 caracteres'
    } 
    if(
mysql_num_rows($sqlex2)>0) {
        
$errors[] = 'usuario ya registrado';}
         
    if(
is_array($errors)) 
    { 
        echo 
'<p class="error"><b>Han ocurrido los siguientes errores</b></p>'
        while (list(
$key,$value) = each($errors)) 
        { 

            echo 
'<span class="error">'.$value.'</span><br />'
        } 
    } 
     

  
//{  
//echo 'Este usuario se encuentra registrado en el sistema'; }  
    
else { 
    
//aqui colocas tu consulta o si lo vas a enciar via mail 
         
include ('conect.php'); 

  
$nombre $_POST['nombre']; 
$apellido $_POST['apellido']; 
$pass $_POST['pass']; 
$usuario $_POST['usuario']; 
$mail $_POST['mail']; 
$cedula $_POST['cedula']; 
$telefono $_POST['telefono']; 
$fecha $_POST['fecha']; 


        
$query="INSERT INTO clientes SET 

        nombre = '$nombre', 

        apellido = '$apellido', 

        usuario = '$usuario', 
         
        pass = '$pass', 
         
        mail = '$mail', 
         
        cedula = '$cedula', 
         
        telefono = '$telefono', 
         
        fecha = '$fecha'"
;     

         
mysql_query($query) or die( "[ERROR] Query: $query, error: " mysql_error() );   
       
        echo 
'<p><b>Felicitaciones!</b></p>'
        echo 
'<span>Tu registro ha sido procesado con éxito. Ahora puedes ingresar usando tu usuario y contraseña. gracias por registrarte !</span>'
        
}
?>
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...

Última edición por T4ke0veR; 19/06/2008 a las 07:05
  #5 (permalink)  
Antiguo 20/05/2013, 17:38
 
Fecha de Ingreso: diciembre-2008
Mensajes: 33
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: [APORTE] Registro de usuario PHP y ajax

Una pregunta mi gente, como podría hacer para agregar la contraseña encriptada en md5...?

Muchas gracias y muy buen tutorial...

  #6 (permalink)  
Antiguo 20/05/2013, 18:20
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: [APORTE] Registro de usuario PHP y ajax

Mmm solo voy a decir unas cuantas cositas que veo mal:

1: mysql_* es obsoleto mejor PDO.
2:

Cita:
Código PHP:
$nombre $_POST['nombre'];  
$apellido $_POST['apellido'];  
$pass $_POST['pass'];  
$usuario $_POST['usuario'];  
$mail $_POST['mail'];  
$cedula $_POST['cedula'];  
$telefono $_POST['telefono'];  
$fecha $_POST['fecha']; 
Si tienes error_reporting(E_ALL) eso pitara Nitificaciones como una sirena de ambulancia :P
No compruebas si estan definidas o si los indexes existen.

esto:

Código PHP:
<?php 

    
function alpha_numeric($str
    { 
        return ( ! 
preg_match("/^([-a-z0-9])+$/i"$str)) ? FALSE TRUE
    } 

    function 
valid_email($str
    { 
        return ( ! 
preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix"$str)) ? FALSE TRUE
    } 

?>
Lo puedes simplificar el IF este no sirve

Código PHP:
<?php 

    
function alpha_numeric($str
    { 
        return (
preg_match("/^([-a-z0-9])+$/i"$str)); 
    } 

    function 
valid_email($str
    { 
        return (
preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix"$str)); 
    } 

?>

Otra cosa:

Código PHP:
$sqlex2 mysql_query("SELECT usuario FROM clientes WHERE usuario='".$_POST['usuario']."'"$conexion); 
Pure SQL Injection Vulnerability

En vez de hacer un check en cada if para

Código PHP:
if ($_POST['nombre']==''
 
if ($_POST['apellido']==''
 
if ($_POST['usuario']=='' 
Lo podrias hacer en una o dos lineas con 1 if general o con un loop.
A mi tantos IFs me ponen feo :D
Podrias hacer te una funcion que añade un error segun las condiciones.
Por ejemplo algo rapido podria ser:

Código PHP:
<?php 

function validationAssert($bool$ErrorMessage, &$ErrorMessageContainer)
{
    if(
$bool != false)
    {
        
array_push($ErrorMessageContainer$ErrorMessage);
    }
}

$Errors = array();

validationAssert((strlen($_POST['apellido'])<3), "Apellido debe poseer al menos 3 letras."$Errors);
validationAssert((strlen($_POST['nombre'])<3), "Nomnbre debe poseer al menos 3 letras."$Errors);
validationAssert(($_POST['pass'] != $_POST['re_pass']), "The two passwords must match"$Errors);

print_r($Errors);
?>
Otra cosita

Código PHP:
 if ($_POST['pass']=='' || alpha_numeric($_POST['pass'])==FALSE
oO por que el pass tiene que ser alphanumeric ... todo tipo de pass que uso no cumple ese requisito :D es malo quitalo.

Código PHP:
if(is_array($errors)) 
Esto no tiene sentido. Si no tienes ningun error $error simplemente no existira ya que no la defines por ningun lado, no puede ser ni array ni string , ni integer etc.

Hay mas cosas pero lo dejare hasta aqui, que no quiere que te lo tomes a mal :/

Saludos y suerte
  #7 (permalink)  
Antiguo 20/05/2013, 18:22
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: [APORTE] Registro de usuario PHP y ajax

Cita:
Iniciado por tucuta Ver Mensaje
Una pregunta mi gente, como podría hacer para agregar la contraseña encriptada en md5...?

Muchas gracias y muy buen tutorial...

Código PHP:
<?php
    $password 
"aig5821@#$nfkdfj@kyh9#&(";
    
$md5HashedPassword md5($password);
?>
Saludos
  #8 (permalink)  
Antiguo 20/05/2013, 18:27
 
Fecha de Ingreso: diciembre-2008
Mensajes: 33
Antigüedad: 15 años, 4 meses
Puntos: 0
Pregunta Respuesta: [APORTE] Registro de usuario PHP y ajax

Muchas gracias Bulter, te agradezco en el alma...

;

Vengo nuevamente, felicidades por el codigo y gueno, mi pregunta:

No se puede hacer con Jquery...? porque vieras que el enlace para descargar mootools no funka y ya lo baje de la pagina oficial y tampoco funciona.
  #9 (permalink)  
Antiguo 20/05/2013, 18:33
 
Fecha de Ingreso: diciembre-2008
Mensajes: 33
Antigüedad: 15 años, 4 meses
Puntos: 0
De acuerdo Respuesta: [APORTE] Registro de usuario PHP y ajax

Hola Bulter, muchas gracias por la respuesta y de verdad te agradezco en el alma.

Pregunto y porque no posteas una versión mejorada del código, obviamente si @T4ke0veR pos lo permite.

Mejorarlo estaría genial.

Felicidades y nuevamente gracias...




Cita:
Iniciado por bulter Ver Mensaje
Mmm solo voy a decir unas cuantas cositas que veo mal:

1: mysql_* es obsoleto mejor PDO.
2:



Si tienes error_reporting(E_ALL) eso pitara Nitificaciones como una sirena de ambulancia :P
No compruebas si estan definidas o si los indexes existen.

esto:

Código PHP:
<?php 

    
function alpha_numeric($str
    { 
        return ( ! 
preg_match("/^([-a-z0-9])+$/i"$str)) ? FALSE TRUE
    } 

    function 
valid_email($str
    { 
        return ( ! 
preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix"$str)) ? FALSE TRUE
    } 

?>
Lo puedes simplificar el IF este no sirve

Código PHP:
<?php 

    
function alpha_numeric($str
    { 
        return (
preg_match("/^([-a-z0-9])+$/i"$str)); 
    } 

    function 
valid_email($str
    { 
        return (
preg_match("/^([a-z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix"$str)); 
    } 

?>

Otra cosa:

Código PHP:
$sqlex2 mysql_query("SELECT usuario FROM clientes WHERE usuario='".$_POST['usuario']."'"$conexion); 
Pure SQL Injection Vulnerability

En vez de hacer un check en cada if para

Código PHP:
if ($_POST['nombre']==''
 
if ($_POST['apellido']==''
 
if ($_POST['usuario']=='' 
Lo podrias hacer en una o dos lineas con 1 if general o con un loop.
A mi tantos IFs me ponen feo :D
Podrias hacer te una funcion que añade un error segun las condiciones.
Por ejemplo algo rapido podria ser:

Código PHP:
<?php 

function validationAssert($bool$ErrorMessage, &$ErrorMessageContainer)
{
    if(
$bool != false)
    {
        
array_push($ErrorMessageContainer$ErrorMessage);
    }
}

$Errors = array();

validationAssert((strlen($_POST['apellido'])<3), "Apellido debe poseer al menos 3 letras."$Errors);
validationAssert((strlen($_POST['nombre'])<3), "Nomnbre debe poseer al menos 3 letras."$Errors);
validationAssert(($_POST['pass'] != $_POST['re_pass']), "The two passwords must match"$Errors);

print_r($Errors);
?>
Otra cosita

Código PHP:
 if ($_POST['pass']=='' || alpha_numeric($_POST['pass'])==FALSE
oO por que el pass tiene que ser alphanumeric ... todo tipo de pass que uso no cumple ese requisito :D es malo quitalo.

Código PHP:
if(is_array($errors)) 
Esto no tiene sentido. Si no tienes ningun error $error simplemente no existira ya que no la defines por ningun lado, no puede ser ni array ni string , ni integer etc.

Hay mas cosas pero lo dejare hasta aqui, que no quiere que te lo tomes a mal :/

Saludos y suerte
  #10 (permalink)  
Antiguo 20/05/2013, 18:33
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: [APORTE] Registro de usuario PHP y ajax

bulter, hace 5 años, cuando se publicó este aporte, mysql_* todavía no era obsoleta.

Las otras sugerencias de malas prácticas me parece que son adecuadas, sólo no acaba de gustarme la función validationAssert(), pero es cuestión de preferencias.

Me gusta más sin if y sin función:
Código PHP:
Ver original
  1. $errors = array();
  2. (strlen($nombre) < 3 && $errors[] = 'El nombre debe contener al menos 3 caracteres');
  3. (strlen($apellido) < 3 && $errors[] = 'El apellido debe contener al menos 3 caracteres');
  4. ($pass1 != $pass2 && $errors[] = 'Las contraseñas no coinciden.');
__________________
- León, Guanajuato
- GV-Foto
  #11 (permalink)  
Antiguo 20/05/2013, 18:43
 
Fecha de Ingreso: diciembre-2008
Mensajes: 33
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: [APORTE] Registro de usuario PHP y ajax

Wow, les digo algo bulter y Triby, geniales los dos.

Que bueno sería poder adaptarlo a hoy en día osea a corregir los errores que se han dicho incluyendo el uso de jquery.

Con gusto les puedo ayudar en lo que pueda, de verdad con todo el gusto mi gente.

Saludos a los dos

  #12 (permalink)  
Antiguo 20/05/2013, 19:04
Avatar de bulter  
Fecha de Ingreso: enero-2008
Mensajes: 137
Antigüedad: 16 años, 4 meses
Puntos: 20
Respuesta: [APORTE] Registro de usuario PHP y ajax

Cita:
Iniciado por Triby Ver Mensaje
bulter, hace 5 años, cuando se publicó este aporte, mysql_* todavía no era obsoleta.

Las otras sugerencias de malas prácticas me parece que son adecuadas, sólo no acaba de gustarme la función validationAssert(), pero es cuestión de preferencias.

Me gusta más sin if y sin función:
Código PHP:
Ver original
  1. $errors = array();
  2. (strlen($nombre) < 3 && $errors[] = 'El nombre debe contener al menos 3 caracteres');
  3. (strlen($apellido) < 3 && $errors[] = 'El apellido debe contener al menos 3 caracteres');
  4. ($pass1 != $pass2 && $errors[] = 'Las contraseñas no coinciden.');
Wow ..... Tio juro que ni vi la fecha :O
Bueno lo de los ifs creo que es a gusto, porque pregiero la funccion ya que por si algun dia quiero Agregar o quitar algo en los principios o finales de los mensajes, no se me mola mas una funccion :D pero como dijiste es a gusto

Siento haber comentado un post tan vijo ni me fije :D

Saludos
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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 04:56.