2017-05-20 288 views
0

我在一個簡單的登錄屏幕PHP和MySQL正在與此全碼:PHP登錄屏幕

<?php 
include("conexion.php"); 
session_start(); 
if (isset($_SESSION['username'])) { 
?> 
<!DOCTYPE html> 
<meta charset="utf-8"> 
<html lang="es"> 
<html> 
<head> 
    <title></title> 
</head> 
<body> 
<h1>YA INICIASTE SESION <?php echo $_SESSION['username']?></h1> 
</body> 
</html> 
<?php 
}else{ 

?> 
<!DOCTYPE html> 
<html lang="es"> 
<meta charset="utf-8"> 
<head> 
    <title>Login</title> 
    <link rel="stylesheet" type="text/css" href="css/estilos.css"> 
</head> 
<body> 
<center> 
<div class="caja_login"> 
<form method="POST" action="inicio.php"> 
    <label>Nombre de usuario:</label><input type="text" name="usuario" placeholder="Usuario" required/><br><br> 
    <label>Contraseña:</label><input type="password" name="contra" placeholder="Contraseña" required /><br><br> 
    <input type="submit" value="Entrar" name="iniciar-sesion"/><br> 
</form> 
</div> 
<div class ="caja_registro"> 
<form method="POST"> 
    <h4><label>¿Aún no estás registrado?</label></h4> 
    <label>Nombre de usuario:</label><br><input type="text" name="nombrerg" placeholder="Nombre de usuario" required><br> 
    <label>Contraseña:</label><br><input type="password" name="contrarg" placeholder="Contraseña" required><br> 
    <label>Repetir contraseña:</label><input type="password" name="contrarg2" placeholder="Repita la contraseña" required><br> 
    <input type="submit" name="registro" value="Crear Cuenta"><br> 
    </form> 
</div> 
</center> 

<?php //----------------------PARA EL REGISTRO----------------------- 
include("conexion.php"); 
if(isset($_POST['registro'])){ 
    $sql = 'SELECT * FROM cuenta'; 
    $rec = mysqli_query($conexion, $sql); 
    $verificar =0; 

    while ($resultado = mysqli_fetch_object($rec)) { 
     if($resultado->usuario == $_POST['nombrerg']) {//verificamos que el nombre de usuario no existe 
      $verificar = 1;//si verificar es 1 es que el usuario esta repetido 
     } 
    } 
    if ($verificar == 0) { //si varificar es 0 entonces el nombre no esta repetido 
     if ($_POST['contrarg'] == $_POST['contrarg2']) { 
      $nom = $_POST['nombrerg']; 
      $pw = $_POST['contrarg']; 
      $pw_en = password_hash($pw, PASSWORD_DEFAULT); //encripta la contraseña 

      $conexion->query("INSERT INTO cuenta (usuario, contra) VALUES ('$nom','$pw_en')"); 
      mysqli_query($conexion, $sql); 

      header('Location: inicio.php'); 
     }else{ 
      echo "Intente con otro usuario y contraseña"; 
     } 
     }else{ 
      echo "Intente con otro usuario y contraseña"; 
      }  
    } 
//-----------------------------PARA EL LOGIN------------------------- 
    if (isset($_POST['iniciar-sesion'])) { //se comprueba que el boton iniciar sesion fue presionado  
     $username = $_POST['usuario']; 
     $sqlLogin= "SELECT usuario,contra FROM cuenta WHERE usuario= '$username'"; 
     $recLogin= mysqli_query($conexion, $sqlLogin); 
     $sesion= mysqli_fetch_array($recLogin); 

     if(password_verify($_POST['contra'], $sesion['contra'])){ 
      $_SESSION['username'] = $_POST['usuario']; 
      header('Location: inicio.php'); 
     }else{ 
     echo "Usuario o contraseña incorrectos"; 
     header('Location: index.php'); 
     } 

    } 
?> 
</body> 
</html> 
<?php 
} 
?> 

但是,當我登錄時,用戶名和密碼是否正確,它會在,但我不知道爲什麼。 我在index.php屏幕沒有得到任何錯誤。

+0

password_verify的代碼是什麼? – inarilo

+0

@inarilo ['password_verify()'](http://php.net/manual/en/function.password-verify.php)是一個php內置函數 – Sean

+0

這是正確的肖恩 – user8004087

回答

1

您正在提交表格到inicio.php,如果用戶已經登錄,他們應該到這裏。在您的表格中更改action=inicio.php

<form method="POST" action=""> 
    <label>Nombre de usuario:</label><input type="text" name="usuario" placeholder="Usuario" 
              required/><br><br> 
    <label>Contraseña:</label><input type="password" name="contra" placeholder="Contraseña" 
            required/><br><br> 
    <input type="submit" value="Entrar" name="iniciar-sesion"/><br> 
</form>