Nueva pregunta

Pregunta:

Fecha: 27-06-2018 08:01:15 (En Español)

Problema con recordar usuario y validar[No resuelta]

tengo mi archivo login.php donde iniciar sesión usuario normal y usuario administrador. y gracias a mi archivo validar.php verifica si es usuario normal direcciona al archivo menu1.php y si es un usuario administrador direcciona al menuadmin.php. mi problema es al recordar usuario, cunado esta marcado mi checkbox funciona todo bien pero cunado no marco mi recordar usuario o el checkbox no ingresa. adjunto mi código. necesito ayuda urgente
<?php
session_start();
$conn = new mysqli("localhost", "121212145454", "", "45454454545") or die(mysqli_error());
if(isset($_POST["submit"])){
 $sql = "SELECT * FROM login WHERE email = '".$_POST["email"]. "' AND password = '" .$_POST["pass"]."'";
 $query = mysqli_query($conn, $sql);
 $res = mysqli_fetch_assoc($query);
 if($res)
 {
 if(!empty($_POST["remember"]))
 {
 setcookie ("email", $_POST["email"], time() + (10 * 365 * 24 * 60 * 60));
 setcookie ("pass", $_POST["pass"], time() + (10 * 365 * 24 * 60 * 60));
 }
 else
 {
 if(isset($_COOKIE["email"]))
 {
 setcookie ("email", "");
 }
 if(isset($_COOKIE["pass"]))
 {
 setcookie ("pass", "");
 }
 }
 header("Location:validar.php");
}
}
?>
<!DOCTYPE html>
		<html>
		<head>
		<title>UPEAPP</title>
		<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
			<!-- vinculo a bootstrap
	    <link rel="icon" type="image/png" href="imagenes/upelogo2.png"/>-->
		<link rel="shortcut icon" href="imagenes/logoico.ico" />
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Temas-->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
<!-- se vincula al hoja de estilo para definir el aspecto del formulario de login-->  
<link rel="stylesheet" type="text/css" href="estiloindex.css">
		</head>
		<body>
		 <div id="Contenedor">
		 <div class="Icon">
                    <!--Icono de usuario

                   <span class="glyphicon glyphicon-user"></span>-->
                    <img src="imagenes/UPE-logo.png" class="logo center-block" >
                 </div>
                 
            <div class="ContentForm">
		 	<form action="" method="post" name="FormEntrar">
		 		<div class="input-group input-group-lg">
				  <span class="input-group-addon" id="sizing-addon1"><i class="glyphicon glyphicon-envelope"></i></span>
				  <input type="email" class="form-control" name="email" value="<?php if(isset($_COOKIE["email"])) { echo $_COOKIE["email"]; } ?>" placeholder="Correo" id="Correo" aria-describedby="sizing-addon1" required>
				</div>
				<br>
				<div class="input-group input-group-lg">
				  <span class="input-group-addon" id="sizing-addon1"><i class="glyphicon glyphicon-lock"></i></span>
				  <input type="password" name="pass" value="<?php if(isset($_COOKIE["pass"])) { echo $_COOKIE["pass"]; } ?>" class="form-control" placeholder="******" aria-describedby="sizing-addon1" required>
				</div>
        
        				<input type="checkbox" name="remember" <?php if(isset($_COOKIE["email"])) { ?> checked <?php }?>/>
                        <label>Recordar</label><br/><br/>
			    
				<button class="btn btn-lg btn-primary btn-block btn-signin" id="IngresoLog" name="submit" type="submit" >Entrar</button>
			    <p><?php if(isset($msg)) {echo $msg;} ?></p>
				<div class="opcioncontra"><a href="registrousuario.php">Registrarme</a></div>
				<div class="opcioncontra"><a href="mandaremail2.php">Olvidaste tu contrasena?</a></div>
		 	</form>
		 </div>	
		 </div>
</body>
 <!-- vinculando a libreria Jquery-->
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
 <!-- Libreria java scritp de bootstrap -->
 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
</html>


