Foros del Web » Programando para Internet » PHP »

Resireccionamiento que no quiere funcionar

Estas en el tema de Resireccionamiento que no quiere funcionar en el foro de PHP en Foros del Web. Estoy enviando este header: Código PHP: header ( "Location: SeleccionTarjeta.php?Monto=" . $SiguientePago );  Y me tira el siguiente error; Cita: Warning: Cannot modify header information - ...
  #1 (permalink)  
Antiguo 16/07/2004, 23:32
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.115
Antigüedad: 15 años, 9 meses
Puntos: 7
Resireccionamiento que no quiere funcionar

Estoy enviando este header:
Código PHP:
header("Location: SeleccionTarjeta.php?Monto=".$SiguientePago); 
Y me tira el siguiente error;
Cita:
Warning: Cannot modify header information - headers already sent by (output started at c:\appserv\www\seleccionpago.php:275) in c:\appserv\www\seleccionpago.php on line 391
rebisé la línea 275 y lo que tengo es:
Código PHP:
<?php
No entiendo...
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--

Última edición por RsOfT; 16/07/2004 a las 23:34
  #2 (permalink)  
Antiguo 16/07/2004, 23:37
 
Fecha de Ingreso: julio-2004
Ubicación: Puerto Vallarta, Jalisco, Mexico
Mensajes: 186
Antigüedad: 13 años, 4 meses
Puntos: 0
tienes que usar el ob_start() en la primer linea de tu codigo (http://mx.php.net/ob_start) y en la ultimaob_end_flush()

lo que pasa es que solo te puede redireccionar si la pagina no tiene nada en el header
como ya mandaste informacion, por eso te manda ese mensaje.

por cierto, creo que el location header, solo funciona con URLs completos por ejemplo:
// este codigo si funcionara
header("Location: http://www.misitio.com/SeleccionTarjeta.php?Monto=".$SiguientePago);


//este sin embargo no
header("Location: SeleccionTarjeta.php?Monto=".$SiguientePago);

aunque a decir verdad nunca lo he probado.

pero yo uso este codigo:

header('Location: http://'. $_SERVER["HTTP_HOST"].'/pagina.php?querstrying=aqui');


Ojala resuelva tu problema
__________________
Shanti Castillo G.

Última edición por Shantic; 16/07/2004 a las 23:40
  #3 (permalink)  
Antiguo 16/07/2004, 23:49
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.115
Antigüedad: 15 años, 9 meses
Puntos: 7
puse lo que me dijiste al principio y al final del código y me tira el siguiente error en la línea del ob_end_flush():
Parse error: parse error, unexpected T_STRING in c:\appserv\www\seleccionpago.php on line 408
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #4 (permalink)  
Antiguo 16/07/2004, 23:53
 
Fecha de Ingreso: julio-2004
Ubicación: Puerto Vallarta, Jalisco, Mexico
Mensajes: 186
Antigüedad: 13 años, 4 meses
Puntos: 0
te falta una ; antes de el ob_end_flush()

podrias poner algunas lineas cerca del ob_end_flush() ?
__________________
Shanti Castillo G.
  #5 (permalink)  
Antiguo 17/07/2004, 07:29
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.115
Antigüedad: 15 años, 9 meses
Puntos: 7
OK, ya me funcionó. Como me dijiete que te pusiera el código que está cerca, recordé que hay un include arriba del ob_end_flush();
Gracias por tu ayuda.
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #6 (permalink)  
Antiguo 17/07/2004, 17:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Deberías solventar el problema sin usar las funciones de control del buffer que has usado.

La salida que te daba error se proboca por algún espacio/salto de línea antes o despues de <? ?> .. Si la línea corresponde a un "include()" (archivo externo) debes fijarte que este a su vez tampoco tenga esos espacios o saltos de línea antes o despues de sus respectivos <? y ?>

El uso del control del buffer para casos que realmente no son necesarios (como este caso que la solución es por otro médio) .. sobrecarga a PHP para un proceso que podría evitarse.

Shantic
Cita:
//este sin embargo no
header("Location: SeleccionTarjeta.php?Monto=".$SiguientePago);

auque a decir verdad nunca lo he probado.
mm yo sólo uso ese método si me refiero a páginas de mi sitio dando rutas relativas (así como el ejemplo o con ../ y demás ...) Y .. me funciona correctamente. ¬¬

Un saludo,

Última edición por Cluster; 17/07/2004 a las 17:24
  #7 (permalink)  
Antiguo 18/07/2004, 00:49
 
Fecha de Ingreso: julio-2004
Ubicación: Puerto Vallarta, Jalisco, Mexico
Mensajes: 186
Antigüedad: 13 años, 4 meses
Puntos: 0
Cita:
mm yo sólo uso ese método si me refiero a páginas de mi sitio dando rutas relativas (así como el ejemplo o con ../ y demás ...) Y .. me funciona correctamente. ¬¬

Un saludo,
Cada dia se aprende algo nuevo

y tal vez lo del buffer tengas razon, sin embargo como su redirect esta (supongo yo) a media pagina, como el lo hizo notar, aun cuando quite los espacio o saltos de linea no va a funcionar, por que los headers ya se mandaron, al menos que toda su pagina no incluya HTML antes del PHP.

o me equivoco ?

Por razones como estas es buena idea postaear parte del o el codigo completo.

:)
__________________
Shanti Castillo G.
  #8 (permalink)  
