Foros del Web » Programando para Internet » PHP »

Dos errores , ayuda please

Estas en el tema de Dos errores , ayuda please en el foro de PHP en Foros del Web. Hola de nuevo para explicarles mejor mi problema les voy a aduntar el codigo este archivo se llama logicaUsuario.php: Código PHP: <? include  './Conexion.inc.php' ; ...
  #1 (permalink)  
Antiguo 06/12/2004, 08:00
 
Fecha de Ingreso: diciembre-2004
Mensajes: 94
Antigüedad: 19 años, 4 meses
Puntos: 0
Dos errores , ayuda please

Hola de nuevo para explicarles mejor mi problema les voy a aduntar el codigo

este archivo se llama logicaUsuario.php:

Código PHP:
<?
include './Conexion.inc.php';
include 
'./clasePersona.inc.php';

echo 
"Estoy en logicaUsuario.php";

$accionrealizada=$_POST['accion'];

echo 
"La accion realizada fue ".$accionrealizada;




$instanciaConexion=new Conexion();


if (!
strcmp($accionrealizada,"Buscar"))
{ echo 
"Entre al if de buscar";
 
$nombre=$_POST['txtNombre'];
 
$apellidop=$_POST['txtPaterno'];
 
$apellidom=$_POST['txtMaterno'];
 
$estado=$_POST['cmbEstado'];
 echo 
"Ya capture los datos que necesito";
}

if (!
strcmp($estado,"3")) { $estado="";}

echo 
strlen($nombre);
$strSql="Select codigo, nombre, apellidopat, apellidomat, estado from tab_usuario where 1=1";

echo 
"<br>";
if (
strlen($nombre)){
$strSql=$strSql." and nombre like '".$nombre."%'";
echo 
$strSql;
}
echo 
"<br>";
if (
strlen($apellidop)){
$strSql=$strSql." and apellidoPat like '".$apellidop."%'";
echo 
$strSql;
}
echo 
"<br>";
if (
strlen($apellidom)){
$strSql=$strSql." and apellidoMat like '".$apellidom."%'";
echo 
$strSql;
}
echo 
"<br>";
if (
strlen($estado)){
$strSql=$strSql." and estado= '".$estado."'";
echo 
$strSql;
}
echo 
"<br>";
echo 
"<br>";

$strSql=$strSql." order by codigo;";
echo 
"ya tengo lista mi cadena final  :  ";
echo 
$strSql;


$instanciaConexion->AbrirConexion();
$resultadoQuery=$instanciaConexion->doSelect($strSql);


  
$listaPersonas=array();


  echo 
"antes de entrar al while";

  while(
$resultadoVector=mysql_fetch_array($resultadoQuery)) {

   
$instanciaPersona=new clasePersona();
   
$instanciaPersona->setCodigo($resultadoVector["codigo"]);

   
$instanciaPersona->setNombre($resultadoVector["nombre"]);

   
$instanciaPersona->setApPaterno($resultadoVector["apellidopat"]);
   
$instanciaPersona->setApMaterno($resultadoVector["apellidomat"]);
   
$instanciaPersona->setEstado($resultadoVector["estado"]);

   
array_push($listaPersonas,$instanciaPersona);

  }

echo 
"antes de entrar al while";

session_start();  //esta es la linea 87




$_SESSION['ListaPersonas']=$listaPersonas;

header("Location: BusquedaUsuario.php?Busquedarealizada=Si"); //esta es la linea 94 



?>

Y los errores que me salen cuando llego a esta pagina son estos:


Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Archivos de programa\Apache Group\Apache2\htdocs\Proyecto\logicaUsuario.php:3) in C:\Archivos de programa\Apache Group\Apache2\htdocs\Proyecto\logicaUsuario.php on line 87

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\Archivos de programa\Apache Group\Apache2\htdocs\Proyecto\logicaUsuario.php:3) in C:\Archivos de programa\Apache Group\Apache2\htdocs\Proyecto\logicaUsuario.php on line 87

Warning: Cannot modify header information - headers already sent by (output started at C:\Archivos de programa\Apache Group\Apache2\htdocs\Proyecto\logicaUsuario.php:3) in C:\Archivos de programa\Apache Group\Apache2\htdocs\Proyecto\logicaUsuario.php on line 94


