Foros del Web » Programando para Internet » PHP »

Registro de usuarios con class php

Estas en el tema de Registro de usuarios con class php en el foro de PHP en Foros del Web. Saludos colaboradores del foro, tengo una duda en mejorar un registro de usuarios. Estoy pasando todas mis web php a clases, funciones. Y px tuve ...
  #1 (permalink)  
Antiguo 05/08/2010, 00:02
Avatar de CCB
CCB
 
Fecha de Ingreso: noviembre-2009
Ubicación: Perú
Mensajes: 65
Antigüedad: 11 años, 9 meses
Puntos: 3
Registro de usuarios con class php

Saludos colaboradores del foro, tengo una duda en mejorar un registro de usuarios.

Estoy pasando todas mis web php a clases, funciones. Y px tuve un poco de duda al pasar mi registro de usuario y conector a la base de datos.


este es el codigo de config.php
Código PHP:
    class config{
        function 
conexion(){
             
$server='localhost';
             
$database='usuario';
             
$db_user='root';
             
$db_pass='';
             
mysql_connect($server,$db_user,$db_pass);
             
mysql_select_db($database);
        }
    } 

y este codigo es de registro.php que recibe los datos de registro.html

Código PHP:


include("config.php"); 


$usuario htmlentities($_POST['usuario']);
$password htmlentities($_POST['pass']);
$mail htmlentities($_POST['mail']);
$nombre htmlentities($_POST['nombre']);


    class 
registro_usuarios
    
{
        var 
$user
        var 
$pass;
        var 
$email;
        var 
$name;
        
         public function 
register($usuario$password$mail$nombre)
        {
                        
            
/* Asignando Valor */
            
$this->user $usuario;
            
$this->pass md5($password);
            
$this->email $mail;
            
$this->name $nombre;
            
            
/* Conectando la Base de Datos */
            
$config = new config;
            
$config->conexion();
            
            
/* Comprobando si existe el usuario */
            
$check sprintf("select user from usuarios where user = '%s'",  $this->user); 
            
$qry mysql_query($check); 
            
            
            
/* La compracion */
                
if (mysql_num_rows($qry)) 
                {
                    echo 
"Lo sentimos, el nombre de usuario ya esta registrado.<br />";
                    
mysql_free_result($qry);
                    exit;
                } else 
                {
                    
$insert sprintf("insert into usuarios (id_cliente, user, pass, nom, email) values (NULL, '%s', '%s', '%s', '%s')",  $this->user$this->pass$this->name$this->email);
                    
$qry mysql_query($insert);
                        if(
mysql_affected_rows())
                        {
                            echo 
"El Usuario $this->user se Registro Correctamente";
                        } 
                        else
                        {
                            echo 
"Error Ingresando datos"
                        }
                    exit;
                }
            
            
        }

     }

    
            
            
            


    
$registrando = new registro_usuarios;
    
$registrando->register($usuario$password$mail$nombre); 
Este codigo puede ser mejor, o puedo mejorar esta clase? necesito algunos consejos. Luego lo subo completo cuando tenga listo y resuelto mi duda.
  #2 (permalink)  
Antiguo 05/08/2010, 00:41
 
Fecha de Ingreso: enero-2008
Mensajes: 68
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Registro de usuarios con class php

Antes que todo, te recomendaría que la función de registro la programaras en la base de datos. De esta manera, tú sólo debes llamar a la función (con mysql_query) y luego desplegar el resultado (que puede ser un string), sin necesidad de verificar las cosas directamente en PHP.

Pero, si no te gusta la idea, te hago algunas sugerencias y pequeñas correcciones.

Cuando creas un objeto (new ...) llamas a una función constructora, por tanto, debes poner paréntesis al final del nombre de la clase.
Por ejemplo
Código PHP:
Ver original
  1. <?
  2. $registrando = new registro_usuarios() ;
  3. ?>

Donde avisas que se registró el usuario, el dato no se imprimirá. Debes hacer algo parecido a lo que haces arriba con el scanf().

Código PHP:
Ver original
  1. <?
  2. echo scanf("El Usuario %s se Registro Correctamente",$this->user)
  3. ?>

Finalmente, si en la clase "registro_usuarios" no vas a agregar otro método (función dentro de una clase), te recomiendo que el método "register()" lo saques de la clase, lo dejes como función, y elimines la clase, ya que la clase no es necesaria.
El mismo comentario lo hago para el caso de la clase config. podrías dejar una función que se llame conexión, sin necesidad de que la clase exista.

