Foros del Web » Programando para Internet » PHP »

Problema con el Header

Estas en el tema de Problema con el Header en el foro de PHP en Foros del Web. Hola Maestros: tengo un problema y es al insertar datos en mi base de datos una vez que lo haya hecho quiero enviar un mensaje ...
  #1 (permalink)  
Antiguo 26/07/2005, 13:52
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 15 años, 1 mes
Puntos: 1
Problema con el Header

Hola Maestros:

tengo un problema y es al insertar datos en mi base de datos una vez que lo haya hecho quiero enviar un mensaje de que se guardaron correctamente y que solo me muestre ciertos segundos ese mensaje y me redireccione automaticamente a la pagina de captura solo que al querer enviar el mensaje no me deja por las restricciones del header y no se de que otra forma hacerle

lo que estoy tratando de hacer es lo siguiente:

$mensaje="Se insertaron correctamente";
echo $mensaje;
header(Refresh: 3;url=captura.php);

aqui es obvio que me va a enviar un error pero existe otro problema si utilizo el Refresh en lugar del Location como la pagina de captura.php es de acceso restringido no me lo respeta y con el Location si no se a que se deba esto.

espero me haya explicado.

gracias
  #2 (permalink)  
Antiguo 26/07/2005, 14:02
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 12 años, 10 meses
Puntos: 9
Sencillo..
la forma correcta de enviar al header el refresh es la siguiente..

header("Refresh: 3; URL=http://www.php.net");

Solo te hacen falta las comillas dobles..!!
  #3 (permalink)  
Antiguo 27/07/2005, 11:28
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 15 años, 1 mes
Puntos: 1
el problema no es con el header es como hacerle para enviar el mensaje de que los datos han sido insertados correctamente antes de enviar al usuario de nuevo a la pagina de captura.
  #4 (permalink)  
Antiguo 27/07/2005, 11:32
Avatar de erlingfiallos  
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 12 años, 10 meses
Puntos: 9
supongo que tienes algun condicional que dice cuando se han introducido los datos correctamente a la BD.. de lo contrario viene el error.. entonces dentro del condicional mandas a imprimir un mensaje ya sea en alert usando jscript o un con un print.. y la siguiente linea seria el header que envia a la pagina que quieres direccionar.
  #5 (permalink)  
Antiguo 27/07/2005, 11:53
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 15 años, 1 mes
Puntos: 1
tengo el siguiente codigo

Código PHP:
$sentencia "select COUNT(*) from datos_lluvia where cve_estacion = '$clave[$i]' and fecha = '$fecha1'";
$result mysql_query($sentencia,$link);
if (
mysql_result($result,0) > 0){
print 
"Los datos ya existen";
}else{
$sql "Insert into datos_lluvia(cve_estacion,lluvia,fecha) Values('$clave[$i]',$lluvia[$i],'$fecha1')";
print 
"Los datos han sido insertados en la Base de Datos";
mysql_query($sql,$link);
}
header("Refresh: 3;url=captura.php"); 
pero me marca el siguiente error:

Warning: Cannot modify header information - headers already sent by (output started at c:\wamp\www\NAME\captura3.php:48) in c:\wamp\www\NAME\captura3.php on line 60

y es por lo echo que hago ahora no se de que otra forma puedo haceele para enviar el mensaje

gracias por todo
  #6 (permalink)  
Antiguo 27/07/2005, 12:02
 
Fecha de Ingreso: julio-2005
Ubicación: España
Mensajes: 91
Antigüedad: 12 años, 5 meses
Puntos: 0
Recuerde que la función header() debe ser llamada antes de que cualquier salida sea enviada, ya sea mediante etiquetas HTML normales, líneas en blanco de un archivo, o desde PHP. Es un error bastante común interpretar código extra con include(), require(), o alguna otra función de acceso de archivos, y terminar con espacios o líneas en blanco que son impresas antes de un llamado a header(). El mismo problema existe cuando se usa un archivo PHP/HTML único.

Puedes utilizar para redireccionar este html:

Código:
<META HTTP-EQUIV=Refresh CONTENT="3; URL=captura.php">
  #7 (permalink)  
