Foros del Web » Programando para Internet » PHP »

Problemas con header!!!

Estas en el tema de Problemas con header!!! en el foro de PHP en Foros del Web. bueno se me ha presentado este problemilla y no se que pueda ser me tiene ha de ser alguna pendejada les agradeceria una Warning: Cannot ...
  #1 (permalink)  
Antiguo 27/05/2003, 23:32
 
Fecha de Ingreso: mayo-2003
Mensajes: 7
Antigüedad: 14 años, 6 meses
Puntos: 0
Problemas con header!!!

bueno se me ha presentado este problemilla y no se que pueda ser me tiene ha de ser alguna pendejada les agradeceria una

Warning: Cannot modify header information - headers already sent by (output started at d:\nusphere\apache\htdocs\config.php:7) in d:\nusphere\apache\htdocs\autentificar.php on line 22

config.php
***********************
<?php
$dbhost = "localhost"; //Host del mysql
$dbuser = "user"; //Usuario del mysql
$dbpass = "password"; //Password del mysql
$db = "prueba"; //db donde se creará la tabla users
session_start();
?> <---7
************************


autentificar.php
************************
<?php
include('interfa.php');
include ('config.php');
inicio();
if ($aute = '1'){
$conexion = mysql_connect("$dbhost","$dbuser","$dbpass");
if (! $conexion){
echo "<h2 align='center'>ERROR: Imposible establecer conexión con el servidor</h2>";
exit;
}
mysql_select_db("$db", $conexion);
$consulta = "SELECT * FROM USUARIOS WHERE USERMAIL = '$usermail' AND USERPASS = '$userpass'";
$consulta = mysql_query($consulta,$conexion);
if($user_ok = mysql_fetch_array($consulta)){
//damos valores a las variables de la sesión
session_register('usermail');
session_register("userpass");
session_register("userlev");
$_SESSION[usermail] = $user_ok["usermail"]; //damos el nick a la variable usuario
$_SESSION[userpass] = $user_ok["userpass"]; //damos la id del user a la variable idusuario
$_SESSION[userlev] = $user_ok["userlev"]; //damos el level del user a la variable level
22----> Header("Location: login.php"); //volvemos al login donde nos saldrá nuestro menú de usuario
}else{
echo "<p>Mail ó Contraseña Erroneos</p>"
."<p align=\"center\"><a href=\"reg.php\">Registrar</a></p>"
."<p align=\"center\"><a href=\"login.php\">Login </a></p>";
}
}
fin();
?>
************************
  #2 (permalink)  
Antiguo 27/05/2003, 23:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Quitale todo los espacios o salto de línea que tengas a continuación de tu ?> o <? de todos los scripts que intervengan en tu uso de sesiones (session_start() .. principalmente ..)

