Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Funcion no crea variables de session

Estas en el tema de Funcion no crea variables de session en el foro de PHP en Foros del Web. Hola todos que tal, bueno tengo la siguiente funcion pero al ajecutarla me duvuelve true pero no crea las sesiones, que podria ser. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 23/02/2014, 13:29
 
Fecha de Ingreso: julio-2013
Mensajes: 158
Antigüedad: 6 años, 5 meses
Puntos: 6
Exclamación Funcion no crea variables de session

Hola todos que tal, bueno tengo la siguiente funcion pero al ajecutarla me duvuelve true pero no crea las sesiones, que podria ser.

Código PHP:
Ver original
  1. function login($email, $password, $mysqli) {
  2.  
  3.    if ($stmt = $mysqli->prepare("SELECT ...")) {
  4.         $stmt->bind_param('s', $email);
  5.         $stmt->execute();
  6.         $stmt->store_result();
  7.         $stmt->bind_result($user_id, $username, $db_password, $salt);
  8.         $stmt->fetch();
  9.         $password = hash('sha512', $password.$salt);
  10.         if($stmt->num_rows == 1) {
  11. if(checkbrute($user_id, $mysqli) == true) {
  12.                
  13.                 return false;
  14.         } else {
  15.         if($db_password == $password) {
  16.                 $user_browser = $_SERVER['HTTP_USER_AGENT']; //Obtén el agente de usuario del usuario
  17.                 $user_id = preg_replace("/[^0-9]+/", "", $user_id); //protección XSS ya que podemos imprimir este valor
  18.                 $_SESSION['user_id'] = $user_id;
  19.                 $_SESSION['login_string'] = hash('sha512', $password.$user_browser);
  20.              //Inicio de sesión exitosa
  21.                 return true;    
  22.         } else {
  23.                 //La conexión no es correcta
  24.                 $now = time();
  25.                 $mysqli->query("INSERT INTO ...");
  26.                 return false;
  27.         }
  28.         }
  29.         } else {
  30.         //No existe el usuario.
  31.         return false;
  32.         }
  33.    }
  34. }
  #2 (permalink)  
Antiguo 23/02/2014, 15:23
 
Fecha de Ingreso: julio-2013
Mensajes: 158
Antigüedad: 6 años, 5 meses
Puntos: 6
Respuesta: Funcion no crea variables de session

Despues de darle vueltas me di cuenta que el problema no esta en la funcion si no en la sesion misma, si creo la sesion en index.php por ejemplo y llamo a su valor en el mismo archivo si me retorna el valor pero si por ejemplo llamo a su valor en otro.php no amenos de que ya la aiga imprimido en index.php, por lo que que determine que solo puedo acceder a su valor en el archivo en el que la creo o si se imprimio anteriormentente en el archivo ¿a que se puede dever esto?
  #3 (permalink)  
Antiguo 23/02/2014, 15:31
Avatar de Alexis88
Objetivista
 
Fecha de Ingreso: noviembre-2011
Ubicación: Lima, Perú
Mensajes: 5.433
Antigüedad: 8 años, 1 mes
Puntos: 933
Respuesta: Funcion no crea variables de session

La sesión la creas y mantienes en cada archivo en donde deseas utilizar la variable o las variables de sesión en cuestión. Al inicio de todos esos archivos, debes crear/mantener la sesión.

Código PHP:
Ver original
  1. //Resto del código

Cuando una sesión ya fue creada en otro archivo o en el mismo y otra vez colocas esa línea, solamente mantendrá activa la sesión, de ese modo podrás utilizar a las variables de sesión.

Para más información, consulta el manual oficial.

Saludos
__________________
«Laissez faire et laissez passer, le monde va de lui même»
  #4 (permalink)  
Antiguo 23/02/2014, 16:00
 
Fecha de Ingreso: julio-2013
Mensajes: 158
Antigüedad: 6 años, 5 meses
Puntos: 6
Respuesta: Funcion no crea variables de session

Mi buen amigo gracias ya sabia lo de session_start(); pero gracias por el dato, el error estubo en que tenia que mantener la sesion dentro de la funcion. la sesion la iniciaba asi:

Código PHP:
Ver original
  1. function sec_session_start() {
  2.         $session_name = 'sec_session_id';
  3.         $secure = false;
  4.         $httponly = true;
  5.         ini_set('session.use_only_cookies', 1);
  6.         $cookieParams = session_get_cookie_params();
  7.         session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly);
  8.         session_name($session_name);
  9.         session_start();
  10.         session_regenerate_id(true);.
  11. }

por lo que al final quedo de la siguiente manera:

Código PHP:
Ver original
  1. function login($email, $password, $mysqli) {
  2.  
  3.    if ($stmt = $mysqli->prepare("SELECT ...")) {
  4.         $stmt->bind_param('s', $email);
  5.         $stmt->execute();
  6.         $stmt->store_result();
  7.         $stmt->bind_result($user_id, $username, $db_password, $salt);
  8.         $stmt->fetch();
  9.         $password = hash('sha512', $password.$salt);
  10.         if($stmt->num_rows == 1) {
  11. if(checkbrute($user_id, $mysqli) == true) {
  12.                
  13.                 return false;
  14.         } else {
  15.         if($db_password == $password) {
  16.                 sec_session_start();
  17.                 $user_browser = $_SERVER['HTTP_USER_AGENT']; //Obtén el agente de usuario del usuario
  18.                 $user_id = preg_replace("/[^0-9]+/", "", $user_id); //protección XSS ya que podemos imprimir este valor
  19.                 $_SESSION['user_id'] = $user_id;
  20.                 $_SESSION['login_string'] = hash('sha512', $password.$user_browser);
  21.              //Inicio de sesión exitosa
  22.                 return true;    
  23.         } else {
  24.                 //La conexión no es correcta
  25.                 $now = time();
  26.                 $mysqli->query("INSERT INTO ...");
  27.                 return false;
  28.         }
  29.         }
  30.         } else {
  31.         //No existe el usuario.
  32.         return false;
  33.         }
  34.    }

Gracias igual si no me hubieras dicho probablemente hubiera tardado mas en notarlo.
Y en cuanto la razón por la cual no me imprimía el valor en otra pagina que no fuera la creadora fue porque mientras asía pruebas para saber el error de la función, no note que en index.php mantenía la sesión con la función sec_session_start(); y en otro.php mantenía la sesión con la función estándar es decir session_start();

Etiquetas: crea, funcion, mysql, select, session, variables
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 22:40.