Foros del Web » Programando para Internet » PHP »

$_session

Estas en el tema de $_session en el foro de PHP en Foros del Web. Buenas noches. Mi problema es el siguiente: Estoy diseñando una página web en la que hay usuarios. El caso es que necesito que todos los ...

  #1 (permalink)  
Antiguo 15/12/2011, 16:03
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
$_session

Buenas noches.
Mi problema es el siguiente: Estoy diseñando una página web en la que hay usuarios. El caso es que necesito que todos los usuarios se logueen en la página con su nickname y su contraseña antes de acceder al interior (no quiero que el usuario con id=2, cambiando su id vea lo del usuario 3, lo que por otro lado es obio). El caso es que me han hablado un poquito de las variables de sesión, con session_start(); en php, pero claro! necesito mantener esa variable para todo mi proyecto!, porque es mi comprobante de que ese usuario se ha autentificado. Inicializo sesión cuando el usuario se loguea en mi aplicación (cuando username y password son correctas en el formulario login.inc.php) y llamo a mi formulario home.inc.php. Si acudo a firefox, veo que me ha guardado un cookie con un código, el caso es que intento hacer
Código PHP:
Ver original
  1. <?php echo ($_SESSION['sesion']); ?>
tratando de imprimir esa variable de sesión pero me dice que:

Notice: Undefined variable: _SESSION

¿Qué estoy haciendo mal? Estoy utilizando de manera correcta el mecanismo? o hay algún otro mecanismo para hacer este tipo de cosas?.
Gracias de antemano!
  #2 (permalink)  
Antiguo 15/12/2011, 16:08
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 7 meses
Puntos: 322
Respuesta: $_session

¿Podrías mostrarnos tu código completo? Sospecho que no haces session_start.

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #3 (permalink)  
Antiguo 15/12/2011, 16:10
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

este es mi botón login que se encuentra en el formulario login.inc.php
Código Javascript:
Ver original
  1. function Message(data){
  2.                     if (data!=0){
  3.                         $("#Login_Error").css("display", "none");
  4.                         <?php session_start(); $_SESSION['sesion']=1;?>
  5.                         window.location.href = ('/page/home.inc.php?user_id='+data);
  6.                     }else{
  7.                         $("#Login_Error").css("display", "block");
  8.                     }

y este es mi formulario home, en el cual miro cual es el valor:

Código PHP:
Ver original
  1. echo ($_SESSION['sesion']);
  #4 (permalink)  
Antiguo 15/12/2011, 16:15
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 7 meses
Puntos: 322
Respuesta: $_session

He ahí el problema.
session_start() debe iniciarse antes de cualquier salida HTML, y lo que está antes (el código JavaScript) es una salida HTML. Ese start debió haberte dado un error.

Solución:
Debes poner el session_start en el inicio de tu página, mucho antes de cualquier caracter.

Saludos
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #5 (permalink)  
Antiguo 15/12/2011, 16:19
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

pues he probado a ponerla en el index.php que es el primer fichero que se me carga y tampoco funciona, sin embargo, si la sesión la inicio en el mismo formulario, va perfecto. Puede estar el problema en el paso a otro formulario?
  #6 (permalink)  
Antiguo 15/12/2011, 16:24
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 7 meses
Puntos: 322
Respuesta: $_session

Ponla antes de cualquier salida HTML pero en la página donde necesitas.
Debes tener en cuenta que la sesión debe iniciarse tanto donde guardas los datos como donde quieres leerlos.
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #7 (permalink)  
Antiguo 15/12/2011, 16:31
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

claro, ahí está el problema, que inicio la sesión en la página login.inc.php y leo esa sesión en home.inc.php. Entonces no puedo usar esta variable? La variable de sesión se crea porque lo veo yo en el firebug en cookies.
Puedes mirar tu mismo accediendo a http://www.devstarlight.com y haciendo click en el botón del login sin escribir nada.
  #8 (permalink)  
Antiguo 15/12/2011, 16:34
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

el problema es que yo perféctamente puedo acceder a la home escribiendo www.devstarlight.com/page/home.inc.php?user_id=1, por ejemplo o www.devstarlight.com/page/home.inc.php?user_id=2. No! se trata de que tenga que loguearse y no pueda hacer eso =)
  #9 (permalink)  
Antiguo 15/12/2011, 16:37
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

y si añades las comillas

<?php session_start(); $_SESSION['sesion']=1;?>

<?php session_start(); $_SESSION['sesion']='1';?>

y

echo ($_SESSION['sesion']);

kitas ()
echo $_SESSION['sesion'];
  #10 (permalink)  
Antiguo 15/12/2011, 16:39
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

nada, sigue igual la cosa
  #11 (permalink)  
Antiguo 15/12/2011, 16:59
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

el caso es que genero la sesión en el mismo formulario:
Código PHP:
Ver original
  1.     $_SESSION['sesion']='1';
  2.     echo $_SESSION['sesion'];
y efectivamente, por pantalla me imprime el 1
  #12 (permalink)  
Antiguo 15/12/2011, 17:02
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

entnces ya kedo resuelto? cual fue el error?
  #13 (permalink)  
Antiguo 15/12/2011, 17:04
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

no no, el problema sigue. El problema es que yo quiero que la sesión se inicie en el formulario anterior con los parámetros que yo quiero y verificarlos en el formulario siguiente, de tal manera que nadie pueda pasar al formulario siguiente sin previa validación. Lo que necesito es en todo momento comprobar que es ese usuario el que está accediendo. No puedo permitir que otro usuario vea los datos personales de nadie símplemente cambiando el user_id en la URL.
  #14 (permalink)  
