Ver Mensaje Individual
  #4 (permalink)  
Antiguo 23/02/2014, 16:00
cesa_r
 
Fecha de Ingreso: julio-2013
Mensajes: 158
Antigüedad: 10 años, 9 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();