Foros del Web » Programando para Internet » PHP »

xajax error: ouput has already been sent

Estas en el tema de xajax error: ouput has already been sent en el foro de PHP en Foros del Web. Hola amigos del foro, paso por aqui en busca de iluminación, les cuento lo siguiente: estoy trabajando en una pequeña aplicación desarrollada con XAJAX la ...
  #1 (permalink)  
Antiguo 28/10/2011, 14:05
Avatar de Jandor  
Fecha de Ingreso: septiembre-2009
Mensajes: 71
Antigüedad: 14 años, 7 meses
Puntos: 1
Pregunta xajax error: ouput has already been sent

Hola amigos del foro, paso por aqui en busca de iluminación, les cuento lo siguiente:
estoy trabajando en una pequeña aplicación desarrollada con XAJAX la cual esta elaborada de esta forma:
  • Clase mysql
  • Clase de funciones de consulta (hereda la clase mysql)
  • Clase de funciones xajax (hereda funciones)

Este es el arbol de mi aplicación, primero tengo la clases de mysql que realiza la conexion, luego la clase funciones (que contiene todas las consultas de la BD) hereda todos los metodos de clase mysql, y por ultimo la clase funciones XAJAX (aqui pongo todos las funciones de xajax) hereda todos los metodos de funciones y por ende los de mysql.

El problema es el siguiente cuando yo subo mi aplicación a la web, me sale este error Output has already been sent to the browser at /home/web/public_html/siec/dashboard.php:1. Please make sure the command $xajax->processRequest() is placed before this..

Dicho error jamas aparece cuando la veo desde un servidor Apache local, solo cuando lo suba a un server en la web, he probado todo lo que he leido en distintos foros (que no debe de haber espacios antes del contenido html, que no debe de haber ningun contenido html antes de poner la clase).

Si alguien puede decirme cual es el error se lo agradeceria, dejo parte del codigo para que me entiendan.


CLASE MYSQL
Código PHP:
//CLASE DE MYSQL
    
class mysql
    