Antiguo 15/12/2011, 17:06
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

si pones el codigo completo seria mas facil
  #15 (permalink)  
Antiguo 15/12/2011, 17:06
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

alguna idea o alternativa?
  #16 (permalink)  
Antiguo 15/12/2011, 17:08
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

sin ver el codigo pocas por que no se que puedes estar haciendo mal
  #17 (permalink)  
Antiguo 15/12/2011, 17:09
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

---> login.inc.php <---- botón del login
Código Javascript:
Ver original
  1. $("#Login_Login").click(function(){
  2.                 var Nick=$("#Login_Username").attr("value");
  3.                 var Pass=$().crypt({method:"b64enc",source:$("#Login_Password").attr("value")});
  4.                 $.getJSON('<?php echo AJAX_URL; ?>Login.php',{Nickname:Nick, Password:Pass},Message);
  5.                 function Message(data){
  6.                     if (data!=0){
  7.                         $("#Login_Error").css("display", "none");
  8.                         <?php session_start();  $_SESSION['sesion']=1; ?>
  9.                         window.location.href = ('/page/home.inc.php?user_id='+data);
  10.                     }else{
  11.                         $("#Login_Error").css("display", "block");
  12.                     }
  13.                 }
  14.             });

Código HTML:
Ver original
  1. ---> home.inc.php?user_id= <----
  2.  
  3. <div id="Home_Footer">
  4.             <?php
  5.                 echo $_SESSION['sesion'];
  6.             ?>
  7.             <li><a href="http://www.forosdelweb.com/f18/maintenance" title="Home">About Us</a></li>
  8.             <li><a href="http://www.forosdelweb.com/f18/maintenance" title="Home">Contact</a></li>
  9.         </div>
  #18 (permalink)  
Antiguo 15/12/2011, 17:17
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

perdona que me equivoque
  #19 (permalink)  
Antiguo 15/12/2011, 17:20
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

ese código es jquery, está dentro de un script, luego necesito php antes de pasar al siguiente formulario con un href para iniciar la sesión y la variable,.
  #20 (permalink)  
Antiguo 15/12/2011, 17:24
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

prueba asi

esto
<?php session_start(); $_SESSION['sesion']=1; ?>

lo dejas asi
<?php $_SESSION['sesion']=1; ?>

y session_start(); al comienzo de la pagina principal donde incluyes los archivos no en
-> login.inc.php <---- botón del login
  #21 (permalink)  
Antiguo 15/12/2011, 17:29
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

nada, ni en el fichero principal (index.php), también ya de paso he probado a ponerlo delante del html de login.inc.php y tampoco
  #22 (permalink)  
Antiguo 15/12/2011, 17:33
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

y xq no subes el index.php aber como esta con la parte de arriba vale las primeras lineas
  #23 (permalink)  
Antiguo 15/12/2011, 17:34
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

<?php
session_start();
include "page.php";
include "page/login.inc.php"; //call the first page of our webpage
?>
  #24 (permalink)  
Antiguo 15/12/2011, 17:34
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

perfecto ay esta bien
  #25 (permalink)  
Antiguo 15/12/2011, 17:36
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

pero debes de kitarlo del login.inc
  #26 (permalink)  
Antiguo 15/12/2011, 17:38
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

$("#Login_Login").click(function(){
var Nick=$("#Login_Username").attr("value");
var Pass=$().crypt({method:"b64enc",source:$("#Login_P assword").attr("value")});
$.getJSON('<?php echo AJAX_URL; ?>Login.php',{Nickname:Nick, Password:Pass},Message);
function Message(data){
if (data!=0){
$("#Login_Error").css("display", "none");
<?php session_start(); $_SESSION['sesion']=1; ?>
window.location.href = ('/page/home.inc.php?user_id='+data);
}else{
$("#Login_Error").css("display", "block");
}
}
});

que esta guardado tal cual en inc.login.php por que no lo guardas en javascript
  #27 (permalink)  
Antiguo 15/12/2011, 17:39
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

ok, lo pongo pues en el index.php
  #28 (permalink)  
Antiguo 15/12/2011, 17:40
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

mira el index dejalo con session-start() y le quitas a inc.login.php el session_start() y dejas solo la session y lo guardas como javascript y lo cambias en el index la extension y pruebas
  #29 (permalink)  
Antiguo 15/12/2011, 17:42
starlightphp
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

no te lo vas a creer, pero he dado con el problema.
El tema es que cuando estás en un nuevo formulario, tienes que iniciar otra vez la sesión para poder coger los cookies
  #30 (permalink)  
Antiguo 15/12/2011, 17:43
webankenovi
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: $_session

o pruebalo dejandolo tal cual guardao como php asi

Código PHP:
Ver original
  1. <script>  $("#Login_Login").click(function(){
  2.                     var Nick=$("#Login_Username").attr("value");
  3.                     var Pass=$().crypt({method:"b64enc",source:$("#Login_Password").attr("value")});
  4.                     $.getJSON('<?php echo AJAX_URL; ?>Login.php',{Nickname:Nick, Password:Pass},Message);
  5.                     function Message(data){
  6.                         if (data!=0){
  7.                             $("#Login_Error").css("display", "none");
  8.                             <?php $_SESSION['sesion']=1; ?>
  9.                             window.location.href = ('/page/home.inc.php?user_id='+data);
  10.                         }else{
  11.                             $("#Login_Error").css("display", "block");
  12.                         }
  13.                     }
  14.                 });</script>

Etiquetas: login, sql-server
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 02:20.