No se puede enviar otras cabeceras al navegador cuando se inicia una sesión via session_start() (y lo mismo vá si usas header() por ejemplo .. Se entiende como "cabeceras" a todo HTML, Javascript .. etc (incluido un simple espacio o salto de línea ..)


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 28/05/2003, 11:39
Avatar de echevemaster  
Fecha de Ingreso: diciembre-2002
Ubicación: Carabobo, Venezuela
Mensajes: 84
Antigüedad: 15 años
Puntos: 1
Puedes hacerlo con la funcion ob_start() de PHP que hace un buffer de salida de la pagina que estas construyendo, es la única manera de enviar encabezados despues de la salida de HTML, para saber mas como hacer paginas con buffer te recomiendo que vayas a esta direccion http://www.devshed.com/Server_Side/PHP/OutputBuffering
  #4 (permalink)  
Antiguo 28/05/2003, 14:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Yo siempre recomiendo que se estructure el código correctamente y en consecuencia si se usa header() o session_start() o setcookie() .. (funciones que no aceptan envio de cabeceras al navegador previamente ..).

Creo que usar ob_start() y afines sobrecargas a PHP para un trabajo que lo deberíamos de resolver los programadores con buena estructura del código .. (he de ahí que por mi parte nunca la recomiendo para "tapar" un error de estructura de scripts que usen header() o las funciones citadas ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 29/05/2003, 00:58
 
Fecha de Ingreso: mayo-2003
Mensajes: 7
Antigüedad: 14 años, 6 meses
Puntos: 0
si men yo te entiendo yo soy fanatico de una buena estructuracion


mi pregunta seria entonces....

como cambio de pagina sin utilizar el header('location: pagina.php')

la verdad apenas estoy cachareando esto y me estoy basando en documentos que encuentro en la red tengo que entregar auna pagina que permita conexiones a mysql y consultas y verificar que los datos esten bien por ejemplo que el correo este bien escrito y cosas asi

tendras un ejemplo con esas caracteristicas que me puedas pasar para mirarlo...??



les agradesco cualquier ayuda....
  #6 (permalink)  
Antiguo 29/05/2003, 10:48
Avatar de echevemaster  
Fecha de Ingreso: diciembre-2002
Ubicación: Carabobo, Venezuela
Mensajes: 84
Antigüedad: 15 años
Puntos: 1
con un simple Javascript
<SCRIPT>document.location.href="pagina.php";</SCRIPT>
  #7 (permalink)  
Antiguo 29/05/2003, 13:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
echevemaster

Se trata de usar PHP (header("location ....") ) .. No alternativas HTML (<head>) o javascript ... Pero esto requiere de que se estructure el código correctamente.

cheval

En tu caso el problema es simplemente de espacios en tu config.php .. despues de tu último ?> tienes algun salto de línea o espacios .. Quitaselos.

Sobre lo de estructurar se refiere a .. ejemplo:

Código PHP:
<html>
<head>
</head>
<body>
<?
if (tal cosa){
  
header("location: ....");
  exit;
}

echo 
"Hola mundo ..";
?>
</body>
</html>
Eso no sería correcto.

Teniendo en cuenta como trabaja PHP (genera el HTML en el servidor según tu lógica y lo que resulte es enviado al navegador para que este interprete su parte (HTML/javascript . .etc ..):

Código PHP:
<?
if (tal cosa){
  
header("location: ....");
  exit;
}
?>

<html>
<head>
</head>
<body>
<?

echo "Hola mundo ..";
?>
</body>
</html>
Si te das cuenta en la "lógica" .. si el condicional (con tus variables PHP) se cumple .. redireccionas a otra página y por ende se supone que no quieres seguir interpretando el resto de la página (por eso el exit; .. ) si la condicion no se cumple .. se interpreta el resto de código (con HTML y PHP incrustado si es necesario ..)

El ejemplo es muy básico .. pero creo que ilustrativo .. Mucha gente tiende a poner "PHP" entre el <body> y .. </body> HTML .. Esa forma de trabajar con PHP es como si trabajases en HTML con "un pco" de PHP .. y no pensando en que PHP es lo primero que se ejecuta en el servidor al pedir tu pagina.php y luego el HTML que resulte es lo que intepretará tu navegador ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 29/05/2003, 19:52
 
Fecha de Ingreso: mayo-2003
Mensajes: 7
Antigüedad: 14 años, 6 meses
Puntos: 0
gracias men el ob_start() me hiso trabajar la pagina.

en realidad nose a que se deba esto no estoy utilisando casi codigo html o script ya que la gracia es que se estas en php seria mejor puro o para eso trabajar con html normal o script

ya mire los espacios despues del ?> pero estan limpios y en ningun archivo inicio <head> o codigo html o que se le paresca el unico codigo que utilizo es el de crear tablas form y de apariencia visual nada font y cosas asi.... de title head ni cabeceras de html.

y si men tengo asi esa verificacion del head con el if porque seria ilogico de otra forma

por ahora lo trabajare con el ob_start() mientras encuentro la falla en el codigo
  #9 (permalink)  
Antiguo 29/05/2003, 21:26
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 15 años, 3 meses
Puntos: 8
Es posible que el "session id" se este propagando por cookie, y por lo tanto se envian headers al cliente.

Me desconcierta el "output started at d:\nusphere\apache\htdocs\config.php:7"

Un saludo.
  #10 (permalink)  
Antiguo 29/05/2003, 22:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Parece que es el orden de llamada de tus "include" ..

<?php
include('interfa.php');
include ('config.php');

El "interfa.php" .. no muestras el código de este .. pero seguro que hay algo de HTML o espacios (o salto de línea ..) antes de <?

Deberías usar:

Autentificar.php
Código PHP:
<?php
include ('config.php'); // Primero el config donde inicias tu sesion_start() ...
include('interfa.php'); // Luego el resto de tus includes ...
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 30/05/2003, 15:11
 
Fecha de Ingreso: mayo-2003
Mensajes: 7
Antigüedad: 14 años, 6 meses
Puntos: 0
este es el codigo de interfa.php

<?php
include ('config.php');
//variables de la interfas
$interbackground = "imagenes/pixel.jpg";
$interstyle = "border-collapse: collapse";
$intercolor1 = "#111111";
$intercolor2 = "#FFFFFF";
$interimgsupizq = "imagenes/supizq.jpg";
$interimglatsup = "imagenes/latsup.jpg";
$interimgsupder = "imagenes/supder.jpg";
$interimglatizq = "imagenes/latizq.jpg";
$interlatder = "imagenes/latder.jpg";
$interinfizq = "imagenes/infizq.jpg";
$interlatinf = "imagenes/latinf.jpg";
$interinfder = "imagenes/infder.jpg";
function inicio() {
global $interbackground, $interstyle, $intercolor1, $interimgsupizq, $interimglatsup, $interimgsupder, $interimglatizq, $intercolor2;
echo"<body background=\"$interbackground\">";
echo"<div align='center'>";
echo"<center>";
echo"<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=$interstyle bordercolor=$intercolor1 id=\"AutoNumber1\">";
echo"<tr>";
echo"<td><img border=\"0\" src=$interimgsupizq width=\"81\" height=\"85\"></td>";
echo"<td background=$interimglatsup>&nbsp;</td>";
echo"<td><img border=\"0\" src=$interimgsupder width=\"89\" height=\"85\"></td>";
echo"</tr>";
echo"<tr>";
echo"<td background=$interimglatizq>&nbsp;</td>";
echo"<td bgcolor=$intercolor2>";
}
function fin(){
global $interlatder, $interinfizq, $interlatinf, $interinfder;
echo"<td background=$interlatder>&nbsp;</td>";
echo"</tr>";
echo"<tr>";
echo"<td><img border=\"0\" src=$interinfizq width=\"81\" height=\"94\"></td>";
echo"<td background=$interlatinf>&nbsp;</td>";
echo"<td><img border=\"0\" src=$interinfder width=\"89\" height=\"94\"></td>";
echo"</tr>";
echo"</table>";
echo"</center>";
echo"</div>";
echo"</body>";
}
?>

tengo un problemilla con este codigo no me muestra los usuarios que estan en la db
a que se debe pero si me lo recorre la cantidad de veces que existe en la db pero no me visualiza los datos

echo"<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n";
while ($user_ok = mysql_fetch_row($consulta))
{
echo"<tr> \n"
." <form action=\"autentificar.php\" method=\"POST\">";
echo '<td>'.$user_ok["usermail"].'</td>';
echo '<td>'.$user_ok["username"].'</td>';
echo '<td>'.$user_ok["userocu"].'</td>';
echo"<td><input type=submit value=\"Ver\"></td>"
."</form>"
."</tr> \n";
}
echo"</table>";

Última edición por cheval; 30/05/2003 a las 15:11
  #12 (permalink)  
Antiguo 30/05/2003, 15:39
Avatar de echevemaster  
Fecha de Ingreso: diciembre-2002
Ubicación: Carabobo, Venezuela
Mensajes: 84
Antigüedad: 15 años
Puntos: 1
Cita:
secho"<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n";
while ($user_ok = mysql_fetch_row($consulta))
{
echo"<tr> \n"
." <form action=\"autentificar.php\" method=\"POST\">";
echo '<td>'.$user_ok["usermail"].'</td>';
echo '<td>'.$user_ok["username"].'</td>';
echo '<td>'.$user_ok["userocu"].'</td>';
echo"<td><input type=submit value=\"Ver\"></td>"
."</form>"
."</tr> \n";
}
echo"</table>";
Porque no intentas con:
Código PHP:
while ($user_ok=mysql_fetch_object($consulta))
{
echo 
"
<form action=\"autentificar.php\" method=\"POST\">
<td>$user_ok->usermail</td>
<td>$user_ok->username</td>
<td>$user_ok->userocu</td>
<td><input type=\"submit\" value=\"Ver\"></td>
</form>
</tr>"

Nos vemos
  #13 (permalink)  
Antiguo 30/05/2003, 16:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
cheval ..

¿Pero probastes el intercambio de orden de tus include() como te mencioné mas arriba? ...

Si tienes problemas con otra cosa que no sea ya los "header()" .. Publica una nueva pregunta.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 31/05/2003, 00:05
 
Fecha de Ingreso: mayo-2003
Mensajes: 7
Antigüedad: 14 años, 6 meses
Puntos: 0
en cuanto a mi ultima pregunta ya encontre porque no me salia ningun dato..

************
echo"<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n";
while ($user_ok = mysql_fetch_row($consulta))
{
echo"<tr> \n"
." <form action=\"autentificar.php\" method=\"POST\">";
echo '<td>'.$user_ok["usermail"].'</td>';
echo '<td>'.$user_ok["username"].'</td>';
echo '<td>'.$user_ok["userocu"].'</td>';
echo"<td><input type=submit value=\"Ver\"></td>"
."</form>"
."</tr> \n";
}
echo"</table>";
*********



modificacion
***********
cambie
mysql_fetch_row(....
por
mysql_fetch_array(....

y se arreglo todo... gracias...
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 15:57.