[Resuelto] Check Login y redirigir en función de un mail

Iniciado por bgnumis, 25 Agosto 2019, 22:06 PM

0 Miembros y 2 Visitantes están viendo este tema.

bgnumis

Hola, tengo creado (copiado de los tutoriales que orientan y ayudan para crear un login), cuando le das a login (donde pones tu nombre de usuario (email) y password) te redirige a checklogin.php

La cuestión es que me gustaría a partir de este checklogin.php añadir con SESSION una condicional que hago lo siguiente:

1.  si el Email que es el usuario de session y con el que me "logeo" es prueba@gmail.com entonces me redirija a prueba.php

(subpregunta ¿Cómo hago para que en prueba debe hacer la comprobación de que el usuario está registrado y sino lo expulse?)

, y cualquier otra cosa me deje en el checklogin (en este caso parece que no te dejar acceder si no estás logeado, aunque ¿por qué no utiliza SESSION, cómo hacer que también utilice SESSION? lo cogí de un ejemplo, disculpad porque se me escoñó el pc y no recuerdo el autor, sino lo pondría por supuesto).

checklogin:

Código (php) [Seleccionar]



<?php
session_start
();
?>


<!doctype html>
<html lang="en">
<head>
<title>Check Login and create session</title>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
</head>
<body>
<div class="container">

<?php
// Connection info. file
include 'conn.php';

// Connection variables
$conn mysqli_connect($dbhost$dbuser$dbpass$dbname);

// Check connection
if (!$conn) {
die("Connection failed: " mysqli_connect_error());
}

// data sent from form login.html 
$email $_POST['email']; 
$password $_POST['password'];

// Query sent to database
$result mysqli_query($conn"SELECT Email, Password, Name FROM users WHERE Email = '$email'");

// Variable $row hold the result of the query
$row mysqli_fetch_assoc($result);

// Variable $hash hold the password hash on database
$hash $row['Password'];

/* 
password_Verify() function verify if the password entered by the user
match the password hash on the database. If everything is OK the session
is created for one minute. Change 1 on $_SESSION[start] to 5 for a 5 minutes session.
*/
if (password_verify($_POST['password'], $hash)) {

$_SESSION['loggedin'] = true;
$_SESSION['name'] = $row['Name'];
$_SESSION['start'] = time();
$_SESSION['expire'] = $_SESSION['start'] + (60) ;

echo "<div class='alert alert-success mt-4' role='alert'><strong>Welcome!</strong> $row[Name]
<p><a href='edit-profile.php'>Edit Profile</a></p>
<p><a href='logout.php'>Logout</a></p></div>"
;

} else {
echo "<div class='alert alert-danger mt-4' role='alert'>Email or Password are incorrects!
<p><a href='login.html'><strong>Please try again!</strong></a></p></div>"
;
}
?>

</div>
<!-- Optional javascript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>

</body>
</html>



bgnumis

Hola lo he conseguido¡


He puesto esto:

Código (php) [Seleccionar]


if ( $email === 'prueba@gmail.com' ){

if (password_verify($_POST['password'], $hash)) {



header('Location:mipagina.php');

} else {
echo "<div class='alert alert-danger mt-4' role='alert'>Email or Password are incorrects!
<p><a href='login.html'><strong>Please try again!</strong></a></p></div>";
}






#!drvy

#2
Código (php,5,6,38,39,40,41) [Seleccionar]
<?php
session_start
();
$login_error false;

// Si el usuario no tiene sesión iniciada pero si ha enviado email y contraseña...
if (empty($_SESSION['loggedin']) && isset($_GET['email'], $_GET['password'])) {
    
$email $_GET['email'];
    
$password $_GET['password'];
    
$login_error true;

    
// Conectate a la BD solo cuando hace falta.
    
include 'conn.php';
    
$conn mysqli_connect($dbhost$dbuser$dbpass$dbname);

    if (!
$conn) {
        die(
'Connection failed: ' mysqli_connect_error());
    }

    
// Usa sentencias preparadas para evitar SQLi, asegurante de que solo sacas cuantos datos necesitas
    // https://www.php.net/manual/es/mysqli.prepare.php
    // https://es.wikipedia.org/wiki/Inyecci%C3%B3n_SQL
    // https://www.owasp.org/index.php/SQL_Injection
    
$stmt mysqli_prepare($conn'SELECT Email, Password, Name FROM users WHERE Email = ? LIMIT 1');
    
mysqli_stmt_bind_param($stmt's'$email);
    
mysqli_stmt_execute($stmt);
    
$res mysqli_stmt_get_result($stmt);
    
$row mysqli_fetch_assoc($res);

    if (!empty(
$row['Password']) && password_verify($password$row['Password'])) {
        
$_SESSION['loggedin'] = true;
        
$_SESSION['name'] = $row['Name'];
        
$_SESSION['start'] = time();
        
$_SESSION['expire'] = $_SESSION['start'] + (60);
        
$login_error false;

        
// Siempre comprueba los strings con 3 =
        // https://www.php.net/manual/en/language.operators.comparison.php
        
if ($email === 'prueba@gmail.com') {
            
header('Location: mipagina.php');
            exit;
        }
    }
}
?>


<!doctype html>
<html lang="en">

<head>
   <title>Check Login and create session</title>
   <!-- Required meta tags -->
   <meta charset="utf-8">
   <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

   <!-- Bootstrap CSS -->
   <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
</head>

<body>
   <div class="container">
       <?php if (!empty($_SESSION['loggedin']) && !$login_error) : ?>

           <div class='alert alert-success mt-4' role='alert'>
               <strong>Welcome!</strong>
               <?php
                    
// Asegurate de imprimir escapar HTML cuando imprimes input del usuario
                    
echo htmlentities($_SESSION['name']);
                
?>

               <p><a href='edit-profile.php'>Edit Profile</a></p>
               <p><a href='logout.php'>Logout</a></p>
           </div>

       <?php else : ?>

           <div class='alert alert-danger mt-4' role='alert'>
               Email or Password are incorrect!
               <p><a href='login.html'><strong>Please try again!</strong></a></p>
           </div>

       <?php endif; ?>
   </div>
   <!-- Optional javascript -->
   <!-- jQuery first, then Popper.js, then Bootstrap JS -->
   <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
   <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
   <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>

</body>
</html>



Los consejos los he dejado en código.

Saludos