Foros del Web » Programando para Internet » PHP »

Warning: Cannot modify header information - headers already sent by (output started a

Estas en el tema de Warning: Cannot modify header information - headers already sent by (output started a en el foro de PHP en Foros del Web. Saludos compañeros, estoy creando un pequeño CMS para administrar una galería de imagenes. Todo estaba trabajando perfectamente en mi servidor local y en un servidor ...
  #1 (permalink)  
Antiguo 04/08/2012, 11:42
Avatar de javiandgo  
Fecha de Ingreso: septiembre-2010
Ubicación: Cumaral-Meta, Colombia
Mensajes: 457
Antigüedad: 14 años, 3 meses
Puntos: 55
Warning: Cannot modify header information - headers already sent by (output started a

Saludos compañeros, estoy creando un pequeño CMS para administrar una galería de imagenes. Todo estaba trabajando perfectamente en mi servidor local y en un servidor en linea de pruebas, sin emabrgo, al migrar el proyecto a otro servidor me empezo a generar el siguiente error:

Warning: Cannot modify header information - headers already sent by (output started at /home/amhconst/public_html/amh/admin/admin-header.php:26) in /home/amhconst/public_html/amh/admin/settings.php on line 45

Verifique en todos los archivos relacionados que no existieran espacios al final e inicio de las sentencias php, a pesar de esto continua generando el error. Si alguno tiene una idea de como puedo solucionarlo les agradeceria.

settings.php

Código PHP:
Ver original
  1. <?php
  2. $action = '';
  3. include ('../loader.php');
  4. require_once (JMPATH . 'jm-config.php');
  5. require_once ('functions.php');
  6. JM_ADMIN_INI();
  7. ?>
  8. <?php admin_header(); ?>
  9.  
  10. <section id="content">
  11.     <div class="wrapper">
  12.         <?php jm_menu(); ?>
  13.         <div id="wrap-content" class="wrap">
  14. <?php
  15.     if(empty($_GET["update"])) {
  16.                 $update = 1;
  17.             } else {
  18.                 $update = $_GET["update"];
  19.             }
  20.        
  21.         if($update == 'true') echo '<div class="success-box">Ajustes guardados correctamente.</div>';
  22. ?>
  23. <?php
  24. open_connect(); general_settings();
  25. if(isset($_POST['Submit'])) {
  26.  
  27. $modify = array (
  28.     'site_name'=>$_POST['site_name'],
  29.     'site_description'=>$_POST['site_desc'],
  30.     'site_keywords'=>$_POST['site_keywords'],
  31.     'copyright'=>$_POST['site_copy'],
  32.     'site_email'=>$_POST['site_email'],
  33.     'phone'=>$_POST['site_phone'],
  34.     'movil'=>$_POST['site_movil'],
  35.     'address'=>$_POST['site_address']
  36. );
  37.  
  38. foreach($modify as $setname=>$value){
  39.      mysql_query("UPDATE settings SET set_value='$value' WHERE set_name='$setname'");
  40. }
  41. header('refresh:1;url=settings.php?update=true');
  42. }
  43. ?>
  44. <form class="settings" method="post">
  45.     <div class="module">
  46.         <h3 class="site"><span>Opciones Generales</span></h3>
  47.         <div class="mods">
  48.                 <div>
  49.                     <label>Nombre del sitio:</label>
  50.                     <input type="text" name="site_name" value="<?php echo sitename; ?>">
  51.                 </div>
  52.                 <div>
  53.                     <label>Descripción corta:</label>
  54.                     <textarea name="site_desc"><?php echo sitedesc; ?></textarea>
  55.                 </div>
  56.                 <div>
  57.                     <label>Palabras clave:</label>
  58.                     <textarea name="site_keywords"><?php echo keys; ?></textarea>
  59.                 </div>
  60.                 <div>
  61.                     <label>Copyright:</label>
  62.                     <input type="text" name="site_copy" value="<?php echo copyr; ?>">
  63.                 </div>
  64.         </div>
  65.     </div>
  66.    
  67.     <div class="module">
  68.         <h3 class="proyect"><span>Contacto</span></h3>
  69.         <div class="mods">
  70.                 <div>
  71.                     <label>E-mail:</label>
  72.                     <input type="text" name="site_email" value="<?php echo siteemail; ?>">
  73.                 </div>
  74.                 <div>
  75.                     <label>Telefono:</label>
  76.                     <input type="text" name="site_phone" value="<?php echo phone; ?>">
  77.                 </div>
  78.                 <div>
  79.                     <label>Celular:</label>
  80.                     <input type="text" name="site_movil" value="<?php echo movil; ?>">
  81.                 </div>
  82.                 <div>
  83.                     <label>Dirección:</label>
  84.                     <textarea name="site_address"><?php echo address; ?></textarea>
  85.                 </div>
  86.         </div>
  87.     </div>
  88.  
  89.    
  90.     <div class="module">
  91.         <h3 class="gallery"><span>Social Media</span> --No activado--</h3>
  92.         <div class="mods">
  93.                 <div>
  94.                     <label>Facebook:</label>
  95.                     <input name="facebook" type="text" disabled>
  96.                 </div>
  97.                 <div>
  98.                     <label>Twitter:</label>
  99.                     <input name="twitter" type="text" disabled>
  100.                 </div>
  101.        
  102.         </div>             
  103.     </div>
  104.     <input class="submit bottom" type="submit" name="Submit" value="Guardar cambios">
  105. </form>
  106.         </div>
  107.         <div class="clearfix"></div>
  108.     </div>
  109. </section>
  110.  
  111. <?php close_connect(); admin_footer(); ?>

admin-header.php

Código PHP:
Ver original
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Administrador</title>
  6. <link rel="stylesheet" type="text/css" href="css/cpanel.css">
  7. <!--[if IE]>
  8.     <link rel="stylesheet" type="text/css" href="css/all-ie-only.css" />
  9. <![endif]-->
  10. <link rel="stylesheet" type="text/css" href="css/media.css">
  11. <link rel="stylesheet" type="text/css" href="css/normalize.css">
  12. <link rel="stylesheet" type="text/css" href="css/style-elements.css">
  13. <link href="css/skins/grey.css" rel="stylesheet" type="text/css" />
  14. <link href="css/dcaccordion.css" rel="stylesheet" type="text/css" />
  15. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  16. <script type='text/javascript' src='js/jquery.cookie.js'></script>
  17. <script type='text/javascript' src='js/jquery.hoverIntent.minified.js'></script>
  18. <script type='text/javascript' src='js/jquery.dcjqaccordion.2.7.min.js'></script>
  19. <script type='text/javascript' src='js/custom.js'></script>
  20. <script type='text/javascript' src='js/modernizr-2.5.3.min.js'></script>
  21. </head>
  22.  
  23. <body>
  24. <header>
  25.     <div class="wrapper">
  26.         <div id="login-admin">Hola, <a href="profile.php"><?php echo $_SESSION["name"] ?></a> <a href="logout.php">Cerrar sesión</a> <a class="bottom2" href="../index.php">Ver el sitio</a></div>
  27.         <div class="log_jango">Jango Panel</div>
  28.         <div class="breadcrumb"><h4>Administración del sitio</h4></div>        
  29.     </div>
  30. </header>
  #2 (permalink)  
Antiguo 04/08/2012, 12:01
Avatar de javiandgo  
Fecha de Ingreso: septiembre-2010
Ubicación: Cumaral-Meta, Colombia
Mensajes: 457
Antigüedad: 14 años, 3 meses
Puntos: 55
Respuesta: Warning: Cannot modify header information - headers already sent by (outpu

Solucionado :p
  #3 (permalink)  
Antiguo 04/08/2012, 12:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Warning: Cannot modify header information - headers already sent by (outpu

Pero si el problema no son solo los espacios, ¡es todo el html que imprimes antes de usar header()!

Por favor lee esto: http://www.forosdelweb.com/wiki/PHP:...n_line_4%22%3F
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 04/08/2012, 12:35
Avatar de javiandgo  
Fecha de Ingreso: septiembre-2010
Ubicación: Cumaral-Meta, Colombia
Mensajes: 457
Antigüedad: 14 años, 3 meses
Puntos: 55
Respuesta: Warning: Cannot modify header information - headers already sent by (outpu

si pateketrueke, ya leí ese y el otro enlace relacionado con lo función header del php, de hecho moví la sentencia header antes de la impresión del admin-header y funciono correctamente. La cuestión es que necesito realizar esas redirecciones para poder pasar las variables al navegador y me identifique los mensajes de comprobación.

Lamentablemente tengo otros archivos que también realizan redirecciones empleando header() y generan el mismo error. En este momento estoy intentando buscar una solución de redirección mediante javascript pero tengo problemas al mezclar el php con el javascript

Desconozco si hay una forma diferente para pasar variable al navegador mediante GET diferente a las redirecciones header()
  #5 (permalink)  
Antiguo 04/08/2012, 13:18
Avatar de javiandgo  
Fecha de Ingreso: septiembre-2010
Ubicación: Cumaral-Meta, Colombia
Mensajes: 457
Antigüedad: 14 años, 3 meses
Puntos: 55
Respuesta: Warning: Cannot modify header information - headers already sent by (outpu

Wow!!! un -1 en el tema jejeje eso es nuevo... Sería bueno por lo menos ver el ¿porque?.

1. El tema no gusta
2. Mi actitud no fue la adecuada...??

Haber recibo más votos jejejeje

Por otro lado...

Estoy intentado hacer las redirecciones y pasar las variables mediante esta sentecia javascript

Código PHP:
Ver original
  1. // Realiza la dirección automática y cumple con la función pero la carga es muy rápida y no me llama la atención como se ve.
  2. echo '  <script type="text/javascript">window.location="settings.php?update=true";</script>';
  3.  
  4. // Aquí intento agregarle tiempo pero no funciona :P
  5.  
  6. echo '  <script type="text/javascript">setTimeout("window.location="settings.php?update=true",1000);</script>';

Solucionado Redirección con JavaScript y el tiempo, habia que agregarle el Funtion() :P

Código PHP:
Ver original
  1. echo '<script type="text/javascript">setTimeout(function(){window.location="settings.php?update=true"},1000);</script>';

Última edición por javiandgo; 04/08/2012 a las 13:50
  #6 (permalink)  
Antiguo 04/08/2012, 14:05
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: Warning: Cannot modify header information - headers already sent by (outpu

1. Antes de abrir el tema debiste buscar en las FAQ's y Wiki para no duplicar.
2. Evidentemente la solución con Javascript no es la ideal, lo correcto sería corregir la posición y flujo de los scripts que usan header().
3. No me gustó el tema por el punto 1 inicialmente, ahora gracias al punto 2 me doy cuenta que el tema no aporta nada nuevo.
4. Gracias por participar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 04/08/2012, 14:50
Avatar de javiandgo  
Fecha de Ingreso: septiembre-2010
Ubicación: Cumaral-Meta, Colombia
Mensajes: 457
Antigüedad: 14 años, 3 meses
Puntos: 55
Respuesta: Warning: Cannot modify header information - headers already sent by (outpu

Cita:
Iniciado por pateketrueke Ver Mensaje
1. Antes de abrir el tema debiste buscar en las FAQ's y Wiki para no duplicar.
2. Evidentemente la solución con Javascript no es la ideal, lo correcto sería corregir la posición y flujo de los scripts que usan header().
3. No me gustó el tema por el punto 1 inicialmente, ahora gracias al punto 2 me doy cuenta que el tema no aporta nada nuevo.
4. Gracias por participar.
Respondo:
1. Busque las FAQs y en la WIKI y tenia conocimiento de la función header() basado en ellas. Igual queda duplicado. Disculpas por eso!

2. El corregir el flujo de las llamadas al header() me implicaria corregir completamente el documento y duplicar sentecias de tipo If ya que los header eran llamados desde dichas ubicaciones al enviar un formulario. Con la dirección paso las variables mediante GET al navegador sobre confirmación y error por lo tanto deberia generar un If(error) y un If(valido) sin contar que son mas variables a las que hago paso mediante las redirecciones.

3. Posiblemente el tema no aporte nada nuevo en PHP o directamente al Tema en cuestión, sin embargo, la solución dada a mi problema me ha dado buen resultado, puede que a alguien también pueda serle de utilidad.

4. Gracias a ti por responder , de una u otra forma es bueno saber que en la vida siempre habrá una persona que te de una Respuesta aunque no siempre la Solución.

Etiquetas: header, headers, html, imagenes, information, modify, mysql, output, warning
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 00:56.