Antiguo 19/07/2004, 07:26
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.115
Antigüedad: 15 años, 9 meses
Puntos: 7
Vamos a ver si entendí...

--Aclaro--
Todo mi código PHP está al inicio, mitad y final de la página.
Hay varios Include al inicio y uno al final.

El header que me estaba dando error esta por el medio de la página...
----------

Ahora, a que se refieren que si hay salto de línea?

Cita:
mm yo sólo uso ese método si me refiero a páginas de mi sitio dando rutas relativas (así como el ejemplo o con ../ y demás ...) Y .. me funciona correctamente
Que método? el uso de ob_start() y ob_end_flush()?

Aqui está un poco de código de la parrte en donde coloco el ob_start():
Código PHP:
ob_start();
//--Conectandome al Servidor de Base de Datos--
include("Conexion.inc");
//---------------------------------------------


//--Caculando el Pago de acuerdo a la forma seleccionada--
function ObtenerPago($FormaPago,$SecuenciaPago,$TotalColegiatura){
    
//--Conectandome al Servidor de Base de Datos--
    
include("Conexion.inc");
    
//---------------------------------------------
    
$strSQL "SELECT * FROM FormaPago Where fpFormaPago = ".$FormaPago." and fpSecuenciaPago = ".
              
$SecuenciaPago;
    
$iquery mysql_query($strSQL,$Link);
    
    if (
$iquery 0) {
        
$Fila 0
Aqui está un poco de código en donde está el Include que me daba error:
Código PHP:
if ($PrimerPago == false) {
    
$strSQL "Select * From Facturas Where efpCuatrimestre = ".$UltimoCuatrimestre." and esMatricula = ".$_SESSION["sUser"]; 
    
$iquery mysql_query($strSQL,$Link);

    if (
$iquery 0) {
        
$Fila 0;
        
$UltimoRegistro mysql_num_rows($iquery);
        
$MontoTotalFactura mysql_result($iquery,$Fila,"faMonto");
        
$NoFactura mysql_result($iquery,$Fila,"faNumeroFactura");
        
$FormaPago mysql_result($iquery,$Fila,"faTipo");

        if (
$UltimoRegistro != 0) {
            
//--Comprobando si la factura ha sido pagada--
            
$strSQL "Select Sum(paMonto) as paMonto From Pagos Where faNumeroFactura = ".$NoFactura
            
$iquery mysql_query($strSQL,$Link);
            
            if (
$iquery 0) {
                
$Fila 0;
                
$UltimoRegistro mysql_num_rows($iquery);
                
                if (
$UltimoRegistro 0) {
                    
//Determinado si ya no debe--
                    
if (number_format($MontoTotalFactura,2) == number_format(mysql_result($iquery,$Fila,"paMonto"),2)) {
                        
header("Location: NoPoseeBalance.php");
                        exit();
                    }
                    
//---------------------------
                    
                    //--Determinando cual es el pago que sigue--
                    
else {
                        
$strSQL "Select * From Pagos Where faNumeroFactura = ".$NoFactura
                        
$iquery mysql_query($strSQL,$Link);
        
                        if (
$iquery 0) {
                            
$Fila 0;
                            
$UltimoRegistro mysql_num_rows($iquery);
                            
                            if (
$UltimoRegistro == && $FormaPago == 2) {
                                
$SiguientePago $TotalF2_2;
                            }
                            elseif (
$UltimoRegistro == && $FormaPago == 3) {
                                
$SiguientePago $TotalF3_2;
                            }
                            elseif (
$UltimoRegistro == && $FormaPago == 3) {
                                
$SiguientePago $TotalF3_3;
                            }
                            elseif (
$UltimoRegistro == && $FormaPago == 4) {
                                
$SiguientePago $TotalF4_2;
                            }
                            elseif (
$UltimoRegistro == && $FormaPago == 4) {
                                
$SiguientePago $TotalF4_3;
                            }
                            elseif (
$UltimoRegistro == && $FormaPago == 4) {
                                
$SiguientePago $TotalF4_4;
                            }
                            
header("Location: SeleccionTarjeta.php?Monto=RD$ ".number_format($SiguientePago,2));
                            exit();
                        }
                    }
                    
//------------------------------------------
                
}
            }
            
//--------------------------------------------
        
}
    }
}

ob_end_flush();
//--Tabla de Fondo--
include("TablaFondo.inc")
//------------------ 
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
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:31.