elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  obtener id login de session
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: obtener id login de session  (Leído 3,534 veces)
gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
obtener id login de session
« en: 20 Septiembre 2014, 18:50 pm »

Hola, necesito obtener el user_id del login actual para usarlo en una pagina.

Esta es la función que utilizo para el login:

Código
  1. function login($email, $password, $mysqli) {
  2.    // Using prepared statements means that SQL injection is not possible.
  3.    if ($stmt = $mysqli->prepare("SELECT id, username, password, salt
  4.        FROM members
  5.       WHERE email = ?
  6.        LIMIT 1")) {
  7.        $stmt->bind_param('s', $email);  // Bind "$email" to parameter.
  8.        $stmt->execute();    // Execute the prepared query.
  9.        $stmt->store_result();
  10.  
  11.        // get variables from result.
  12.        $stmt->bind_result($user_id, $username, $db_password, $salt);
  13.        $stmt->fetch();
  14.  
  15.        // hash the password with the unique salt.
  16.        $password = hash('sha512', $password . $salt);
  17.        if ($stmt->num_rows == 1) {
  18.            // If the user exists we check if the account is locked
  19.            // from too many login attempts
  20.  
  21.            if (checkbrute($user_id, $mysqli) == true) {
  22.                // Account is locked
  23.                // Send an email to user saying their account is locked
  24.                return false;
  25.            } else {
  26.                // Check if the password in the database matches
  27.                // the password the user submitted.
  28.                if ($db_password == $password) {
  29.                    // Password is correct!
  30.                    // Get the user-agent string of the user.
  31.                    $user_browser = $_SERVER['HTTP_USER_AGENT'];
  32.                    // XSS protection as we might print this value
  33.                    $user_id = preg_replace("/[^0-9]+/", "", $user_id);
  34.                    $_SESSION['user_id'] = $user_id;
  35.                    // XSS protection as we might print this value
  36.                    $username = preg_replace("/[^a-zA-Z0-9_\-]+/",
  37.                                                                "",
  38.                                                                $username);
  39.                    $_SESSION['username'] = $username;
  40.                    $_SESSION['login_string'] = hash('sha512',
  41.                              $password . $user_browser);
  42.                    // Login successful.
  43.                    return true;
  44.                } else {
  45.                    // Password is not correct
  46.                    // We record this attempt in the database
  47.                    $now = time();
  48.                    $mysqli->query("INSERT INTO login_attempts(user_id, time)
  49.                                    VALUES ('$user_id', '$now')");
  50.                    return false;
  51.                }
  52.            }
  53.        } else {
  54.            // No user exists.
  55.            return false;
  56.        }
  57.    }
  58. }

¿Como podria usar el id en otra pagina?

Gracias!


En línea

T. Collins

Desconectado Desconectado

Mensajes: 206


Ver Perfil
Re: obtener id login de session
« Respuesta #1 en: 20 Septiembre 2014, 19:16 pm »

Si utilizas
Código

en la otra página, tendrás las variables $_SESSION


En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: obtener id login de session
« Respuesta #2 en: 20 Septiembre 2014, 19:51 pm »

Sabes que quiere decir:

Citar
Notice: Array to string conversion in...

Asi es como lo tengo:
Código
  1. <?php
  2.  
  3. include_once 'includes/db_connect.php';
  4. include_once 'includes/functions.php';
  5.  
  6. sec_session_start();
  7.  
  8. $connectedUserID = $_SESSION['userID'];
  9.  
  10. $stmt = $mysqli->prepare("SELECT rc_usuario.*, rc_referidos.*
  11. FROM rc_referidos
  12. INNER JOIN rc_usuario ON rc_usuario.idUsuario = rc_referidos.idReferido
  13. WHERE rc_referidos.idRedComercio2 = '$connectedUserID'");
  14.  
  15. $stmt->execute();
  16. $stmt->store_result();
  17.  
  18. while ($stmt->fetch()) {
  19. $stmt['idUsuario'];
  20. $stmt['nombre'];
  21. $stmt['apellidos'];
  22. $stmt['status'];

¿Ves algún fallo? ¿el while y la forma de declarar ids esta bien?

Gracias!
« Última modificación: 20 Septiembre 2014, 19:55 pm por gAb1 » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: obtener id login de session
« Respuesta #3 en: 20 Septiembre 2014, 20:00 pm »

Tus variables $_SESSION[] no concuerdan. En uno tienes userID y en el otro user_id. Por cierto, no se hace mencion a la funcion sec_session_start en ningun lado. (session_start() debe estar presente en los dos scripts a menos que uno incluya al otro)
En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: obtener id login de session
« Respuesta #4 en: 20 Septiembre 2014, 20:10 pm »

Arreglado, gracias. sec_session_start es una funcion de functions.php

Ahora me da un error que antes no me daba...

Citar
Fatal error: Call to a member function execute() on a non-object in C:\xampp\htdocs\referral.php on line 22

la linea 22 es precisamente:

Código
  1. $stmt->execute();
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: obtener id login de session
« Respuesta #5 en: 20 Septiembre 2014, 20:24 pm »

Lo más probable es que el prepare haya fallado y haya devuelto FALSE.

Citar
mysqli_prepare() returns a statement object or FALSE if an error occurred.

Agrega antes del $stmt->execute :

Código
  1. if(!$stmt){
  2. echo $mysqli->error;
  3. }

Por cierto deberías utilizar los parametros para evitar SQLi.

Código
  1. $stmt = $mysqli->prepare("SELECT rc_usuario.*, rc_referidos.*
  2. FROM rc_referidos
  3. INNER JOIN rc_usuario ON rc_usuario.idUsuario = rc_referidos.idReferido
  4. WHERE rc_referidos.idRedComercio2 = ?");
  5. $stmt->bind_param('s', $connectedUserID);


« Última modificación: 20 Septiembre 2014, 20:42 pm por MinusFour » En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: obtener id login de session
« Respuesta #6 en: 20 Septiembre 2014, 21:03 pm »

Citar
Fatal error: Cannot use object of type mysqli_stmt as array in C:\xampp\htdocs\referral.php on line 45

Por usar:

Código
  1. $stmt['idUsuario'];

¿Cual es la forma correcta? ¿Y para imprimirlos entre etiquetas html?

Código
  1. echo'<li><a>'.$stmt['idUsuario'].'</a></li>';

Gracias.
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: obtener id login de session
« Respuesta #7 en: 20 Septiembre 2014, 21:33 pm »

Código
  1. $stmt->execute(); //Executa la sentencia
  2. $result = $stmt->get_result(); //Regresa un objeto tipo mysqli_result
  3. while($row = $result->fetch_array()){
  4.  $row['idUsuario']; //Columna idUsuario
  5. }
En línea

gAb1


Desconectado Desconectado

Mensajes: 731


Ver Perfil
Re: obtener id login de session
« Respuesta #8 en: 20 Septiembre 2014, 23:54 pm »

Muchas gracias ahora funciona todo perfectamente.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Consulta con Session « 1 2 »
PHP
Novalis 14 5,237 Último mensaje 23 Junio 2007, 19:52 pm
por Novalis
En el login ¿COOKIES O VARIABLES DE SESSION?(Solucionado)
PHP
Littl3 5 5,551 Último mensaje 19 Mayo 2009, 05:34 am
por [u]nsigned
php session
PHP
ime 2 2,294 Último mensaje 18 Junio 2013, 15:53 pm
por ime
Obtener datos de un usuario al ingresar al sistema por medio del login
Programación Visual Basic
k@0z 0 1,661 Último mensaje 23 Septiembre 2014, 05:15 am
por k@0z
Obtener metodo de login de un juego flash
Dudas Generales
Elmayoneso 2 3,062 Último mensaje 17 Enero 2024, 07:05 am
por Tachikomaia
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines