Foros del Web » Programando para Internet » PHP »

Sistema de registro de usuarios

Estas en el tema de Sistema de registro de usuarios en el foro de PHP en Foros del Web. Hola a todos, estoy creando un sistemas de registro de usuarios, con php y bd MySql, en el cual tengo un formulario para la registracion ...
  #1 (permalink)  
Antiguo 21/09/2005, 07:06
 
Fecha de Ingreso: marzo-2005
Mensajes: 71
Antigüedad: 19 años, 1 mes
Puntos: 0
Pregunta Sistema de registro de usuarios

Hola a todos, estoy creando un sistemas de registro de usuarios, con php y bd MySql, en el cual tengo un formulario para la registracion de los mismos, y luego una pagina que verifica los datos ingresados y guarda los registros, entre otras pag.... el problema es que siempre guarda el mismo registro, q es el nombre de una variable,ej: $apellido.
Yo lo q hice fue en el formulario de registracion, a cada caja de texto (en value )guarde su valor a traves del sig codigo <? echo $apellido; ?> , y luego utilize estas variables en el formulario de registracion, para guardarlas en la bd... si alguien me puede ayudar se los agradeceria....
mucha suerte gracias
pablo
  #2 (permalink)  
Antiguo 21/09/2005, 08:23
 
Fecha de Ingreso: agosto-2003
Mensajes: 272
Antigüedad: 20 años, 7 meses
Puntos: 0
bueno un indice

hola es recomendable que te crees un indice, por convencion se le llama id y es un int y lo tenes que setear en auto_increment.
Esto te va a solucionar el prblema
Saludos
  #3 (permalink)  
Antiguo 21/09/2005, 08:24
 
Fecha de Ingreso: marzo-2005
Mensajes: 71
Antigüedad: 19 años, 1 mes
Puntos: 0
es que ya esta creado, el indice autoincrmental... el problema es q no me alamacena lo q contengo en el formulario
  #4 (permalink)  
Antiguo 21/09/2005, 08:31
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
puedes postear tu codigo aki?
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #5 (permalink)  
Antiguo 21/09/2005, 08:44
 
Fecha de Ingreso: marzo-2005
Mensajes: 71
Antigüedad: 19 años, 1 mes
Puntos: 0
Este es el cod, del formulario q envia los datos

<form name="form1" method="post" action="registro.php">
<p>&nbsp;</p>
<table width="100%" border="0" cellpadding="4" cellspacing="0">
<tr>
<td width="24%" align="left" valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Nombre</font></td>
<td width="76%"><strong><font face="Verdana, Arial, Helvetica, sans-serif">
<input name="nombre" type="text" id="nombre2" value="<? echo $nombre; ?>">
</font></strong></td>
</tr>
<tr>
<td align="left" valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Apellido</font></td>
<td><strong><font face="Verdana, Arial, Helvetica, sans-serif">
<input name="apellido" type="text" id="apellido" value="<? echo $apellido; ?>">
</font></strong></td>
</tr>
<tr>
<td align="left" valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">E-Mail</font></td>
<td><strong><font face="Verdana, Arial, Helvetica, sans-serif">
<input name="email" type="text" id="email" value="<? echo $email; ?>">
</font></strong></td>
</tr>
<tr>
<td align="left" valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Nombre
de usuario</font></td>
<td><strong><font face="Verdana, Arial, Helvetica, sans-serif">
<input name="usuario" type="text" id="usuario" value="<? echo $usuario; ?>">
</font></strong></td>
</tr>
<tr>
<td align="left" valign="top"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Info:</font></td>
<td><strong><font face="Verdana, Arial, Helvetica, sans-serif">
<textarea name="info" id="info"><? echo $info; ?></textarea>
</font></strong></td>


Este es parte del codigo q toma es informacion


include "db.php";
// Inserta los valores de los campos del formulario en las variables
$nombre = $_POST['nombre'];
$apellido = $_POST['apellido'];
$email = $_POST['email'];
$usuario = $_POST['usuario'];
$info = $_POST['info'];