Te apoyo en pasar a la programación orientada a objetos, pero esto es bueno siempre y cuando se haga cuando sea necesario.
  #3 (permalink)  
Antiguo 05/08/2010, 01:16
Avatar de CCB
CCB
 
Fecha de Ingreso: noviembre-2009
Ubicación: Perú
Mensajes: 65
Antigüedad: 11 años, 9 meses
Puntos: 3
Respuesta: Registro de usuarios con class php

Cita:
Iniciado por fcopacheco Ver Mensaje
Finalmente, si en la clase "registro_usuarios" no vas a agregar otro método (función dentro de una clase), te recomiendo que el método "register()" lo saques de la clase, lo dejes como función, y elimines la clase, ya que la clase no es necesaria.
El mismo comentario lo hago para el caso de la clase config. podrías dejar una función que se llame conexión, sin necesidad de que la clase exista.

Te apoyo en pasar a la programación orientada a objetos, pero esto es bueno siempre y cuando se haga cuando sea necesario.


Si px es que resulta mas facil manejarlo con Programación orientada a objetos, sobre "class registro_usuarios" en un principio tenia la funcion comprobar() y esta funcion register() pero lo hize en la misma funcion asi que tienes razon se puede hacer solo con fuction.

En donde dices que no imprime, pues a mi si me imprimer. Pero bueno quizas tu consejo este mas actualizado asi que lo probare.

El poner los parentesis cuando se crea la funcion, lo vi en algunos ejemplos. Pero no se por que en otros ejemplos no lo ponen. A ver si me explicas un poco, ya que recien entro a programacion orientada a objetos.
  #4 (permalink)  
Antiguo 05/08/2010, 04:47
Avatar de elguaydelforo  
Fecha de Ingreso: agosto-2010
Ubicación: En el menú inicio, xddd
Mensajes: 28
Antigüedad: 11 años
Puntos: 0
Respuesta: Registro de usuarios con class php

Puedes hacer un APORTE cuando lo agas sobre registro de usuarios, con db, (Existe pero otro es mejor, con los que hay jajaja)
  #5 (permalink)  
Antiguo 05/08/2010, 22:36
Avatar de CCB
CCB
 
Fecha de Ingreso: noviembre-2009
Ubicación: Perú
Mensajes: 65
Antigüedad: 11 años, 9 meses
Puntos: 3
Respuesta: Registro de usuarios con class php

pues a ver si con esto esta mejor, a mi me resulta incluso me pase probando la seguridad, pero como recin empiezo en class siempre se nos escapa algo.

Luego aporto el codigo completo pero esto funciona solo con ese config.php anterior que pase.

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

    class 
registro_usuarios
    
{
        var 
$user;
        var 
$pass;
        var 
$email;
        var 
$name;

         public function 
tratandovariables()
        {

            
/* Eliminando Caracteres Especiales */
            
$usuario htmlspecialchars(strip_tags($_POST['usuario']));
            
$password htmlspecialchars($_POST['pass']);
            
$mail htmlspecialchars(strip_tags($_POST['mail']));
            
$nombre htmlspecialchars(strip_tags($_POST['nombre']));

            if (
preg_match("/^[a-zA-Z0-9\-_]{3,20}$/"$usuario))
            {
                
/* Asignando Valor */
                
$this->user $usuario;
                
$this->pass md5($password);
                
$this->email $mail;
                
$this->name $nombre;
            }
            else
            {
                echo 
"El nombre de usuario no es válido<br>";
                exit;
            }
        }

        public function 
register()
        {
            
$this->tratandovariables();

            
/* Conectando la Base de Datos */
            
conexion();

            
/* Comprobando si existe el usuario */
            
$check sprintf("select user from usuarios where user = '%s'",  $this->user);
            
$qry mysql_query($check);

            
/* La compracion */
                
if (mysql_num_rows($qry))
                {
                    echo 
"Lo sentimos, el nombre de usuario ya esta registrado.<br />";
                    
mysql_free_result($qry);
                    exit;
                } else
                {
                    
$insert sprintf("insert into usuarios (id_cliente, user, pass, nom, email) values (NULL, '%s', '%s', '%s', '%s')",  $this->user$this->pass$this->name$this->email);
                    
$qry mysql_query($insert);
                        if(
mysql_affected_rows())
                        {
                            echo 
"El Usuario $this->user se Registro Correctamente";
                        }
                        else
                        {
                            echo 
"Error Ingresando datos";
                        }
                    exit;
                }
        }

    }

    
