Foros del Web » Programando para Internet » PHP »

Duda en sesiones

Estas en el tema de Duda en sesiones en el foro de PHP en Foros del Web. Haber tengo el siguiente problema: Tengo una clase sesion que es la siguiente: Código PHP: <?php  session_start (); ?> <?php class  sesion  { function  requerido ...
  #1 (permalink)  
Antiguo 22/09/2005, 02:53
Avatar de sanjo  
Fecha de Ingreso: enero-2005
Mensajes: 404
Antigüedad: 19 años, 10 meses
Puntos: 0
Duda en sesiones

Haber tengo el siguiente problema:

Tengo una clase sesion que es la siguiente:

Código PHP:
<?php 
session_start
();
?>
<?php
class sesion {

function 
requerido($role){
        
    
$ok=0;
    
$ta=sizeof($role);
    for (
$i=0;$i<$ta;$i++){
        if(
$_SESSION['rol']==$role[$i]){
            
$ok=1;
        } 
    }
//fin requerido
    
    
if ($ok=="1"){?>
    
    </head>
    <?php }else {?>
            <meta http-equiv="refresh" content="0";url=error.php?idarea=100">
            
            </head>
            <body>
            
            </body>
            </html>
    <?php }
    
}
//fin requerido    
}

?>

y dentro de cada página la llamo asi:
Código PHP:
<?php include("inc/sesion.php");

if(
$row[rol]=="1"){
$role[0]=1;
}else if(
$row[rol]=="2"){
$role[0]=1;
$role[1]=2;
$role[2]=3;
$role[3]=4;

}else if(
$row[rol]=="3"){
$role[0]=0;
$role[1]=1;
$role[2]=2;
$role[3]=3;
$role[4]=4;
//Todo el mundo
}


$s=new sesion;
$s->requerido($role);
?>
el tema es que esto lo pongo al inicio de la página y me funciona bien, pero si una página "A" la tengo restringida, primero me la carga un segundo y luego me carga la página de error.php, es decir la comprobación y todo eso lo hace bien, solo que en la página restringida permanezco un segundo, por lo que su contenido se ve y no quiero que suceda eso. Me puedes ayudar ?????
__________________
¿Quiere echarte unas risas y ver cosas espectaculares?
Nomeessentado.com
  #2 (permalink)  
Antiguo 22/09/2005, 05:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
No debes usar este tipo de redireccionamiento:

Código PHP:
<?php }else {?> 
            <meta http-equiv="refresh" content="0";url=error.php?idarea=100"> 
             
            </head> 
            <body> 
             
            </body> 
            </html> 
    <?php }
Cuando usas cabeceras vía HTML (META ...) lo que hace tu navegador es recibir toda esa página y cuando la interpreta ahí recién actua el proceso de recarga de página o redireccionamiento a otra página.

Debes usar cabeceras HTTP directas. Las cabeceras HTTP se ejecutan -antes- que todo HTML que puedas enviar a tu navegador (cliente) .. por ende esa "orden" como es el caso de "cambiate a tal URL" (navegador) se realiza mucho más rápido para estos fines.

Código PHP:
header ("Location: dondetengasqueir.php");
exit; 
Un saludo,
  #3 (permalink)  
Antiguo 07/10/2005, 04:19
Avatar de sanjo  
Fecha de Ingreso: enero-2005
Mensajes: 404
Antigüedad: 19 años, 10 meses
Puntos: 0
muchas gracias cluster por tu ayuda
__________________
¿Quiere echarte unas risas y ver cosas espectaculares?
Nomeessentado.com
  #4 (permalink)  
Antiguo 19/10/2005, 10:25
Avatar de sanjo  
Fecha de Ingreso: enero-2005
Mensajes: 404
Antigüedad: 19 años, 10 meses
Puntos: 0
Tengo un problemilla, segui tus pasos y tu puse esto en vez de lo que tenia
Código PHP:
<? header('Location:error.php?idarea=100');
            exit;
            
?>
            </head>
            <body>
            
            </body>
            </html>
y me sale el siguiente error, no se porque

Warning: Cannot modify header information - headers already sent by (output started at /datos/home/d119817/public_html/atencion.php:11) in /datos/home/d119817/public_html/inc/sesion.php on line 21
__________________
¿Quiere echarte unas risas y ver cosas espectaculares?
Nomeessentado.com
  #5 (permalink)  
Antiguo 19/10/2005, 12:28
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
El error te dice que tienes algo de HTML/salida .. un salto de línea .. un espacio al final de <? o al antes de ?> en "atencion.php" línea 11.

No puede existir nada de salida antes de header() ..

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:10.