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(1000, 9000);
}
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.