Foros del Web » Programando para Internet » PHP »

problema con header: location

Estas en el tema de problema con header: location en el foro de PHP en Foros del Web. hola a todos espero puedan ayudarme con el siguiente problema que tengo: estoy tratando de redireccionar una pagina luego de hacer un registro pero cuando ...
  #1 (permalink)  
Antiguo 27/06/2006, 12:00
Avatar de ing_aprendiz  
Fecha de Ingreso: septiembre-2005
Mensajes: 136
Antigüedad: 12 años, 2 meses
Puntos: 0
problema con header: location

hola a todos espero puedan ayudarme con el siguiente problema que tengo: estoy tratando de redireccionar una pagina luego de hacer un registro pero cuando doy clic en registrar me aparece el siguiente mensaje:

Warning: Cannot modify header information - headers already sent by (output started at /home/apsoluti/public_html/proyectokansei/registro_integrante.php:20) in /home/apsoluti/public_html/proyectokansei/registro_integrante.php on line 46

el codigo de la pagina es el siguiente:

<?
if(isset($enviartodo))
{
$link=conectarse();

$nombre = $nombre;
$nombre = ucwords($nombre); // HELLO WORLD!
$nombre = ucwords(strtolower($nombre)); // Hello World!

$apellido = $apellido;
$apellido = ucwords($apellido); // HELLO WORLD!
$apellido = ucwords(strtolower($apellido)); // Hello World!

$prueba=mysql_query("select id_empresa FROM usuario where usuario='$l'", $link);
while($row=mysql_fetch_array($prueba))
{
$empresa=$row[0];
}

$ins=mysql_query("INSERT INTO integrantes(id_integrante, id_empresa, nombre, apellido, edad, estado, id_departamento, e_mail, nota_registro) VALUES ('', '$empresa', '$nombre', '$apellido', '$edad', '$estado', '$id_departamento', '$e_mail', '$nota_registro')",$link);

$ultimo_id = mysql_insert_id($link);

$insert=mysql_query("insert into historico_integrante(id_historico, id_integrante, id_empresa, estado, fecha)values
('', '$ultimo_id', '$empresa', '$estado', now())",$link);

header("location: usuario_integrante.php");

echo"<script>";
echo'alert("Registro Insertado Con Exito!!!")';
echo"</script>";


}
?>

<html>
<script>function val_usuarios(f) {
// VALIDA EL FORMULARIO ANTES DE ENVIARLO//
var er_nombre = /^([a-z]|[A-Z]|á|é|í|ó|ú|ñ|ü|\s|1|2|3|4|5|6|7|8|9|0|\_)+$/; //letras, '.' y '-' o vacio
if(!er_nombre.test(f.usuario.value)) {
alert('¡ El campo nombre de usuario No es valido !');
f.usuario.value = "";
f.usuario.focus();
return false;
}

if(f.id_usuario.value=="" || f.usuario.value=="" || f.password.value=="" || f.id_perfil.value=="" || f.id_empresa.value=="0"){
alert("¡ NO DEBE HABER CAMPOS VACIOS!");
return false;
}
return true;

}
</script>

<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<form name="form1" method="post" action="usuario_integrante.php" onSubmit="return val_usuarios(this);">
<table align="center" border="0" bordercolor="#6699CC" bgcolor="#F8F8F8">
<!--DWLayoutTable-->

<tr valign="baseline">
<td height="21" colspan="2" align="right" valign="top" nowrap bgcolor="#E6F4F7">
<div align="left" class="Estilo1">
<div align="center" style="font-family: Arial, Helvetica, sans-serif; font-size: 14px; font-weight: bold">Registro Usuarios </div>
</div></td>
</tr>

<tr valign="baseline">
<td height="23" colspan="2" align="right" valign="top" nowrap ><div align="left" class="Estilo1"></div></td>
</tr>

<tr valign="baseline">
<td width="124" height="26" align="right" nowrap><div align="left" style="font-family: Arial, Helvetica, sans-serif; font-size: 12px"><span class="Estilo2">Nombre de Usuario
</span>:</div></td>
<td width="238" valign="top" bgcolor="#F8F8F8"><input name="usuario" type="text" class="Estilo2" value="" size="32"></td>
</tr>

<tr valign="baseline">
<td height="26" align="right" nowrap><div align="left" style="font-family: Arial, Helvetica, sans-serif; font-size: 12px"> <span class="Estilo2">Password</span>:</div></td>
<td valign="top"><input name="password" type="text" class="Estilo2" value="" size="32"></td>
</tr>

<tr valign="baseline">
<td height="26" align="right" nowrap><div align="left" style="font-family: Arial, Helvetica, sans-serif; font-size: 12px"> <span class="Estilo2">Perfil</span>:</div></td>
<td><select name="id_perfil" size="1" class="Estilo2" id="id_perfil">
<option value="0">- Seleccione un perfil de usuario -</option>
<?
$link=conectarse();
$con=mysql_query("select * from perfil_usuario",$link);
while($fil=mysql_fetch_array($con))
{
echo '<option value="'.$fil[0].'">'.$fil[1].'</option>';
}
?>
</select> </td>

<tr>
<td height="44" colspan="2" valign="middle"><div align="center">
<input type="hidden" name="enviartodo" value="1">
<input type="submit" name="Registrar" value="Registrar">
<input name="reset" type="reset" value="Borrar datos">
</div></td>
</tr>
</table>
<center>
&nbsp;
<p>&nbsp;</p>
</center>
</form>
</html>

lo que necesito es que despues de dar clic en registrar redireccione a la pagina usuario_integrante.php donde le asigno el nombre de usuario y la contraseña al nuevo usuario que se acaba de registrar, pero no se que esta mal y no fuenciona si pueden ayudarme estaria muy agradecida

chao
  #2 (permalink)  
Antiguo 27/06/2006, 12:02
Avatar de forecast  
Fecha de Ingreso: octubre-2004
Mensajes: 259
Antigüedad: 13 años, 2 meses
Puntos: 4
Este error es bastante típico y se ha tratado mil veces, no se puede hacer echos por pantalla y redireccionar con header al mismo tiempo.

Prueba a meter el header en un condicional... o redireccionas o escribes por pantalla, pero no las dos cosas.
  #3 (permalink)  
Antiguo 27/06/2006, 12:12
Avatar de B**
B**
 
Fecha de Ingreso: enero-2006
Ubicación: Monterrey,Mexico
Mensajes: 952
Antigüedad: 11 años, 10 meses
Puntos: 3
Tambien no debes de tener espacios en el codigo... todo debe ser linea tras linea... Ni como bien te dijeron echos.. ninguna salida al navegador..
Busca dentro del foro..ese tema
__________________
-URL= Go PHP5.
-Age=22.
-Learning=PHP,J2EE,Struts,MAMBO,C++,JSON,AJAX,XHTML ,CSS.
  #4 (permalink)  
Antiguo 27/06/2006, 12:54
Avatar de ing_aprendiz  
Fecha de Ingreso: septiembre-2005
Mensajes: 136
Antigüedad: 12 años, 2 meses
Puntos: 0
hola gracias por tu solucion ya pude solucionarlo y no se me olvidara que antes de header no va on echo ni ninguna salida a servidor

chao
gracias
  #5 (permalink)  
Antiguo 27/06/2006, 16:36
Avatar de vevni  
Fecha de Ingreso: julio-2005
Ubicación: cancun mexico
Mensajes: 598
Antigüedad: 12 años, 4 meses
Puntos: 3
perdonenme que lo repita pero estos temas se han tratado miles o millones de veces...... a caso las FAQS solo estan ahi...????

si es asi.. pos quitemos las FAQS ya que nadien se toma el tiempo de leerlas......

señoressssssssssss antes de hacer una pregunta, por favor usen el buscador o las FAQS.....

si siguen preguntando cosas asi, no se sorprendan si no ven ninguna respuesta a su pregunta. saludos.!
__________________
Código PHP:
echo"hola mundo ver 1221332143.02";
echo
"cuantos usuarios habran impreso hola mundo en el mundo.!???"
  #6 (permalink)  
Antiguo 27/06/2006, 16:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por vevni
perdonenme que lo repita pero estos temas se han tratado miles o millones de veces...... a caso las FAQS solo estan ahi...????

si es asi.. pos quitemos las FAQS ya que nadien se toma el tiempo de leerlas......

señoressssssssssss antes de hacer una pregunta, por favor usen el buscador o las FAQS.....

si siguen preguntando cosas asi, no se sorprendan si no ven ninguna respuesta a su pregunta. saludos.!
Entiendo tu enfado/enojo y el "tirón de orejas" que con tu mensaje pretendes dar .. pero si bien es bueno de vez en cuando un recordatorio así .. lamentablemente el foro se nutre día a día de preguntas repetitivas .. por eso nacieron las FAQ's que más que mal nos sirve a los que pretendemos responder para remitir a la solución de un problema a alguna FAQ en concreto.

Por cierto .. FAQ al respecto no hay sobre "header()" o cabeceras HTTP .. o como funciona PHP realmente y del por qué sucede ese tipo de mensajes de error cuando se usa header() o session_start() entre otras funciones.

La FAQ más parecida al respecto sería:
http://www.forosdelweb.com/showthrea...490#post414490

Pero realmente no explica ni trata el tema de fondo de dicho mensaje de error referente a "cabeceras enviadas" ... Sólo "parchea" el problema con el uso del control del buffer de PHP .. cosa que no es necesaria realmente con un poco de entendimiento de como funciona PHP y en consecuencia diseñar el código para que no se produzca ese evento en esas situaciones.

Te invito a realizar una FAQ al respecto .. para que respondamos con un link hacia ella en casos como este.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 27/06/2006, 16:57
 
Fecha de Ingreso: junio-2005
Mensajes: 2
Antigüedad: 12 años, 5 meses
Puntos: 0
Aclaro que tal vez le pueda servir a alguien -> el mismo error se sucita con setcookie, no se puede crear una cookie si hubo alguna salida al navegador antes, asi sea un echo "" o un fragmento de HTML fuera de PHP.
Saludos.
  #8 (permalink)  
Antiguo 27/06/2006, 17:00
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por Shamshir
Aclaro que tal vez le pueda servir a alguien -> el mismo error se sucita con setcookie, no se puede crear una cookie si hubo alguna salida al navegador antes, asi sea un echo "" o un fragmento de HTML fuera de PHP.
Saludos.
El mismo problema sucede con esa función .. pues la definición de una cookie es parte del protocolo HTTP .. el cual para crearla la información al navegador de la creación de una cookie viaja en como parte de la cabecera HTTP (por eso no se puede enviar nada más antes de esa función al cliente como salida).

Lo mismo sucede con "session_start()" (función de sesiones) .. entre otras cosas y siempre y cuando se propague el SID en cookies .. por la misma razón que la de la creación de una cookie en general.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 06:44.