Foros del Web » Programando para Internet » PHP »

Benditas sesiones.

Estas en el tema de Benditas sesiones. en el foro de PHP en Foros del Web. Hola, tengo la siguiente duda, me ha resultado super dificil poder entender y manejar las sesiones, hasta ahora puedo hacer esto suponiendo que ya comprobo ...
  #1 (permalink)  
Antiguo 14/12/2003, 02:36
 
Fecha de Ingreso: noviembre-2003
Mensajes: 59
Antigüedad: 14 años
Puntos: 0
Benditas sesiones.

Hola, tengo la siguiente duda, me ha resultado super dificil poder entender y manejar las sesiones, hasta ahora puedo hacer esto

suponiendo que ya comprobo todo y entro en uno de los perfiles en este caso 1

case 1:
//administrador god
session_start();
session_register(admin);
$admin =1;
setcookie ("administrador", "1" , time()+43200);
header ("Location: admin.php?op=admin");
break;

con esto, entro todo bien.. puedo ver el panel de admin, de pelos, el problema esta en que en mi logout tengo esto

<?
session_start();
session_destroy();
setcookie ("administrador", "0" , time()+0);
header ("location: index.php");
?>

ya sale me manda el index todo bonito, si pongo la dire entera, onda copy/paste, no me deja entrar todo lindo, pero si en la ventana del navegador pongo back entro nuevamente a la pagina donde estaba. el problema es como puedo hacer que al apretar logout ya ni con back pueda entrar a dicha página, si se supone que me sali.

seria eso..

sesiones.. argh!..

Saludos

Nesky
  #2 (permalink)  
Antiguo 14/12/2003, 07:56
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 6 meses
Puntos: 2
incluye estas etiquetas al principio de tu scrip... juas, juas

Código PHP:
header("Expires: Mon, 26 Jul 2002 05:00:00 GMT");
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache"); 
eso te pasa por la cache.... pero si fundimos la cache... adios al problema
__________________
3w.valenciadjs.com
3w.laislatv.com
  #3 (permalink)  
Antiguo 14/12/2003, 13:27
 
Fecha de Ingreso: noviembre-2003
Mensajes: 59
Antigüedad: 14 años
Puntos: 0
Lo utilize, pero aun con back puedo volver atras.. =(
  #4 (permalink)  
Antiguo 14/12/2003, 18:14
 
Fecha de Ingreso: febrero-2003
Ubicación: Viña del Mar
Mensajes: 85
Antigüedad: 14 años, 9 meses
Puntos: 2
..suponiendo que en cada pagina verificas que las variables de SESSION esten corectamente seteadas...

pon que te muestre el arreglo $_SESSION en la pagina donde vuelves, asi vas a saber si es un problema de que volvio a setear la session o que estas recibiendo el asunto por el cache...
__________________
http://www.zypper.cl/blues.gif
(web-hosting)

  #5 (permalink)  
Antiguo 14/12/2003, 18:34
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Incluye esta línea en tus script que necesiten autentificar:
Código PHP:
session_cache_limiter('nocache,private'); 
Saludos
  #6 (permalink)  
Antiguo 14/12/2003, 18:35
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 6 meses
Puntos: 2
umm esq tu lo que pides es desactivar el boton ATRAS... eso tendras que recurrir a java script.. aun asi, no deberias tener problemas si has realizado correctamente tu script...

te voy a decir un ejemplo...

yo uso un sistema de registro donde todos los datos son almacenados en una session, y realizo un password aleatorio con un RAND... bueno a lo que voy...

si tu entras la 1º vez, se setean las variables a 0 o NULL como quieras decir... osea que si existen datos automaticamente los borre y los reinicie... como se hace esto... sencillo

Código PHP:
unset($_SESSION['nick']); 
de esta manera borro o elimino el dato de la session... con lo cual estamos a 0...

cuando el usuario rellena el formulario, las variables se llenan de datos... luego hago el INSERT en mysql... y seguidamente si no hay ningun error., elimino todo de la session..

Código PHP:
    unset($_SESSION['passRegistro']);//borro pass de la session
    
unset($_SESSION['nick']);
    unset(
$_SESSION['email']);
    unset(
$_SESSION['nombre']);
    unset(
$_SESSION['icq']);
    unset(
$_SESSION['aim']);
    unset(
$_SESSION['msn']);
    unset(
$_SESSION['web']);
    unset(
$_SESSION['pais']);
    unset(
$_SESSION['ocupacion']);
    unset(
$_SESSION['intereses']);
    unset(
$_SESSION['firma']); 
a lo que voy... cuando tu script termine, elimina todos los datos y salta a otra page,.,., asi aunq vuelvas atras no existiran los datos...

------------------

otra cosa... ya que usas sessiones pq no haces que al terminar tu script un dato sea almacenado... como que ya lo has hecho...

Código PHP:
//al principio de tu script esto

if($_SESSION['formulario_1'] == "Realizado"){
echo 
"error, no puedes volver atras";
header ("Location: index.php");//salta a otra web... por ejemplo...
exit;
}

//

$_SESSION['formulario_1'] = "Realizado"//esto al final de tu scrip 
esto es un ejemplo cutre de como podia ser un apaño rapido sin usar js.... yo siempre que puedo solo uso php, o mysql, aunq aveces hay que morir en js.

un saludo !
__________________
3w.valenciadjs.com
3w.laislatv.com
  #7 (permalink)  
Antiguo 15/12/2003, 00:53
 
Fecha de Ingreso: noviembre-2003
Mensajes: 59
Antigüedad: 14 años
Puntos: 0
Muchas gracias por su ayuda, ya lo realize con todos sus consejos y la ayuda de un java que hace que al apretar logout, me setea un counter y me pregunta uds desea cerrar la page

si cierra se acaban los problemas, si pone no, se direccionar en 2 segundos a otra page, si pone atras no podra volver por que saldra siempre el msg de alert. y no podra ingresar a la page de admin.

funciona de lujo =).