Antiguo 27/07/2005, 12:14
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 15 años, 1 mes
Puntos: 1
ya solucione que me enive el mesaje pero vino otra problema y es:

que al poner el

header("Refresh: 3;url=captura.php");

como que pierde las variables de sesion pero si pongo el

header("Location: captura.php"); no pierde las variables de sesion pero no da la pausa para poder ver el mensaje.

como le puedo hacer?

gracias
  #8 (permalink)  
Antiguo 27/07/2005, 12:17
 
Fecha de Ingreso: julio-2005
Ubicación: España
Mensajes: 91
Antigüedad: 12 años, 5 meses
Puntos: 0
<META HTTP-EQUIV=Refresh CONTENT="3; URL=captura.php">
  #9 (permalink)  
Antiguo 27/07/2005, 13:13
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 15 años, 1 mes
Puntos: 1
pero esa linea en que parte del codigo que tengo la pongo?
  #10 (permalink)  
Antiguo 27/07/2005, 13:16
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 15 años, 1 mes
Puntos: 1
la puse en donde va el header pero sigue sin pasar las variables de sesion
  #11 (permalink)  
Antiguo 27/07/2005, 13:20
Avatar de payo22  
Fecha de Ingreso: noviembre-2002
Ubicación: México
Mensajes: 839
Antigüedad: 15 años, 1 mes
Puntos: 1
hice otra forma pero sigue el mismo problema solo que ahora el mensaje lo envio a una ventana diferente esto utilizando Javascript pero me marca error por el header

Código PHP:
<?php
require("aut_verifica.inc.php");
$nivel_acceso=10// Nivel de acceso para esta página.
if ($nivel_acceso <= $_SESSION['usuario_nivel']){
header ("Location: $redir?error_login=5");
exit;
}
?>
<html>
<head>
<script language="JavaScript">
var ventana;
function crearVentana() {
  ventana = window.open("mensaje.html","nuevo","width=400,height=400");
  setTimeout(cerrarVentana,2000);
}
function cerrarVentana(){
  ventana.close();
}
</script>
</head>
<body onload="crearVentana();">
<?php
if(!empty($_POST['salir'])){
header("Location: aut_logout.php");
}elseif (!empty(
$_POST['cancelar'])){
header("Location: captura.php");
}else{
$ano date("Y");
$mes date("m");
$dia date("d");
$fecha1 $_POST['fecha2'];
$fecha2 $ano."-".$mes."-".$dia;
$f1_array explode("-" $fecha1); //de esta forma consigues separ dia de mes de año
$f2_array explode("-" $fecha2); //de esta forma consigues separ dia de mes de año
$f1 mktime(000$f1_array[1], $f1_array[2], $f1_array[0]);
$f2 mktime(000$f2_array[1], $f2_array[2], $f2_array[0]);
$resultado $f1-$f2;
if(
$resultado>0) {
header("Location: captura.php?error_fecha");
}
$clave $_POST['cve_estacion'];
$lluvia $_POST['lluvia'];
include(
"conecta.php");
$ano date("Y");
$mes date("m");
$dia date("d");
$nombre $ano."-".$mes."-".$dia;
$arch=fopen("INSERTADOS/".$nombre.".txt","a");
for (
$i=0;$i<count($lluvia);$i++){
$sentencia "select COUNT(*) from datos_lluvia where cve_estacion = '$clave[$i]' and fecha = '$fecha1'";
$result mysql_query($sentencia,$link);
if (
mysql_result($result,0) > 0){
$mensaje "Los datos ya existen";
}else{
$sql "Insert into datos_lluvia(cve_estacion,lluvia,fecha) Values('$clave[$i]',$lluvia[$i],'$fecha1')";
$cadena $sql."\n";
fputs($arch,$cadena);
$mensaje "Los datos han sido insertados en la Base de Datos";
mysql_query($sql,$link);
}
}
fclose($arch);
header("Location: captura.php");
}
?>
</body>
</html>
podrian decirme en donde situo el header o como le puedo hacer para que me haga esto?

me marca el suiguiente warning y ya se por que es pero no se como solucionarlo:

Warning: Cannot modify header information - headers already sent by (output started at c:\wamp\www\NAME\captura3.php:11) in c:\wamp\www\NAME\captura3.php on line 74
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 08:07.