Avatar Image
Usuario Novato
Usuario Novato

Yo tengo un problema parecido y no he podido solucionarlo, este es mi código.

index.php
<?php
session_start();
include('inicio_variables.php');
...
...
etc.
?>


inicio_variables.php
<?php
if (!isset($_SESSION['mi_variable'])) {
$_SESSION['mi_variable'] = "Valor Inicial de la variable.";
}
?>


A la vista de lo anterior, cada vez que se refresque, o se entre en la página "index.php", se hace un include del fichero "inicio_variables.php", si no existe la variable de sesión $_SESSION['mi_variable'], se le da un valor inicial, y si existe se deja el valor que tiene, porque en otras páginas puede haber cogido otro valor ¿no?. Bueno pues con Mozilla Firefox, funciona perfectamente desde cualquier equipo, ¡pero! con IE6 desde unos equipos funciona y desde otros no; la variable de sesión no existe y siempre se cumple la condición del "if" y, por lo tanto, la crea de nuevo y le da el valor inicial. Desde mi equipo, por ejemplo, (con IE6) funciona en localhost pero no funciona en el servidor remoto. ¿Por que ocurre esto?, ¿como se puede solucionar?, ¿es problema del servidor, o del navegador?

Avatar Image
@man / @woman
@man / @woman
Escrito originalmente por gastonlp

echo $_SESSION["usuario"]=$usuario;



Eso, sino me equivoco esta mal escrito. Sería echo $_SESSION['usuario']; solamente.
Avatar Image
@man / @woman
@man / @woman
Escrito originalmente por ferdytoledo
Desde mi equipo, por ejemplo, (con IE6) funciona en localhost pero no funciona en el servidor remoto. ¿Por que ocurre esto?, ¿como se puede solucionar?, ¿es problema del servidor, o del navegador?


Prueba a depurarlo con unos echos... en el inicio_variables.php pondría:
Codigo:

<?php
echo 'Entro a inicio_variables.php<br />';
echo 'Variable de sesión inicial: '.$_SESSION['mi_variable'].'<br />';
if (!isset($_SESSION['mi_variable']))
{
echo 'Entro en el if<br />';
$_SESSION['mi_variable'] = 'Valor Inicial de la variable.';
}
else
echo 'Entro en el else<br />';
echo 'Variable de sesión después: '.$_SESSION['mi_variable'].'<br />';
?>


Y vería a ver que pasa...

Pero si te sirve de ayuda, creo que NO es del servidor.
Avatar Image
Usuario Novato
Usuario Novato

Eso ya lo he probado así:

inicio_variables.php
<?php

echo "Mi Variable (antes de): ".$_SESSION['mi_variable']."<br>"

if (!isset($_SESSION['mi_variable'])) {
$_SESSION['mi_variable'] = "Valor Inicial de la variable.";

echo "Mi Variable (despues de): ".$_SESSION['mi_variable']."<br>"

}
?>


El "antes de", lo muestra siempre en blanco, y siempre pasa por el "despues de" que muestra como es lógico el valor inicial que le doy. Lo cual es un problema, porque estoy haciendo ciertas cosas que quiero que sólo tengan acceso usuarios registrados, para lo cual, una vez introduzcan usuario y contraseña, utilizando variables de sesión, sabré en todo momento si está registrado y de que usuario se trata, así que... tengo un problema; ¿que hago?, y ¿por qué ocurre esto?, porque lo más extraño es que en localhost con IE6 me funciona y en el servidor no. Esto es de locos...

Un Saludo

Avatar Image
@man / @woman
@man / @woman
Escrito originalmente por ferdytoledo
Eso ya lo he probado así:

inicio_variables.php
<?php

echo "Mi Variable (antes de): ".$_SESSION['mi_variable']."<br>"

if (!isset($_SESSION['mi_variable'])) {
$_SESSION['mi_variable'] = "Valor Inicial de la variable.";

echo "Mi Variable (despues de): ".$_SESSION['mi_variable']."<br>"

}
?>



¿donde esta el session_start()?
Avatar Image
Usuario Novato
Usuario Novato

En el fichero "inicio_variables.php" creo que no es necesario poner "session_start()" porque es un include de "index.php"

index.php
<?php
session_start();
include('inicio_variables.php');
...
...
etc.
?>

Aún así, también he probado a poner el "session_start()" y tampoco funciona.

Un Saludo,
Fernando

