Foros del Web » Programando para Internet » PHP »

Según donde ponga el formulario funciona la redirección "Location: web.php" ¿por qué?

Estas en el tema de Según donde ponga el formulario funciona la redirección "Location: web.php" ¿por qué? en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 27/08/2010, 17:39
 
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.
  #2 (permalink)  
Antiguo 27/08/2010, 18:54
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Según donde ponga el formulario funciona la redirección "Location: web.php

porque header modifica las cabeceras de la respuesta HTTP, por lo tanto no se puede hacer ningún echo, o volcar datos a la salida del script
  #3 (permalink)  
Antiguo 27/08/2010, 19:01
 
Fecha de Ingreso: abril-2004
Mensajes: 107
Antigüedad: 20 años
Puntos: 0
Respuesta: Según donde ponga el formulario funciona la redirección "Location: web.php

Muchas garcias

Etiquetas: formulario
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 04:54.