Foros del Web » Programando para Internet » PHP »

Me tira un warning en sessions

Estas en el tema de Me tira un warning en sessions en el foro de PHP en Foros del Web. Despues de buscar en posts de sessiones y no encontrar un problema similar, hago este post para ver si alguien sabe por que sale este ...
  #1 (permalink)  
Antiguo 24/04/2006, 18:27
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 11 años, 10 meses
Puntos: 3
Me tira un warning en sessions

Despues de buscar en posts de sessiones y no encontrar un problema similar, hago este post para ver si alguien sabe por que sale este warning:
Te haz loguedo como sa
Warning: Cannot modify header information - headers already sent by (output started at C:\Servidor\WEB\php\sess\index.php:13) in C:\Servidor\WEB\php\sess\index.php on line 21

Pues hay 2 campos (user y pass) en el cual me logea, arriba en el warning q puse, sale:"logueado como sa", entonces quiere decir si inicio la sesion... pero mi duda es por que sale el warning..el codigo es el siguiente:
Código PHP:

<?php
    session_start
();
?>
<html>
<head>
<title>Sesiones</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td>
<?php
        
if(isset($_POST['enviar'])){
        if(empty(
$_POST['usuario']) || empty($_POST['password']))
        echo 
'Debes llenar todos los datos';
        elseif(!empty(
$_POST['usuario']) and !empty($_POST['password'])){
        
$_SESSION['usuario']=$_POST['usuario'];
        
$_SESSION['password']=$_POST['password'];
        echo 
'Te haz loguedo como '.$_SESSION['usuario'];
        
header("location:principal.php");
        }
        }
?>
</td>
<td rowspan="2"><form name="login" method="post" action="index.php">
<table width="250" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
    <td>Usuario:</td>
    <td><input name="usuario" type="text" id="usuario"></td>
</tr>
<tr>
    <td>Password:</td>
    <td><input name="password" type="password" id="password"></td>
</tr>
<tr align="center">
<td colspan="2"><input name="enviar" type="submit" id="enviar" value="Enviar"></td>
//resto del codigo//no importante
  #2 (permalink)  
Antiguo 24/04/2006, 20:38
Avatar de jmn2k1  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires...
Mensajes: 489
Antigüedad: 16 años, 1 mes
Puntos: 2
no se puede hacer ninguna salida al navegador antes de enviar alguna cabecera...

Deberias poner ese bloque de codigo al principio, y usar una variable para el texto que pones.

Saludos
__________________
JmN
  #3 (permalink)  
Antiguo 24/04/2006, 22:28
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 11 años, 10 meses
Puntos: 3
Mmmm no entendi tu respuesta, me podria poner porfavor un ejemplo de como lo debo de poner..?
  #4 (permalink)  
Antiguo 24/04/2006, 22:45
Avatar de jmn2k1  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires...
Mensajes: 489
Antigüedad: 16 años, 1 mes
Puntos: 2
Antes de usar header() no tiene que haber ninguna salida, o sea, nada de echo, print o ni siquiera espacioes en blanco fuera de los tags de php (<?php y ?>).
Fijate que vos tenes html por fuera de php antes de usar header, por eso es el error.
La solucion seria que pongas el codigo al principio (justo despues del session_start())
__________________
JmN
  #5 (permalink)  
Antiguo 24/04/2006, 23:53
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 11 años, 10 meses
Puntos: 3
Y como haria para q me dijera:"Has sido logueado como:nombre" y luego q me redireccione a otro php?
  #6 (permalink)  
Antiguo 25/04/2006, 07:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por B**
Y como haria para q me dijera:"Has sido logueado como:nombre" y luego q me redireccione a otro php?
El proceso es justo al reves ..

Tu redireccionas a tu página y en esa donde llegas muestras el mensaje "tu has sido .. .blablabla".

O bien tienes una página intermedia en la que muestras ese mensaje y a cierto tiempo redireccionas a la página final de destino.

Es decir .. ese código que usas PHP sólo .. aislalo, quitale todo ese "HTML" y ese redireccionamiento lo mandas a la página donde muestres ese mensaje de error/exito. De esta vía link, redireccionamiento automático o como sea redireccionas a donde corresponda. Y sino .. redireccionas a la misma página que has de quedar con ese mensaje de error. Para esto te puedes ayudar de una variable de control que indique si llegas de ese proceso o no .. tipo:

header ("Location: principal.php?msg=1");

Y en principal.php

Código PHP:
<?
if (!empty($_GET['msg'])){
echo 
"Mensaje: ".$_GET['msg'];
}
?>


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 07:57.