// Ingresa los datos a la base de datos.
$info2 = htmlspecialchars($info);
$sql = mysql_query('INSERT INTO usuarios (nombre, apellido,
email, usuario, password, info, fecha_inscrip)
VALUES("$nombre", "$apellido", "$email",
"$usuario", "$db_password", "$info2", now())')
or die (mysql_error());
if(!$sql){
echo "Hubo un error al crear el usuario, contacte al webmaster.";
} else {
$userid = mysql_insert_id();
  #6 (permalink)  
Antiguo 21/09/2005, 08:56
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
las variables q recibes aqui:
Este es parte del codigo q toma es informacion
Código PHP:
include "db.php"
// Inserta los valores de los campos del formulario en las variables 
$nombre $_POST['nombre']; 
$apellido $_POST['apellido']; 
$email $_POST['email']; 
$usuario $_POST['usuario']; 
has probado bien si te llegan? es decir imprimirlas a ver q valor tienen?
si te llegan y s muestran entonces pruba de hacer el insert con comillas simples y el now mejor no lo pongas directamente en el sql
crealo primero en una variable y luego se lo pasas.
las fechas acostumbran a dar bastantes problemas si no le das el formato correcto.
Código PHP:
// Ingresa los datos a la base de datos. 
$fecha=date(Y-m-d);//fecha en formato 2005-09-21
$info2 htmlspecialchars($info); 
$sql mysql_query("INSERT INTO usuarios (nombre, apellido, 
email, usuario, password, info, fecha_inscrip) 
VALUES('$nombre', '$apellido', '$email', 
'$usuario', '$db_password', '$info2','$fecha')"
); 
or die (
mysql_error()); 
if(!
$sql){ 
echo 
"Hubo un error al crear el usuario, contacte al webmaster."
} else { 
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #7 (permalink)  
Antiguo 21/09/2005, 14:39
 
Fecha de Ingreso: agosto-2003
Mensajes: 272
Antigüedad: 20 años, 7 meses
Puntos: 0
No uses esa sintaxis.

hola, esa forma de insertar es para mi confusa y causa errores si te olvidas de un campo como por ejemplo el id.

// Ingresa los datos a la base de datos.
$fecha=date(Y-m-d);//fecha en formato 2005-09-21
$info2 = htmlspecialchars($info);
$sql = mysql_query("INSERT INTO usuarios (id,nombre, apellido,
email, usuario, password, info, fecha_inscrip)
VALUES(' ','$nombre', '$apellido', '$email',
'$usuario', '$db_password', '$info2','$fecha')");
or die (mysql_error());
if(!$sql){
echo "Hubo un error al crear el usuario, contacte al webmaster.";
} else {

fijate, que agrege el id y dos comillas simples osea, vacias eso es para que mysql incremente el id e inserte el campo.
saludos

Última edición por phpnet; 21/09/2005 a las 14:40 Razón: Actalizacion
  #8 (permalink)  
Antiguo 22/09/2005, 00:05
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
no hace falta pasarle el parametro ya q valor es autoincrementable... no devuelve ningun error, ya q el campo se actualiza solo para cada valor q insertes.
Aunque bueno... es una opción más.

Saludos
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #9 (permalink)  
Antiguo 22/09/2005, 04:45
 
Fecha de Ingreso: agosto-2003
Mensajes: 272
Antigüedad: 20 años, 7 meses
Puntos: 0
y al final lo arreglastes?

hola, pudiste solucinarlo con lo que te pase?
  #10 (permalink)  
Antiguo 27/09/2005, 08:39
 
Fecha de Ingreso: marzo-2005
Mensajes: 71
Antigüedad: 19 años, 1 mes
Puntos: 0
Hola amigos, como estan disculpen por la demora de mi respuesta, es que pase todo este fin de semana enfermo, y bueno creo voy a enfermar nuevamente porque no logro solucionar mi problema, probe como me decias vos phpnet, de cambiar las comillas, hasta de poner el campo id, las variables contienen su valor porque probe mostrarlas antes de insertarlas, pero al insertarlas no se graba el valor que contienen ellas, sino su nombre, bueno espero encontrar la solucion pronto muchas gracias a todos salu2 pablo
  #11 (permalink)  
Antiguo 27/09/2005, 12:15
 
Fecha de Ingreso: diciembre-2004
Mensajes: 721
Antigüedad: 19 años, 3 meses
Puntos: 2
ey, mira yo hice esto...

Primero, todos los datos los guardo en una session:

Código PHP:
    if ( isset($_SESSION['user']) ) {
        echo 
"Por favor, cierra tu sesion de usuario antes de realizar un registro de un nuevo usuario";
        exit();
    }                

    if(!
$_SESSION['reg_id']) {    
        
$reg_id rand(200,9000);

        
$link conectar_bd();
        
$sql "select * from candidatos where reg_id = '$reg_id'";
        
$query mysql_query($sql) or die ('Imposible realizar consulta SQL!');

        if (
mysql_num_rows($query) > 0) {
            
$reg_id rand(10009000);
        }

        
mysql_free_result($query);
        
mysql_close($link);

        
$_SESSION['reg_id'] = $reg_id;
    } 
En el form hago que los datos ingresados por el usuario sen guardados, y los muestro en las cajitas de texto, asi cuando el usuario vuelve tiene todo igual:
Código PHP:
        <form action="/scripts/reg_control.php" method="post" name="frm">

        <table width="100%" cellpadding="0" cellspacing="0" border="0">
            <tr>
                <td>Nombre</td> <td><input class="forminput" type="text" name="nombre" maxlength="16" value="<?php echo $_SESSION['nombre']; ?>" /></td>
            </tr>

            <tr>
                <td>Apellido</td> <td><input class="forminput" type="text" name="apellido" maxlength="20" value="<?php echo $_SESSION['apellido']; ?>" /></td>
            </tr>

            <tr>
                <td>Fecha de nacimiento</td> <td><select name="dia"> <?php for($i=1$i <= 9$i++) { echo "<option>0".$i."</option>"; } for($i=10$i <= 31$i++) { echo "<option>".$i."</option>"; } ?> </select> <select name="mes"><option>Enero</option><option>Febrero</option><option>Marzo</option><option>Abril</option><option>Mayo</option><option>Junio</option><option>Julio</option><option>Agosto</option><option>Septiembre</option><option>Octubre</option><option>Noviembre</option><option>Diciembre</option></select> <select name="año"> <?php for ($i=2006$i >= 1920$i--) { echo "<option>".$i."</option>"; } ?> </select></td>
            </tr>

            <tr>
                <td>Nick (nombre de usuario)</td> <td><input class="forminput" type="text" name="nick" maxlength="12" value="<?php echo $_SESSION['nick']; ?>" /></td>
            </tr>
...
Es bastante simple, en la proxima pagina voy a controlar los datos, y si son validos los GUARDO EN LA VARIABLE DE SESSIOn, sino le aviso al usuario.

Asi solo almaceno los datos validos y desestimo los invalidos:
Código PHP:
    session_start();

    if (!$_SESSION['reg_id']) {
        echo "error";
        exit();
    }

    include_once($_SERVER['DOCUMENT_ROOT'].'/include/bd.php');
    include_once($_SERVER['DOCUMENT_ROOT'].'/include/fecha.php');

?>
/* AQUI YA SE QUE LA SESSION ES LA MISMA */

<?php
    $link 
conectar_bd();


    if( !
ereg("^[a-zA-Z]{4,16}$"$_POST['nombre']) ) {
        echo 
"<img src='/img/icons/bullet.gif' alt='.' width='8' height='8' /><b>El nombre es incorrecto:</b> Ingresaste caracteres invalidos.  Solo puedes utilizar caracteres ALFABETICOS para este campo, y debe comenzar con MAYUSCULA. ej: 'Mariano'.<br /><br />";
        
$error "true";
    } else {
        
$_SESSION['nombre'] = $_POST['nombre'];
    }






    if( !
ereg("^[a-zA-Z[:space:]]{4,20}$"$_POST['apellido']) ) {
        echo 
"<img src='/img/icons/bullet.gif' alt='.' width='8' height='8' /><b>El apellido es incorrecto:</b> Ingresaste caracteres invalidos.  Solo puedes utilizar caracteres ALFABETICOS para este campo, y debe comenzar con MAYUSCULA. ej: 'Fernandez'.<br /><br />";
    } else {
        
$_SESSION['apellido'] = $_POST['apellido'];
    }





    
    
$nick strtolower($_POST['nick']);
    if( !
ereg("^[a-z0-9]{4,12}$"$nick) ) {
        echo 
"<img src='/img/icons/bullet.gif' alt='.' width='8' height='8' /><b>Nick incorrecto:</b> Ingresaste caracteres invalidos.  Solo puedes utilizar caracteres ALFA NUMERICOS (sin espacios y en minusculas) para este campo. ej: 'alejo29'.<br /><br />";
        
$error "true";

    } else {

        
$sql "select * from usuarios where user = '$nick'";        
        
$query mysql_query($sql) or die('Imposible realizar consulta SQL!');
    
        if (
mysql_num_rows($query) > 0) {
            echo 
"<b>El usuario ya existe en la base de datos, elije otro nombre (nick).</b><br />";
            
mysql_free_result($query);
        } else {
            
$_SESSION['nick'] = $nick;
            
mysql_free_result($query);
        }
    }
    

    


    if( !
ereg("^[a-z0-9]{6,12}$"$_POST['password']) || !ereg("^[a-z0-9]{6,12}$"$_POST['pass_check'])) {
        echo 
"<img src='/img/icons/bullet.gif' alt='.' width='8' height='8' /><b>Password incorrecto:</b> Ingresaste caracteres invalidos.  Solo puedes utilizar caracteres ALFA NUMERICOS (sin espacios), respetando un minimo de 6 caracteres y maximo de 12.<br /><br />";
        
$error "true";

    } else {
    
        if (
$_POST['password'] != $_POST['pass_check']) {
            echo 
"<B>Los passwords no coinciden.</b><br />";
        } else {
            
$_SESSION['password'] = $_POST['password'];
        }
    }
Te pegue algo de codigo extra para que tomes los EREGI... si queres te puedo enviar los scripts completos, solo mandame un email a [email protected]

Un saludo.
  #12 (permalink)  
Antiguo 29/09/2005, 06:31
 
Fecha de Ingreso: marzo-2005
Mensajes: 71
Antigüedad: 19 años, 1 mes
Puntos: 0
Muchisimas gracias, me facilitaste mucho las cosas, ahora te envio un mail para que me mandes los scrips saludos

pablo
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 01:31.