Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   PHP (http://www.forosdelweb.com/f18/)
-   -   Sistema de registro de usuarios (http://www.forosdelweb.com/f18/sistema-registro-usuarios-335333/)

pabloasis 21/09/2005 07:06

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

phpnet 21/09/2005 08:23

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

pabloasis 21/09/2005 08:24

es que ya esta creado, el indice autoincrmental... el problema es q no me alamacena lo q contengo en el formulario

sergi_climent 21/09/2005 08:31

puedes postear tu codigo aki?

pabloasis 21/09/2005 08:44

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();

sergi_climent 21/09/2005 08:56

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 { 


phpnet 21/09/2005 14:39

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

sergi_climent 22/09/2005 00:05

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. :-D

Saludos :adios:

phpnet 22/09/2005 04:45

y al final lo arreglastes?
 
hola, pudiste solucinarlo con lo que te pase?

pabloasis 27/09/2005 08:39

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

Computer XTress 27/09/2005 12:15

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.

pabloasis 29/09/2005 06:31

Muchisimas gracias, me facilitaste mucho las cosas, ahora te envio un mail para que me mandes los scrips saludos

pablo


La zona horaria es GMT -6. Ahora son las 00:55.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2014, Jelsoft Enterprises Ltd.

SEO by vBSEO 3.3.2