Avatar Image
@man / @woman
@man / @woman

Cuando almacenas la variable de sesión ¿estas seguro que la almacena bien, antes de hacer el header? yo pondría un echo.

Avatar Image
Usuario Novato
Usuario Novato

No se a que te refieres. Cuando inicio las variables de sesión, pongo $_SESSION['variable'] = "valor"; y esto se mantiene sólo en la página donde lo hago, después, al pasar a otra página este valor se pierde, bueno, exactamente lo que se pierde es la variable, ya que un isset($_SESSION['variable']) devuelve false.

El problema tiene que ser el IE6 que seguramente en las últimas actualizaciones tenga algo que no le sienta bien a las sesiones, lo que me desconcierta es que en el servidor montado en mi equipo (localhost) funciona bien y en cambio en el servidor remoto no.

Estoy ya hasta los mismisimos del Sr. Billi Puertas.

Un Saludo,
Fernando

Atomo64
Machacateclados
Machacateclados

me sucede lo mismo, pero a veces, dependiendo del sistema operativo, en internet explorer funciona o no. Incluso intentando en mi propia computadora(con el servidor aqu&iacuteGiño, y nada.

Avatar Image
Usuario habitual
Usuario habitual

Bueno, ya he buscado la respuesta a este problema en un mill�n de foros (bue, no tanto). La cosa es as�:
Tengo el siguiente c�digo en una p�gina login.php:

Codigo:

session_start();
$_SESSION["usuario"]=$usuario;
$_SESSION["pass"]=$password;
header("Location: index.php&quotGiño;

en el index.php tengo lo siguiente:
Codigo:

session_start();
echo $_SESSION["usuario"]=$usuario;
echo $_SESSION["pass"]=$password;

En Firefox anda sin problemas. En Internet Explorer 6 anda en MI servidor apache, pero en Mi@rroba no anda (vuelvo a aclarar: con Firefox si).
Si pruebo session_is_registered("usuario&quotGiño devuelve FALSE (lo mismo con "pass&quotGiño.
Cualquier ayuda!! Lo que sea!! Pronto antes que recomiende a todos mis amigos que se pasen al Firefox (no es mala idea).
PD: por si ayuda, no tengo problemas al conectarme a mi@rroba desde IE6
Avatar Image
Usuario habitual
Usuario habitual

Bueno, me voy a responder solo, pero tambien sirve para contarles lo que sucedió y como lo solucioné. Capaz que ayude a alguien:

Esto lo encontré en un foro

I have a page that requires one to login. If
one login on this page, and then try to change to another page, then I need
to redo the login procedure again - so it appears like the session is not
persisten over different pages here.

Para los que no entienden mucho inglés, parece ser que la sesion se pierde cuando se hace un header o incluso con
Codigo:

echo "<script type='text/javascript'> document.location='../index.php' </script>";

Puede ser que esto suceda por configuraciones distintas en los browsers, pero lo que no deja de parecerme extraño es que con IE6 ande en mi localhost y no en miarroba. ¿Puede ser que alguna configuración del servidor afecte a como pasa los parametros la sesion?
Bueno, y ahora les cuento como lo solucioné: Simplemente reemplazé los header("location: ...") por include_once(...); die();
Esto puede llegar a traer problemas de redeclaración de funciones y de variables (tener cuidado con sobrescribirlas), pero son cosas menores que se pueden resolver con el include_once que puse, algunos cambios de variables...
Por ahora así quedó emparchado hasta la próxima fisura!
Saludos
Nearco123
Usuario Novato
Usuario Novato

Hola amigos,
A mí me pasa lo mismo en mi página web: intento hacer el login, pero en IE no parece que transmita la sesión. En mi localhost sí funciona, mientras que en mi hosting en godaddy.com no. En todos los casos funciona con Firefox.

Espero que me podáis decir cómo resolvísteis vuestro problema, me sería de gran ayuda.
Os dejo el código de mi página web.

Codigo
Codigo del fichero que hace el login e inicia la sesión
<?
include("includes/conexionBBDD.php&quot[;)];
//Sentencia SQL para buscar un usuario con esos datos
$pwd = $_POST["pwd"];
$pwd = md5($pwd);
$userid = $_POST["userid"];
$ssql = "SELECT * FROM admin WHERE nombre='$userid' and pwd='$pwd' ";

//Ejecuto la sentencia
$rs = mysql_query($ssql);

//vemos si el usuario y contrase&ntilde;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&ntilde;a
if ($row = mysql_fetch_array($rs) || $userid == "invitado&quot[;)]{
//usuario y contrase&ntilde;a válidos
//defino una sesion y guardo datos
session_name("plantillaInmobiliaria&quot[;)];
session_start();

//sesión con cookies
$nombreCookie = 'inmoCookie';
//creamos un número aleatorio entre 0 y el nº de segs del momento actual, y le aplicamos md5
$valorCookie = md5(rand(0,time()));

//asignamos una validez a la cookie de 1 día
$tActual = time(); //marca de tiempo en segundos
$tActualMasUnDia = $tActual + (60*60*24) ; //sumamos 1 día en segundos
$validezCookie = $tActualMasUnDia;

//creamos la cookie
setcookie($nombreCookie,$valorCookie,$validezCookie);

//metemos el nombre de usuario en la sesión, para trarar como admin o invitado
$_SESSION["userID"]=$userid;

//asignamos un identificador de sesión
$_SESSION["sessionID"]=$valorCookie;

//asignamos una variable del último acceso de la sesión
$_SESSION["tUltAcceso"]=$tActual;
///////
$url="Location: admin.php";
header ($url);
}else {
//si no existe le mando otra vez a la portada
header("Location: acceso.php?err=usr&quot[;)];
exit();

}
mysql_free_result($rs);
mysql_close($conn);
?>

Y aquí el código de seguridad, que está incluido al comienzo de cada página de acceso restringido:
Codigo
<?
//Inicio la sesión
session_name('plantillaInmobiliaria');
session_start();
$valorCookie = $_COOKIE["inmoCookie"];

function destruirSesion(){
session_unset();
//destruimos la variable de sesión
$_SESSION= array();
//destruimos la posible cookie
setcookie('inmoCookie','',time()-3600);
session_destroy();

header("Location: acceso.php&quot[;)];
exit();
}

if(!($_SESSION["sessionID"] == $valorCookie) ||
!(isset($_SESSION["sessionID"][;)])){
destruirSesion();
}

//si hemos llegado aquí es que el usuario está identificado
//comprobaremos si han pasado 30 minutos desde su último acceso

$tActual = time();
$tUltAcceso = $_SESSION["tUltAcceso"];
//tiempo que se permite de inactividad
//30 minutos = 30*60=1800 segundos
$periodoInactividad = 1800;

//para comprobar (quitar comentarios):
//echo "tiempoActual:".$tActual;
//echo "--tiempoUltimoAcceso:".$_SESSION["tUltAcceso"];
//echo "--resta Tactual-TultAcceso:".($tActual-$tUltAcceso);

//comprobamos que estamos dentro del periodo tolerado
if(($tActual - $tUltAcceso)>$periodoInactividad){
//si se ha pasado el tiempo, salimos
destruirSesion();
}else{
//si estamos dentro, actualizamos el valor de
//la variable correspondiente en la sesión
$_SESSION["tUltAcceso"]=$tActual;
}

?>
Muchas gracias a todos y un saludo!!!


RockMania
Usuario Novato
Usuario Novato

Maldito explorer, yo tuve el mismo problema lo arregle inicializando la sesion a la antigua

en lugar de $_SESSION[' '] use $HTTP_SESSION_VARS[''] y me funciono correctamente,

me ocurrio el problema cuando le mostre la pagina a mi jefe en su pc con explorer, y yo que solo la habia probado en firefox, imaginense que mal rollo como odie al explorer en ese momento, afortunadamente encontre esa solucion.

ATENCIÓN: Este tema no tiene actividad desde hace más de 6 MESES,
te recomendamos abrir un nuevo tema en lugar de responder al actual
Opciones:
Ir al subforo:
Permisos:
TU NO PUEDES Escribir nuevos temas
TU NO PUEDES Responder a los temas
TU NO PUEDES Editar tus propios mensajes
TU NO PUEDES Borrar tus propios mensajes
Temas similares
TemaUsuariosRespuestasVisitasActividad
Por: , el 17/Feb/2011, 15:17
elproferomero GestionXls42kFeb/11
Por: , el 11/Jun/2005, 12:42
Skaperna015kJun/05
Por: , el 29/Jun/2004, 07:38
Game-DXS metalrealm notvalen33kJul/04
Por: , el 12/Nov/2003, 13:35
yoke15kNov/03