Ver Mensaje Individual
  #13 (permalink)  
Antiguo 28/02/2007, 08:36
Avatar de ebe
ebe
 
Fecha de Ingreso: marzo-2004
Ubicación: Guatemala
Mensajes: 363
Antigüedad: 20 años, 1 mes
Puntos: 11
Re: validacion sin perder informacion en php

primero te sugeriria que tengas por aparte tu proceso de de autenticacion de los usuarios, que es donde compruebas si el usuairo existe en el sistema o no, y es exactamente ahi donde debes crear una variable de session en la cual guardaras el array POST que contendra todos los valores de tu formulario para asi reinsertarlos a tu formulario. Resumamos tu formulario de la siguiente manera para que aclarar tu duda.


archivo formulario.php
Código PHP:
<?php
session_start
(); // session start debe ser llamada al principio de tu archivo.

if(isset($_SESSION['formulario'])) // compruebo si existe la variable de session que almacena los valores del form (inputs) enviados via $_POST
$posts $_SESSION['formulario']; // assigno esta variable de session a una variable local

if((int)$_GET['error'] == 1)
echo(
'usuario no existe en el sistema');
?>
<form id="login" action="procesa.php" method="post">
 <label for="usuario"> usuario: </label><input type="text" name="usuario" id="usuario" value="<?php $posts['usuario']; ?>" /><br />
  <label for="contrasena">contrase&ntilde;a:</label><input type="text" name="contrasena" id="contrasena" />
  <br />
  <input type="button" name="logearse" value="Iniciar session" />
</form>

al momento de desear procesar los datos deberias tener un script algo asi.


<?php

session_start();

include 'constantes_bd.php';
include 'conectar_bd.php';

$nombrecookie = "admin";
$valcookie = $_COOKIE[$nombrecookie];

$pos = strpos ($valcookie,'@');
$administrador = substr ($valcookie,0,$pos);

$result = mysql_query ("SELECT * FROM administrador WHERE nombre_usuario='$administrador' and val_cookie='$valcookie' and estado='autenticado';") or die (mysql_error());
mysql_close ($link);

if (mysql_num_rows($result) > 0) {

// aqui redirecionas al archivo stats.php, es mejor asi asi separas tus procesos de tus presentaciones de datos.

header('location:stats.php');
exit;

}else{ // el usuario no existe de modo que creas una variable de session donde almacenas los datos del post y redirecionas nuevamente a formulario.php

$_SESSION['formulario'] = $_POST; // asignamos todos los valores que vengan por post a la variable de session formulario
header("location:formulario.php?error=1"); // redirecciono y paso un valor via get para mostrar un mensaje al usuario de que ha habido un error.
exit;

?>

con este ejemplo basico tienes la idea base de como regresar los valores insertados en tu formulario en caso de algun error. Todo esta en asignar a una variable de sesion los valores almacenados en el array $_POST (ahora si usas get en el metodo del formulario debes cambiarlo por $_GET)

Espero haber resuelto tu duda.

un saludo.
__________________
http://dev.wsnetcorp.com

Última edición por ebe; 28/02/2007 a las 08:40 Razón: little fixes. // add error message in formulario.php