Foros del Web » Programando para Internet » PHP »

¿por QuÉ Me Da Error?

Estas en el tema de ¿por QuÉ Me Da Error? en el foro de PHP en Foros del Web. Hola a todos. Tengo una aplicación en la que he creado un fichero para validar usuarios autorizados en la aplicación. Resulta que solo cuando cargo ...
  #1 (permalink)  
Antiguo 30/03/2004, 14:02
 
Fecha de Ingreso: septiembre-2003
Mensajes: 51
Antigüedad: 14 años, 2 meses
Puntos: 0
¿por QuÉ Me Da Error?

Hola a todos. Tengo una aplicación en la que he creado un fichero para validar usuarios autorizados en la aplicación. Resulta que solo cuando cargo una página me pone el siguiente error:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\appserv\www\netman_php\validado.php:6) in c:\appserv\www\netman_php\validado.php on line 7

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at c:\appserv\www\netman_php\validado.php:6) in c:\appserv\www\netman_php\validado.php on line 7

y el fichero validado.php tiene el siguiente contenido:

<html>
<head>
<title></title>
</head>
<body>
<?
session_start ();
if ( (empty($SESSION["Usuario"])) && (empty($SESSION["Password"])))
{
header ("Location: /netman_php/noautorizado.php");
}
?>
</body>
</html>

¿Alguien sabe cual es el error? El caso que la aplicación a pesar del error funciona correctamente. Saludos.
  #2 (permalink)  
Antiguo 30/03/2004, 14:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cuando se usa header() o session_start() antes de esas funciones no puede existir nada de HTML por encima de ellas ni otra salida al navegador (lease: un espacio, salto de línea .. etc).

Tal como tenías tu HTML .. no tiene sentido cara a PHP y como procesa este el código ..

Ejemplo:
PHP procesa el código PHP (lo que está entre <? y ?> .. ) en tu caso si se cumple tu condición se envia una orden al "navegador" (cliente) para que cambie la página del cliente (redireccione) a otro sitio. Las cabeceras HTTP (header() ..) se procesan por un navegador -antes- que tu HTML/javascript y resto de cosas que les envies a tu navegor .. por eso no tiene sentido usar HTML por enciama de un "header("location ...") por qué el objetivo de tu código (del flujo de este) es que redirecciones o bien se quede en el mismo scirpt y este a su vez contenga HTML/o algo que mostrar al navegador ...

Debes pensar en tus aplicaciones en PHP que PHP se jecuta primero y lo que resulte es lo que procesará en su parte el cliente (navegador) .. Así que no hay que pensar en "HTML con PHP incrustrado" sino en que PHP generará el HTML que tu lógica determine por sus condicionales, bucles y demás estructuras de control que uses.

De lo dicho ... tu código quedaría así (reordenandolo):

Código PHP:
<?
session_start 
();
if ( (empty(
$SESSION["Usuario"])) && (empty($SESSION["Password"])))
{
header ("Location: /netman_php/noautorizado.php");
exit;

?>
<html>
<head>
<title>Pagina autorizada</title>
</head>
<body>
pagina autorizada ..
</body>
</html>
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 13:02.