$registrando = new registro_usuarios();
    
$registrando->register();

?>


Nota: Corregi ereg por preg_match

Última edición por CCB; 08/08/2010 a las 00:20 Razón: Corrigiendo.
  #6 (permalink)  
Antiguo 05/08/2010, 22:53
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 11 años, 3 meses
Puntos: 461
Respuesta: Registro de usuarios con class php

esta muy bueno el aporte y si te funciona bien bueno una observacion la funcion ereg esta obsoleta http://www.php.net/manual/es/function.ereg.php segun el manual y muchos otros temas que se han tratado y disculpame si no entiendo bien xq tambien soy algo nuevo en eso de la poo pero llamas primero a tratandovariables y luego ingresas las variables?? y las trata?? como te dig no se si este ekivocado yo pero esta muy bueno el tema para lo que te digo podrias llamar al metodo tratandovariables desde el metodo de register que es donde pasas los parametros y asi te ahorras el llamarla sino que al decir que registre tratas automaticamente bueno es una sugerencia y como te dig soy algo nuevo en esto ambien suerte
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #7 (permalink)  
Antiguo 05/08/2010, 23:07
Avatar de CCB
CCB
 
Fecha de Ingreso: noviembre-2009
Ubicación: Perú
Mensajes: 65
Antigüedad: 11 años, 9 meses
Puntos: 3
Respuesta: Registro de usuarios con class php

Es que primero tengo que limpiar las variables y hago la funcion tratandovariables para que si encuentra algun error se cierre el script.

Pero si todo anda bien px que asigne los valores a las variables definadas y es en la otra funcion donde recien toma las variables y las registra en la base de datos.
  #8 (permalink)  
Antiguo 05/08/2010, 23:27
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 11 años, 3 meses
Puntos: 461
Respuesta: Registro de usuarios con class php

bueno ya vi que si te las trata y vi el xq pero entonces no es necesario pasarle los parametros al metodo register que es lo que me habia confundido de echo al metodo no le tienes declarado ningun parametro tu sencillamente en tratarvariable recibes el dato del formulario y lo tratas cuando lo llamas no es necesario pasarle parametro a regster ahora si entendi jaja bueno revisa a ver si es asi q lo kieres y acomoda lo del ereg ya que la funcion esta obsoleta y cuando lo termines si kieres lo colocas como aporte para cualkiera que lo necesite suerte
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #9 (permalink)  
Antiguo 06/08/2010, 23:26
Avatar de CCB
CCB
 
Fecha de Ingreso: noviembre-2009
Ubicación: Perú
Mensajes: 65
Antigüedad: 11 años, 9 meses
Puntos: 3
Respuesta: Registro de usuarios con class php

ya corregi lo que hacia falta, entonces si no hay alguna recomendacion seguire para luego publicarla en el foro.
  #10 (permalink)  
Antiguo 06/08/2010, 23:31
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 11 años, 3 meses
Puntos: 461
Respuesta: Registro de usuarios con class php

disculpa pero q corregiste?? fijate esto
Cita:
$registrando->register($usuario, $password, $mail, $nombre);
pasas parametros al metodo y cuando vemos el metodo en la clase
Cita:
public function register()
no tiene parametros a recibir por lo q son innecesarios los paraetros que pusiste las variables las tratas xq en el metodo tratar variable recibes lo que pasas del formulario directament corrige eso q es lo unico q le veo asi despues de q corrigieras el ereg por el preg_match suerte
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #11 (permalink)  
Antiguo 08/08/2010, 00:19
Avatar de CCB
CCB
 
Fecha de Ingreso: noviembre-2009
Ubicación: Perú
Mensajes: 65
Antigüedad: 11 años, 9 meses
Puntos: 3
Respuesta: Registro de usuarios con class php

Sorry ya lo edite, se me olvido sacarle las variables por que ya no hacen falta, ese valor la toman arriba.

Osea las variables son tomadas en tratandovariables() y es de ahi donde las asigna para registrar o comprobar.

Etiquetas: class, registro, 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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 03:48.