{
        private 
$conectar;  
          private 
$total_consultas;
        
        
//CONSTRUCTOR PARA CONECTAR A BASE DE DATOS
        
public function mysql()
        {
            
//config
            
include_once("config_inc.php");    //sacando datos de configuración para servidor
    
            
$this->servidor=HOST;
            
$this->usuario=USER;
            
$this->password=PASS;
            
$this->base_datos=DB;
        
            if(!isset(
$this->conectar)){  
                
$this->conectar = (mysql_connect($this->servidor,$this->usuario,$this->password)) or die(mysql_error());  
                
mysql_select_db($this->base_datos,$this->conectar) or die(mysql_error());  
            }
        }

...... 
hay otras funciones abajo



CLASE DE FUNCIONES

Código PHP:
//clase padre
    
include_once("class_mysql_inc.php");
    
    
//CLASE DE FUNCIONES GENERALES
    
class funciones extends mysql
    
{
        public 
$logia_nombre$logia_logo$logia_id;
        public 
$numero_trazado$numero_trazado_letras;
        
        
//--------------------------------------------------------------------------------------------------
        
public function extraer_trazados()
        {
$consulta $this->consulta("SELECT * FROM tbl_trazados ORDER BY id ASC");
            while(
$resultado $this->recorrer($consulta))
            {
                
$trazados .= '<div id="ficha">
                      <div class="numero">Trazado N°: '
.$resultado["numero_cifras"].'</div>
                      <div class="datos">Periodo: '
.$resultado["periodo"].'</div>
                      <div class="datos">Tenida: '
.$this->extraer_tipo_trazado($resultado["trazados_tipo_id"]).'</div>
                      
                      <div class="fecha">Fecha de creación: <br /> '
.$resultado["ingreso_fecha"].'</div>
                      
                      <a href="includes/ver_trazado.php?idem='
.$resultado["id"].'" class="operaciones window-info">
                      <img src="images/icon-ver.png" alt="ver" title="ver"/>
                      </a>'
;
                      
                      
$trazados .= "
                      <a href='javascript:;' onclick=\"borrar_trazado('"
.$resultado["id"]."', '".$resultado["numero_cifras"]."', '".$this->extraer_tipo_trazado($resultado["trazados_tipo_id"])."');\" class='operaciones'>
                      <img src='images/icon-eliminar.png' alt='eliminar' title='eliminar'/>
                      </a>
              
                      </div>"
;
            }
            
            return 
$trazados;
        }

...... 
hay otras funciones abajo



CLASE XAJAX FUNCIONES

Código PHP:
//clase padre
    
include_once("class_funciones_inc.php");

    
// CLASE DE XAJAX
    
class procesos extends funciones
    
{
        private 
$xajax;
        public 
$xajax_js;
        
        
//----------------------------------------------------------------------------------------------------------------------
        //INICIANDO XAJAX
        
public function iniciar_xajax()
        {
            
//xajax
            
require_once("xajax/xajax_core/xajax.inc.php");
            
$this->xajax = new xajax();
             
            
//registro de funciones
            
$this->xajax->register(XAJAX_FUNCTION, array('colocar_usuario_logia'$this'colocar_usuario_logia'));
            
$this->xajax->register(XAJAX_FUNCTION, array('verificar_cuadro'$this'verificar_cuadro') );
            
$this->xajax->register(XAJAX_FUNCTION, array('agregar_campo_puestos'$this'agregar_campo_puestos'));
            
$this->xajax->register(XAJAX_FUNCTION, array('agregar_campo_visitantes'$this'agregar_campo_visitantes'));
            
$this->xajax->register(XAJAX_FUNCTION, array('agregar_campo_disculpados'$this'agregar_campo_disculpados'));
            
$this->xajax->register(XAJAX_FUNCTION, array('agregar_campo_planchas'$this'agregar_campo_planchas'));
            
$this->xajax->register(XAJAX_FUNCTION, array('preview'$this'preview'));
            
            
$this->xajax->processRequest();
            
$this->xajax_js $this->xajax->getJavascript('includes/xajax/');
            
            
//$this->xajax->setFlags(array('debug'=>true,'outputEntities'=>true));
        
}

...... 
hay otras funciones abajo

y por ultmio la pagina que llama todo:

DASHBOARD
Código PHP:
<?php
    session_start
();
    if(
$_SESSION["autorizado"] != ""){
        
$id $_SESSION["autorizado"]["logia"];
        
        include_once(
"includes/class_funciones_xajax_inc.php");
        
$metod= new procesos();
        
$metod->iniciar_xajax();
        
        
//iniciando
        
$metod->logia(0$id);
        
$metod->extraer_numero_trazado($id);
        
        
//variables
        
$logias_id $metod->logia_id;
        
$logias_logo $metod->logia_logo;
        
$logias_nombre $metod->logia_nombre;
        
$numero_trazado $metod->numero_trazado;
        
$numero_trazado_letras $metod->numero_trazado_letras;
    }
    else{
        
header("location: index.php");
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- title -->
<title>MODEL</title>

<!-- css -->
<link rel="stylesheet" rev="general" type="text/css" href="general.css" />
<link rel="stylesheet" rev="detalle" type="text/css" href="detalle.css" />

<!-- xajax js -->
<?php  echo $siec->xajax_js?>

<!-- js -->
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.easing.js"></script>
<script type="text/javascript" src="js/colorbox/jquery.colorbox.js"></script>

<script type="text/javascript" src="js/general.js"></script>

</head>

<body>

.. aqui van contenido HTML + funciones de las clases --

</body>
</html>
aqui como he hecho, espero exista una salida!!!
  #2 (permalink)  
Antiguo 28/10/2011, 14:09
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: xajax error: ouput has already been sent

Error clásico, solución ya documentada:
¿Por qué me sale "Warning: Cannot modify header information - headers already sent by (output started at 1:2) in 3 on line 4"?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 28/10/2011, 14:28
Avatar de Jandor  
Fecha de Ingreso: septiembre-2009
Mensajes: 71
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: xajax error: ouput has already been sent

Gracias por tu comentario, y si ya es algo que probe y revise pero lastimosamente, no me sirve aun!!! he revisado en cada una de las clases y no hay no texto, no contenido HTML, ni espacios en blanco.

Se supone que el error, este en particular me lo tira XAJAX, es por eso que dice que Please make sure the command $xajax->processRequest() is placed before this. porque se supone que la ubicación del metodo processRequest de xajax esta mal ubicado. Pero ya probe y lo reubique primero que todo, y nada de nada.
  #4 (permalink)  
Antiguo 28/10/2011, 14:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: xajax error: ouput has already been sent

El mensaje de error completo, como se dice en dicho enlace es la clave.

¿Serías tan amable de mostrar el mensaje completo o como le hacemos?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 28/10/2011, 14:44
Avatar de Jandor  
Fecha de Ingreso: septiembre-2009
Mensajes: 71
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: xajax error: ouput has already been sent

Cita:
Iniciado por pateketrueke Ver Mensaje
El mensaje de error completo, como se dice en dicho enlace es la clave.

¿Serías tan amable de mostrar el mensaje completo o como le hacemos?
este es el mensaje completo:
Output has already been sent to the browser at /home/model/public_html/siec/dashboard.php:1. Please make sure the command $xajax->processRequest() is placed before this.
  #6 (permalink)  
Antiguo 28/10/2011, 15:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: xajax error: ouput has already been sent

Pues ahí dice que el archivo /home/model/public_html/siec/dashboard.php en la linea 1 está haciendo algo que produce la salida.

Me pregunto que habrá ahí.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 28/10/2011, 15:34
Avatar de Jandor  
Fecha de Ingreso: septiembre-2009
Mensajes: 71
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: xajax error: ouput has already been sent

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues ahí dice que el archivo /home/model/public_html/siec/dashboard.php en la linea 1 está haciendo algo que produce la salida.

Me pregunto que habrá ahí.
pues es esto:

Código PHP:
<?php
    session_start
();
    if(
$_SESSION["autorizado"] != ""){
        
$id $_SESSION["autorizado"]["logia"];
        
        include_once(
"includes/class_funciones_xajax_inc.php");
        
$metod= new procesos();
        
$metod->iniciar_xajax();
        
        
//iniciando
        
$metod->logia(0$id);
        
$metod->extraer_numero_trazado($id);
        
        
//variables
        
$logias_id $metod->logia_id;
        
$logias_logo $metod->logia_logo;
        
$logias_nombre $metod->logia_nombre;
        
$numero_trazado $metod->numero_trazado;
        
$numero_trazado_letras $metod->numero_trazado_letras;
    }
    else{
        
header("location: index.php");
    }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- title -->
<title>MODEL</title>

<!-- css -->
<link rel="stylesheet" rev="general" type="text/css" href="general.css" />
<link rel="stylesheet" rev="detalle" type="text/css" href="detalle.css" />

<!-- xajax js -->
<?php  echo $siec->xajax_js?>

<!-- js -->
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.easing.js"></script>
<script type="text/javascript" src="js/colorbox/jquery.colorbox.js"></script>

<script type="text/javascript" src="js/general.js"></script>

</head>

<body>

.. aqui van contenido HTML + funciones de las clases --

</body>
</html>
  #8 (permalink)  
Antiguo 28/10/2011, 15:40
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: xajax error: ouput has already been sent

Excelente, es bueno tener parte del contexto.

Ahora, ¿en que código está la instrucción $xajax->processRequest()?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 28/10/2011, 15:43
Avatar de Jandor  
Fecha de Ingreso: septiembre-2009
Mensajes: 71
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: xajax error: ouput has already been sent

Cita:
Iniciado por pateketrueke Ver Mensaje
Excelente, es bueno tener parte del contexto.

Ahora, ¿en que código está la instrucción $xajax->processRequest()?
eso esta en la clase de funciones xajax:

Código PHP:
<?php
    
//clase padre
    
require_once("class_funciones_inc.php");

    
// CLASE DE XAJAX
    
class procesos extends funciones
    
{
        private 
$xajax;
        public 
$xajax_js;
        
        
//----------------------------------------------------------------------------------------------------------------------
        //INICIANDO XAJAX
        
public function iniciar_xajax()
        {
            
//xajax
            
require_once("xajax/xajax_core/xajax.inc.php");
            
$this->xajax = new xajax();
             
            
//registro de funciones
            
$this->xajax->register(XAJAX_FUNCTION, array('colocar_usuario_logia'$this'colocar_usuario_logia'));
            
$this->xajax->register(XAJAX_FUNCTION, array('verificar_cuadro'$this'verificar_cuadro') );
            
$this->xajax->register(XAJAX_FUNCTION, array('agregar_campo_puestos'$this'agregar_campo_puestos'));
            
$this->xajax->register(XAJAX_FUNCTION, array('agregar_campo_visitantes'$this'agregar_campo_visitantes'));
            
$this->xajax->register(XAJAX_FUNCTION, array('agregar_campo_disculpados'$this'agregar_campo_disculpados'));
            
$this->xajax->register(XAJAX_FUNCTION, array('agregar_campo_planchas'$this'agregar_campo_planchas'));
            
$this->xajax->register(XAJAX_FUNCTION, array('preview'$this'preview'));
            
            
$this->xajax->processRequest();
            
$this->xajax_js $this->xajax->getJavascript('includes/xajax/');
            
            
//$this->xajax->setFlags(array('debug'=>true,'outputEntities'=>true));
        
}

... 
hay otro codigo abajo

}
  #10 (permalink)  
Antiguo 28/10/2011, 15:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: xajax error: ouput has already been sent

Excelente, ahora se entiende mejor.

Estoy intentando adivinar, pero todos los scripts que incluyes antes de ejecutar la linea de $this->xajax->processRequest(); deben terminar con un ?>

¿Verdad?

Bueno, entonces tu problema tiene fácil solución.

Normalmente después del último ?> de nuestros scripts se suele esconder un salto de linea, ya sea intencional o que se agregue por el editor de texto.

De cualquier forma es recomendación general que, si el script contiene únicamente código php entonces se omita el ?> de todo script que así se encuentre.

Haz la prueba y nos dices.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 28/10/2011, 16:07
Avatar de Jandor  
Fecha de Ingreso: septiembre-2009
Mensajes: 71
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: xajax error: ouput has already been sent

Cita:
Iniciado por pateketrueke Ver Mensaje
Excelente, ahora se entiende mejor.

Estoy intentando adivinar, pero todos los scripts que incluyes antes de ejecutar la linea de $this->xajax->processRequest(); deben terminar con un ?>

¿Verdad?

Bueno, entonces tu problema tiene fácil solución.

Normalmente después del último ?> de nuestros scripts se suele esconder un salto de linea, ya sea intencional o que se agregue por el editor de texto.

De cualquier forma es recomendación general que, si el script contiene únicamente código php entonces se omita el ?> de todo script que así se encuentre.

Haz la prueba y nos dices.
ya los quite, pero el problema persiste, que otra cosa podria ser, ya he probado de todo, hasta he cambiado las clases para ver si no he puesto nada como codigo basura!!! pero aun asi nada de nada

Última edición por Jandor; 28/10/2011 a las 16:20
  #12 (permalink)  
Antiguo 28/10/2011, 16:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: xajax error: ouput has already been sent

¿El mensaje de error sigue siendo exactamente el mismo?

Entonces podría ser problema de la configuración del servidor donde subes los scripts.

¿Que servicio de hosting estás usando?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 28/10/2011, 16:25
Avatar de Jandor  
Fecha de Ingreso: septiembre-2009
Mensajes: 71
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: xajax error: ouput has already been sent

Cita:
Iniciado por pateketrueke Ver Mensaje
¿El mensaje de error sigue siendo exactamente el mismo?

Entonces podría ser problema de la configuración del servidor donde subes los scripts.

¿Que servicio de hosting estás usando?
Pues es un servidor Apache versión 2.2.17 y con PHP versión 5.3.5 y el error sigue siendo el mismo!!!
  #14 (permalink)  
Antiguo 28/10/2011, 16:28
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: xajax error: ouput has already been sent

Me refiero al servicio de hosting, no a la tecnología.

¿Es VPS, dedicado, gratuito o bizarro?

Lo pregunto porque es posible que una configuración del php.ini puede estar provocando dichos conflictos, intenta hacer un phpinfo() en tu servidor local y compara las configuración con el servidor remoto a ver que sale.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #15 (permalink)  
Antiguo 28/10/2011, 16:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: xajax error: ouput has already been sent

Revisa esta FAQ: http://www.forosdelweb.com/wiki/PHP:...lready_sent%3F

Saludos.
  #16 (permalink)  
Antiguo 28/10/2011, 16:31
Avatar de Jandor  
Fecha de Ingreso: septiembre-2009
Mensajes: 71
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: xajax error: ouput has already been sent

Cita:
Iniciado por pateketrueke Ver Mensaje
Me refiero al servicio de hosting, no a la tecnología.

¿Es VPS, dedicado, gratuito o bizarro?

Lo pregunto porque es posible que una configuración del php.ini puede estar provocando dichos conflictos, intenta hacer un phpinfo() en tu servidor local y compara las configuración con el servidor remoto a ver que sale.
a perdon hay terminos que aun les doy vuelta y me confundo... jajajajajajaja pues como te digo es un servidor dedicado, probare los del phpinfo para ver... gracias por tu tiempo!!!
  #17 (permalink)  
Antiguo 28/10/2011, 16:59
Avatar de Jandor  
Fecha de Ingreso: septiembre-2009
Mensajes: 71
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: xajax error: ouput has already been sent

Cita:
Iniciado por GatorV Ver Mensaje
GatorV, pateketrueke, muchas gracias a ambos y GatorV al leer este faq aprendi algo nuevo y pude solucionar el problema, efectivamente lo que sucedia es que los archivos se estaban trabajando bajo codificación ANSI, creo que es lo que trae por defecto NOTEPAD++, normalmente trabajo con DREAMWEAVER y esto nunca me habia pasado, pero ahora que me decido por usar NOTEPAD++ me pasa, pero lo resolvi creando los archivos desde DREAMWEAVER por ahorita

Etiquetas: html, mysql, registro, sql, xajax, variables, usuarios
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 09:23.