Foros del Web » Programando para Internet » PHP »

Problema con header (location) y una dudita mas

Estas en el tema de Problema con header (location) y una dudita mas en el foro de PHP en Foros del Web. Código: $url="http://localhost:9090/php/MenuMedico.php"; if($row[3] == "Medico"){ header("Location : ".$url); y me da este error Warning: Cannot modify header information - headers already sent by (output started ...
  #1 (permalink)  
Antiguo 23/05/2005, 03:08
 
Fecha de Ingreso: mayo-2005
Mensajes: 423
Antigüedad: 19 años, 6 meses
Puntos: 1
Problema con header (location) y una dudita mas

Código:
 $url="http://localhost:9090/php/MenuMedico.php";
if($row[3] == "Medico"){
header("Location : ".$url);
y me da este error
Warning: Cannot modify header information - headers already sent by (output started at C:\Archivos de programa\Apache Group\Apache2\htdocs\php\Index.php:8) in C:\Archivos de programa\Apache Group\Apache2\htdocs\php\Index.php on line 58

con respecto a la otra duda en vez de hacer el acceso ala base de datos en la propia ventana crearme una clase BDUsuarios y y alliun constructor y sus metodos???

saludso y gracias
  #2 (permalink)  
Antiguo 23/05/2005, 03:11
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
El error es porque estás teniendo una salida (mandas a imprimir algo) antes de usar la función header(), eso no puede ser...

La segunda duda... ¿qué dices?? .

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 23/05/2005, 03:19
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 20 años, 3 meses
Puntos: 1
Mira este post: http://www.forosdelweb.com/f18/duda-con-header-location-300043/
Y como diría jam1138, mira las FAQ: http://www.forosdelweb.com/showthrea...490#post414490
En cuanto a lo de la base de datos, puedes hacerlo así con una clase (por ejemplo php-nuke también lo hace así) o incluyendo un archivo bd.php o algo así en el que crees la conexión con la base de datos y demás cosas comunes que necesites en cada script
__________________
Mi página personal: Julián Urbano
  #4 (permalink)  
Antiguo 23/05/2005, 03:25
 
Fecha de Ingreso: mayo-2005
Mensajes: 423
Antigüedad: 19 años, 6 meses
Puntos: 1
pos voy a mirar esas cosas y gracias por la ayuda


pos va a ser q no eh caguen tos en fins lo q yo kiero es q tras un if en cual mira si es de un tipo u otro me vaya a un php u a otro php ,ya que con jsps es tirado xo con php no me sale :S


un saludo ygracias por la ayuda

Última edición por Legolas_Bilbao; 23/05/2005 a las 03:32
  #5 (permalink)  
Antiguo 23/05/2005, 03:43
 
Fecha de Ingreso: mayo-2005
Mensajes: 423
Antigüedad: 19 años, 6 meses
Puntos: 1
pos va a ser q no eh caguen tos en fins lo q yo kiero es q tras un if en cual mira si es de un tipo u otro me vaya a un php u a otro php ,ya que con jsps es tirado xo con php no me sale :S


un saludo ygracias por la ayuda
  #6 (permalink)  
Antiguo 23/05/2005, 04:00
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
¿?... en serio... creo hablamos diferentes idiomas ... en tus dos mensajes (3) poco he entendido... básicamente adivido :
Código PHP:
if($row[3] == "Medico")
header("Location:url");
else
header("Locaton:url2"); 
... no puedo decir más pues no me queda claro...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 23/05/2005, 04:16
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 20 años, 3 meses
Puntos: 1
Podrías ponernos el código entero del index.php? Parece ser que eso lo tienes en la línea 58, pero la sentencia de la linea 8 ya está mandando algo de html al cliente.
__________________
Mi página personal: Julián Urbano
  #8 (permalink)  
Antiguo 23/05/2005, 05:12
 
Fecha de Ingreso: mayo-2005
Mensajes: 423
Antigüedad: 19 años, 6 meses
Puntos: 1
Código:
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<link rel="STYLESHEET" type="text/css" href="./recursos/Estilo1.css">
<title>Pagina de inicio</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<script>
<!--
function validar(nombre,pass)
{
		
	if (nombre.value.length == 0 )
	{alert("nombre vacio");
	return false;}
	else 
	if(pass.value.length==0){
	alert("pass no introducida");
	return false;}
	else 
	return true;
  	
}


</script>
</head>

<body >

<br>
<br><br>
<br><br>
<br><br>
<? if($_POST){
			$pass = $_POST["pass"];
			$nombre = $_POST["nombre"];
			$dbhost="xxxxx";  // host del MySQL (generalmente localhost)
			$dbusuario="xxxx"; // aqui debes ingresar el nombre de usuario
                              // para acceder a la base
			$dbpassword="xxxx"; // password de acceso para el usuario de la
            		             // linea anterior
			$db="xxx";        // Seleccionamos la base con la cual trabajar
			$conexion = mysql_connect($dbhost, $dbusuario, $dbpassword)
							or die ("Error conectando a la base de datos.");
			mysql_select_db($db, $conexion);
			$query ="Select * from usuarios where nombre='".$_POST["nombre"]."'"; 
			$result = mysql_query($query,$conexion)or
				 die ("error en secuencia BD sleect ");
				 $url="http://localhost:9090/php/MenuMedico.php";
				 
			if ($row = mysql_fetch_row($result))
				{
					if ($row[1] == $pass){
						//echo"suuarios validado";
						//echo $row[3];
						if($row[3] == "Medico"){
						
						header("Location:http://www.php.net");
						//echo " <br><a href='".urlencode($url)."'>$url</a>";
						
						}
						//exit();

						
						}
				}
 }
 else{?>
	<form name="inicio" method="post" action="Index.php" onSubmit="return validar(this.nombre,this.pass)">
	<center>
		<table>
			<tr>
				<td style="font-weight:bolder">Nombre</td>
				<td><input type="text" name="nombre" size="20"></td>
		   </tr>
			<tr>
				<td style="font-weight:bold">Contraseña</td>
				<td><input type="password" name="pass" size="20"></td>
			</tr>
			<tr>
				<td align="right"><acronym title="Login"><input type="submit" name="Registro" value="Login"></acronym></td>
				<td><input type="reset" value="Borrar"></td>
			</tr>
	</table>
	</center>
</form>
<? } ?>
</body>
</html>
ese es :S
  #9 (permalink)  
Antiguo 23/05/2005, 05:19
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 20 años, 3 meses
Puntos: 1
Vale con la primera línea ya me valía jjeje.
Si te fijas, nada más empezar el script ya estás poniendo código html, con lo cual, como dije en el post que te indiqué, ya está mandando datos el servidor al cliente, con lo que la cabecera ya ha sido enviada.
Es lo que te dice el error, que la cabecera ya ha sido enviada, y es porque ya has mandado código html. Simplemente cambia el código para que no 'lance' nada de html hasta después de comprobar esto, o mira lo de la FAQ que te puse y hazlo. http://www.forosdelweb.com/showthrea...490#post414490
__________________
Mi página personal: Julián Urbano
  #10 (permalink)  
Antiguo 23/05/2005, 05:26
 
Fecha de Ingreso: mayo-2005
Mensajes: 423
Antigüedad: 19 años, 6 meses
Puntos: 1
antes de hacer el script q le ponga lo de <?ob.start()?>

saludos
  #11 (permalink)  
Antiguo 23/05/2005, 05:30
Avatar de caerolus  
Fecha de Ingreso: agosto-2004
Ubicación: Madrid, España
Mensajes: 280
Antigüedad: 20 años, 3 meses
Puntos: 1
Sí, <? ob_start(); ?> y <?ob_end_flush(); ?> al final. Yo nunca he hecho esto, siempre he reorganizado mi código. Aunque es una opción como otra cualquiera.
__________________
Mi página personal: Julián Urbano
  #12 (permalink)  
Antiguo 23/05/2005, 05:52
 
Fecha de Ingreso: mayo-2005
Mensajes: 423
Antigüedad: 19 años, 6 meses
Puntos: 1
hecho muchas gracias
  #13 (permalink)  
Antiguo 24/05/2005, 10:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por caerolus
Sí, <? ob_start(); ?> y <?ob_end_flush(); ?> al final. Yo nunca he hecho esto, siempre he reorganizado mi código. Aunque es una opción como otra cualquiera.
mm bueno .. si hay opciones y todas cumplen su "fin" habrá que empezar a preguntarse que "ventajas" o "desventajas" tenemos de usar uno u otro método.

El uso de las funciones del control del buffer de salida de PHP sobrecarga a este en un proceso que es totalmente evitable en la mayoría de casos (por lo menos para solventar problemas de ese estilo). Sólo hay que pensar que desarrollamos en "PHP" y este genera "salida" (HTML, etc...) no en "HTML" con "incrustraciones" de PHP como en "principio" se suele pensar cuando no se conoce que o como funciona realmente PHP.

Las ventajas de usar las funciones del buffer de salida de PHP (ob_start() y efines) basicamente las ven ya; no hay que saber como funciona PHP realmente, ni ordenar el código en consecuencia y hacer algún que otro "malabarismo" para ordenar el código .. tan sólo un par de llamadas a esas funciones al principio y final del código ... Ya puestos a usarlas .. estaría bueno comprimir la página (así alguna finalidad tendría usarlas)

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 14:05.