Por que sucede esto?

Última edición por Jose_Luis; 06/12/2004 a las 08:17
  #2 (permalink)  
Antiguo 06/12/2004, 08:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si usas un header() que envia cabeceras HTTP al cliente .. NO puedes enviar otra salida al navegador (cliente) antes de dicha función .. en tu caso tienes un:


echo "La accion realizada fue ".$accionrealizada;

que más o menos debe corresponder con la explicación del error:
output started at C:\Archivos de programa\Apache Group\Apache2\htdocs\Proyecto\logicaUsuario.php:
3


Donde . ."Output" es la salida .. y el n° despues de tuscript.php .. es la línea que se provocó dicha salida.

Lo mismo sucede con el resto de "echo" que haces .. NO deben estar ahí .. Si los usas con fines de "debugg" (depuración) de tu aplicación .. OK, pero debes saber que no puedes usarlos ahí.

Si necesitas lanzar algún mensaje de error/exito tras la ejecución de ese script ("lógica") debes hacerlo en la página que redireccionas finalmente. De hecho ya haces algo así .. pues usas ahí una variable de control:
BusquedaUsuario.php?Busquedarealizada=Si

pero .. al usar sesiones .. podrías propagar también esa variable en la sesión y no usarla en el URL. Mas seguro, .. pues si ese "Si o NO" puede llevar a tu script "BusquedaUsuario.php" a realizar alguna otra cosa que dependa de esa varaible y su valor .. podría ser fácilmente modificable por el URL y "adulterado" su valor.

Un saludo,
  #3 (permalink)  
Antiguo 06/12/2004, 09:02
 
Fecha de Ingreso: diciembre-2004
Mensajes: 94
Antigüedad: 19 años, 4 meses
Puntos: 0
Gracias Cluster, comente todas las lineas donde pongo echo y si corrio, pero a que se debia ese otro error , en la pagina donde quiero capturar esos valores tambien pongo esto:

Código PHP:
<?
include './clasePersona.inc.php';

session_start();  //activo la sesion para capturar $_SESSION['ListaPersonas'];
$arrayUsuario=array();
$arrayUsuario=$_SESSION['ListaPersonas'];
unset (
$_SESSION['ListaPersonas']);   // hago el unset , ya no voy a usar esa variable
y lo q obtengo es :

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Archivos de programa\Apache Group\Apache2\htdocs\Proyecto\BusquedaUsuario.php: 2) in C:\Archivos de programa\Apache Group\Apache2\htdocs\Proyecto\BusquedaUsuario.php on line 20
  #4 (permalink)  
Antiguo 06/12/2004, 09:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cuando hablaba de "Salida" que no se puede enviar al navegador (cliente) antes de un header() .. tambien afecta al uso de sesiones: session_start() y al de cookies: settcookie() pues estas envian también otras cabecearas HTTP (las cookies son parete de cabeceras y las sesiones definen cookies y ajustan el "caché" del cliente también en muchos casos).

El error .. si te vuelves a fijar lo marca en la línea 2 de tu BusquedaUsuario.php .. es probable que tengas un espacio o salto de línea antes de tu primer <? .. y en el caso de archivos que llamas externos (esos "include()" .. ) revisa que estos a su vez no tengan ningún espacio ni salto de línea antes o despues de sus <? .. ?>

Un saludo,
  #5 (permalink)  
Antiguo 06/12/2004, 10:04
 
Fecha de Ingreso: diciembre-2004
Mensajes: 94
Antigüedad: 19 años, 4 meses
Puntos: 0
Gracias men, funciono perfectamente, seguire programando, dentro de poco saldre con alguna otra duda jajjajaja, gracias
  #6 (permalink)  
Antiguo 06/12/2004, 10:06
 
Fecha de Ingreso: diciembre-2004
Mensajes: 94
Antigüedad: 19 años, 4 meses
Puntos: 0
ENtonces el session_start() tiene que estar siempre en la primerita linea no????, por q si no, saldra ese mismo error
  #7 (permalink)  
Antiguo 06/12/2004, 10:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No es que necesariamente deba estar en la primera línea .. pero si antes de cualquier otra "salida" al cliente (navegador) ..

Un saludo,
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 23:06.