Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] ¿Cómo iniciar y detectar sesión?

Estas en el tema de ¿Cómo iniciar y detectar sesión? en el foro de PHP en Foros del Web. Hola de nuevo; tengo un código que comprueba si los datos ingresados en el formulario de "entrar.php" son correcto, y es este: Código PHP: <?php ...
  #1 (permalink)  
Antiguo 19/03/2015, 16:30
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 7 meses
Puntos: 145
Pregunta ¿Cómo iniciar y detectar sesión?

Hola de nuevo;

tengo un código que comprueba si los datos ingresados en el formulario de "entrar.php" son correcto, y es este:

Código PHP:
<?php
// Carga la configuración 
$config parse_ini_file('config.ini');  

// Conexión con los datos del 'config.ini' 
$connection mysqli_connect('localhost',$config['username'],$config['password'],$config['dbname']); 

// Si la conexión falla, aparece el error 
if($connection === false) { 
    return 
mysqli_connect_error(); 


//Validar usuario y contraseña
$email $_POST["user"];
$password $_POST["pass"];

//Conecta a la BD y comprueba si es correcto
$dbh $connection;
$stm $dbh->prepare("SELECT email FROM usuarios WHERE email=? AND password=?");
$stm->bind_param("ss",$email,$password);
$stm->execute();

$login_error_message "";

if (
$stm->fetch()) {
    
header('Location: asdf');
} else {
    
$login_error_message "El email o la contraseña son incorrectos.";
}

?>
Si es todo correcto, redirecciona a "asdf", sino, aparece el error.

Mi duda es, si los datos ingresados son correctos, ¿cómo hago para que solamente los usuarios logeados puedan ver "asdf"?
Y si no están logeados, re-direccionarlos a "debesingresar.php" (ejemplo).

"asdf" es un .php con un simple texto de bienvenida.
  #2 (permalink)  
Antiguo 19/03/2015, 16:40
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿Cómo iniciar y detectar sesión?

Pues es manejo de sesión simple, ¿ya buscaste en el foro por temas similares?

Me extraña porque yo he visto el mismo tema muchas veces.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 19/03/2015, 16:50
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 7 meses
Puntos: 145
Respuesta: ¿Cómo iniciar y detectar sesión?

Cita:
Iniciado por pateketrueke Ver Mensaje
Pues es manejo de sesión simple, ¿ya buscaste en el foro por temas similares?

Me extraña porque yo he visto el mismo tema muchas veces.
Me gustaría que me orientes un poco, es la primera vez que manejo sesiones y de las pocas veces que manejo PHP, y por más que lea la documentación es todo muy técnico.

¿No podrías darme una mano más "humana"?

Quizá una ayuda para saber como se inicia y se mantiene la sesión, donde va el código... Ando perdido.
  #4 (permalink)  
Antiguo 19/03/2015, 17:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ¿Cómo iniciar y detectar sesión?

Por favor, busca en el foro por temas similares, ahí tienes mucha más información que la que yo te puedo dar.

No tiene sentido que te repita todo eso si ya hay información al respecto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 19/03/2015, 17:18
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 7 meses
Puntos: 145
Respuesta: ¿Cómo iniciar y detectar sesión?

Cita:
Iniciado por pateketrueke Ver Mensaje
Por favor, busca en el foro por temas similares, ahí tienes mucha más información que la que yo te puedo dar.

No tiene sentido que te repita todo eso si ya hay información al respecto.
Pues no encuentro nada como lo que necesito. Quizá no sepa buscar...
  #6 (permalink)  
Antiguo 19/03/2015, 17:50
Avatar de NueveReinas  
Fecha de Ingreso: septiembre-2013
Ubicación: No tan Buenos Aires
Mensajes: 1.101
Antigüedad: 10 años, 7 meses
Puntos: 145
Respuesta: ¿Cómo iniciar y detectar sesión?

Vale, he encontrado un código algo parecido a lo que busco;

Código PHP:
<?php
// Carga la configuración 
$config parse_ini_file('config.ini');  

// Conexión con los datos del 'config.ini' 
$connection mysqli_connect('localhost',$config['username'],$config['password'],$config['dbname']); 

// Si la conexión falla, aparece el error 
if($connection === false) { 
    return 
mysqli_connect_error(); 
};

//Validar usuario y contraseña
$email $_POST["user"];
$password $_POST["pass"];

//Conecta a la BD y comprueba si es correcto
$consulta "SELECT * FROM usuarios WHERE email = '$email' AND password = '$password'";

$resultado mysql_query($consulta$connection) or die(mysql_error());
$datos mysql_fetch_array($resultado);

if(
$datos['email'] != $email or $datos['password'] != $password

     echo 
"El mail o la contraseña son incorrectos."
     exit(); 

else 

     
// Inicias la sesion 
     
session_start(); 
     
$_SESSION['usuario'] = $datos['email']; 
     
$_SESSION['estado'] = 'Autenticado'
     
// Muestras el contenido de la pagina 
};

?>
Sin embargo, el entrar, me aparece este fallo:

Warning: mysql_query() expects parameter 2 to be resource, object given in XXX/BD/login.php on line 24

La línea 24 es esta:

Código PHP:
$resultado mysql_query($consulta$connection) or die(mysql_error()); 
No entiendo el problema.

EDIT: Estaba usando una conexión SQLi y una query SQL.
Además, no estaba bien escrito, en la query es primero la conexión y después la consulta.
Solución:

Código PHP:
$resultado mysqli_query($connection$consulta) or die(mysql_error());
$datos mysqli_fetch_array($resultado); 

Última edición por NueveReinas; 19/03/2015 a las 17:58 Razón: Solucionado

Etiquetas: formulario, mysql, select, usuarios
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 01:12.