<?php
session_start();
	$mysqli = new MySQLi("localhost", "4545454545", "", "454545454");
		if ($mysqli -> connect_errno) {
			die( "Fallo la conexión a MySQL: (" . $mysqli -> mysqli_connect_errno() 
				. ") " . $mysqli -> mysqli_connect_error());
		}
	
	$email=$_COOKIE["email"];
	$pass=$_COOKIE["pass"];


	$sql2=mysqli_query($mysqli,"SELECT * FROM login WHERE email='$email'");
	if($f2=mysqli_fetch_assoc($sql2)){
		if($pass==$f2['pasadmin']){
			$_SESSION['id']=$f2['id'];
			$_SESSION['user']=$f2['user'];
			$_SESSION['rol']=$f2['rol'];
			$_SESSION['cedula']=$f2['cedula'];

			echo '<script>alert("BIENVENIDO ADMINISTRADOR")</script> ';
			echo "<script>location.href='menuadmin.php'</script>";
		
		}
	}



	$sql=mysqli_query($mysqli,"SELECT * FROM login WHERE email='$email'");
	if($f=mysqli_fetch_assoc($sql)){
		if($pass==$f['password']){
			$_SESSION['id']=$f['id'];
			$_SESSION['user']=$f['user'];
			$_SESSION['rol']=$f['rol'];
			$_SESSION['cedula']=$f['cedula'];
			$_SESSION['email']=$f['email'];
			$_SESSION['password']=$f['password'];

			header("Location: menu1.php");
		}else{
			echo '<script>alert("CONTRASEÑA INCORRECTA")</script> ';
		
			echo "<script>location.href='index.html'</script>";
		}
	}else{
		
		echo '<script>alert("ESTE USUARIO NO EXISTE, PORFAVOR REGISTRESE PARA PODER INGRESAR")</script> ';
		
		echo "<script>location.href='index.html'</script>";	

	}

?>


Etiquetas: PHP Votos: 0 - Respuestas: 2 - Vistas: 17 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 27-06-2018 09:25:09 OK lo primero sería no No generes Cookies sin encriptar y menos la data de acceso del usuario.

    Lo segundo es que no estas limpiando las variables que le pasas a tu query, las estas mandando directa, nos avisas cuando te dejen las bases de datos vacías con algún ataque.

    Lo tercero seria implementar dos validaciones por separado, la primera valida que esxista la cookie de recordar y la segunda que se haya enviado el formulario, en caso de no cumplirse ninguna simplemente muestra el login

    //Valido que haya una cookie que indique que deseo ser recordado
    if(isset($_COOKIE['rec']) && $_COOKIE['rec']===TRUE){
        //Ejecuto el login del usuario
        if($auth->login('cookie','')){
            //Envio a escritorio
            header('location:miweb.php');
        }else{
            //Si hay error en el login
            header('location:login.php?msg=errorLogin');
        }
    }
    
    if(isset($_POST['submit'])){
        //Ejecuto el login del usuario
        if($auth->login('form',$_POST)){
            //Envio a escritorio
            header('location:miweb.php');
        }else{
            //Si hay error en el login
            header('location:login.php?msg=errorLogin');
        }
    }
    


    te recomiendo trabajar con clases para que organices mejor tu código y así el mantenimiento futuro no sea un verdadero infierno.

    En todo caso en el ejemplo estoy pasando al método login de la clase auth el tipo de login y como segundo parámetro podría ser la data del formulario o simplemente nullo dependiendo del tipo.

    ya en el método validas el tipo de auth y ejecutas en función de este el desencriptado de los datos de autenticación de las cookies por ejemplo, creas las variables de sesión y retornas true si todo fue correcto o false si hubo algún error.

    De esta manera la web al yo ingresar validaría al llegar al login, si mi usuario o en este caso, el equipo tiene una cuenta recordada, ojo, yo recomiendo la autenticacion en 2 pasos para los casos de recordar cuentas, eso porque si es un app empresarial no vas a querer que nadie este usmeando en tu sistema.

    por ende asi el sistema recuerde tu login, te confirma con un código por ejemplo que te llegue la móvil, pues el equipo no sabe al final quien esta detrás del teclado.
      Votos: 4 - Link respuesta
     
  • Fecha: 27-06-2018 10:02:36 hola muchas gracias por tu respuesta. es que soy nuevo en esto y estoy haciendo un proyecto de mi clase no sera aplicada pero si tiene que funcionar en el momento de la exposición. si me pudieras ayudar con un ejemplo de código me seria de mucha ayuda. gracias   Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com