Thankz a todos.
  #8 (permalink)  
Antiguo 15/12/2003, 22:26
Avatar de nuevo  
Fecha de Ingreso: mayo-2003
Ubicación: Spain
Mensajes: 2.009
Antigüedad: 14 años, 6 meses
Puntos: 2
pero lo hiciste con java no?---

no usas sessiones?

a ver como quedo tu code... anda...
__________________
3w.valenciadjs.com
3w.laislatv.com
  #9 (permalink)  
Antiguo 16/12/2003, 17:39
 
Fecha de Ingreso: noviembre-2003
Mensajes: 59
Antigüedad: 14 años
Puntos: 0

simplificado, veo si user pass existe.
y le asigno un perfil o nivel de acceso.

(voy a ser super sincero, esto no se si esta bien declarado el inicio de sesion.)


//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa conbinación usuario/contraseña
if (mysql_num_rows($rs)!=0)

{
$rs = mysql_fetch_array($rs);
switch($rs["usu_perf_cod"]) {

case 1:
//administrador god
session_start();
session_register(admin);
$admin =1;
setcookie ("administrador", "1" , time()+43200);
header ("Location: admin.php?op=admin");
break;

case 2:

//admin_tienda
session_start();
session_register(cliente);
$cliente =1;
setcookie ("cliente", "1" , time()+43200);
header ("Location: cliente.php?op=mant_cli");
break;

}
}
else
{
//si no existe le mando otra vez a la portada
header("Location: site_admin.php?op=bad_pass_user");

}
?>


en cada page que debe estar logeado como admin para verla pongo esto , para cliente solo cambio en el if a $cliente

<?
session_start();
if ($admin !=1)
{ header ("Location: index.php"); }
?>

ahora mi logout.

<?
session_start();
session_destroy();
setcookie ("administrador", "0" , time()+0);
setcookie ("cliente", "0" , time()+0);
header("Expires: Mon, 26 Jul 2002 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
?>

<form name="redirect">
<center>
<font color="993300" size="2" face="Arial"><b>Cierre de sesion realizado con éxito<br>Gracias por ser parte de la comunidad de www.sitio.cl<br>Si desea continuar trabajando en esta ventana <br>conteste No en el mensaje de alerta y sera direccionado al inicio en :
<form>
<input type="text" size="3" name="redirect2"> segundos
</form>
</b></font>
</center>

<script>
var targetURL="http://www.sitio.cl/"
var countdownfrom=0
var currentsecond=document.redirect.redirect2.value=co untdownfrom+1
function countredirect(){
if (currentsecond!=1){
currentsecond-=1
document.redirect.redirect2.value=currentsecond
}
else{
window.location=targetURL
return
}
setTimeout("countredirect()",1000)
}
window.close()
countredirect()
</script>


Bueno que hace esto, si estoy logeado y veo las pages de admin la raja, al salir via logout, supongo se cierra al sesion, y va a index, el problema es que al hacer back en el boton del browser podia volver a la page de administración, con esta mescla JAVA+PHP lo evito por que se cierra esa PAGINa y aun que se copie la dirección y al ponga en otra pagina, como apreto logout se va al index.
en realidad no se si es cristiano esto, pero de que funciona, funcina =)

ademas con windows.close(), al ejecutarrse la pagina, te pregunta, desea salir, si sale se cierra, si no, se redirecciona en 3 segundos al index, y al hacer back, solo entras a esta misma page de desición.

creo que es eso.

saludos

Nesky.

(reitero no se si esta bien definida la sesión, pero funciona)
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 11:48.