Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/08/2010, 17:39
varuk
 
Fecha de Ingreso: abril-2004
Mensajes: 107
Antigüedad: 20 años
Puntos: 0
Pregunta Según donde ponga el formulario funciona la redirección "Location: web.php" ¿por qué?

Hola.

Me gusta ir aprendiendo con su lógica porque si me dedico a ver que va y no entiendo el porqué funciona... luego me puede pasar igual después de un tiempo. Me explico.

Tengo este código que lo que hace es que si la contraseña y el usuario son correctos, o están en la misma fila del a base de datos, entonces redirige la web a la página privada:

Código PHP:
<?php 

include("conexion.php"); 

session_start();
if (
$usuario && $contrasena)
{
$resultado mysql_query("SELECT * FROM administrar WHERE usuario='$usuario' AND contrasena='$contrasena'");
if (
mysql_num_rows($resultado)>0)
    {
    
$usuario_valido $usuario;
    
session_register("usuario_valido");
    }
}

echo (
"<form method='post' action='$PHP_SELF'>
      Usuario</br><input type='text' name='usuario'></br>
      Clave</br><input type='text' name='contrasena'></br></br>
      <input type='submit' name='Submit' value='Entrar'>
    </form>"
);

if (
session_is_registered("usuario_valido"))
{
/* Redirigir navegador */
header("Location: editar.php");
/* Asegúrese de que el código que aparece a continuación no se ejecutará cuando redireccionamos.*/
exit;
}

?>
Con ese código no va bien, cuando meto el usuario y contraseña correctos entonces me sale este error: "Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\copisteria\login.php:20) in C:\AppServ\www\copisteria\login.php on line 25"



Bien, pues si quito el código del formulario y lo pongo al final, quedando así, como veis abajo, entonces sí que funciona.


Código PHP:
<?php 

include("conexion.php"); 

session_start();
if (
$usuario && $contrasena)
{
$resultado mysql_query("SELECT * FROM administrar WHERE usuario='$usuario' AND contrasena='$contrasena'");
if (
mysql_num_rows($resultado)>0)
    {
    
$usuario_valido $usuario;
    
session_register("usuario_valido");
    }
}


if (
session_is_registered("usuario_valido"))
{
/* Redirigir navegador */
header("Location: editar.php");
/* Asegúrese de que el código que aparece a continuación no se ejecutará cuando redireccionamos.*/
exit;
}

echo (
"<form method='post' action='$PHP_SELF'>
      Usuario</br><input type='text' name='usuario'></br>
      Clave</br><input type='text' name='contrasena'></br></br>
      <input type='submit' name='Submit' value='Entrar'>
    </form>"
);
 

?>
¿Por qué ahora sí funciona y antes no? ¿Cuál es la expliación?


Muchas gracias.