2016-08-08 6 views
0

Когда я вхожу в систему Я использую mysql.user, но я не могу войти в систему, если у пользователя есть пароль. Если я вошел в систему с использованием любого пользователя с паролем, страница не может войти в систему на другой php.Как получить значение пароля mysql.user

Пользователь, введенный в журнал, будет использоваться при подключении к базе данных.

<?php session_start(); ?> 


<!DOCTYPE HTML> 
<html> 
<head> 
<title>Log in</title> 
<meta charset="UTF-8" /> 
<link rel="stylesheet" type="text/css" href="css/reset.css"> 
<link rel="stylesheet" type="text/css" href="css/structure.css"> 

<?php include('connection.php'); ?> 

</head> 

<body> 
<form class="box login" method="post"> 
    <fieldset class="boxBody"> 
     <label>Username</label> 
     <input type="text" tabindex="1" placeholder="Username" required name="username" id="username"> 
     <label><label class="rLink" tabindex="5">Optional</label>Password</label> 
     <input type="password" tabindex="2" placeholder="Password" name="password" id="password" > 
    </fieldset> 
    <footer> 
     <input type="submit" class="btnLogin" value="Login" tabindex="4" name="sent"> 
    </footer> 
</form> 

<?php 

    if (isset($_POST['sent'])) { 
    $servername = "localhost"; 
    $username = ($_POST['username']); 
    $password = ($_POST['password']); 
    $message=""; 

    // Create connection 
    $result = $conn->query("SELECT user FROM mysql.user where user='$username' and password='$password'"); 
    if ($result->num_rows > 0) {      
     $_SESSION["uname"] = "$username"; 
     $_SESSION["pass"] = "$password"; 
     echo '<script type="text/javascript">alert(<?php echo "Success!";?>)</script>'; 
     header("location: main.php"); 
    } else { 
     $message = "Successfuly entered! hi! $username"; 
     echo '<script type="text/javascript">alert(<?php echo "$message";?>)</script>'; 
    } 
}   

// Check connection 
?> 

</body> 
</html> 
+0

вы можете установить его или войти в систему, вы не можете получить не хешированное значение из хэша. Вы можете позвонить 'SET PASSWORD FOR 'jeffrey' @ 'localhost' = PASSWORD ('cleartext password'); ' – Drew

+0

Я полагаю, что вы хотите« оповещать », когда вы нашли пользователя, или нет: ' if ($ result-> num_rows> 0) { $ _SESSION ["uname"] = "$ username"; $ _SESSION ["pass"] = "$ password"; echo ''; header ("location: main.php"); } else { $ message = "Успешно введено! Hi! $ Username"; echo '';} } ' Вы забыли кавычки для параметров« предупреждения ». –

+0

@ BenoitNgô пароль по моему запросу для выбора не работает, – user5789297

ответ

1

Вы бы лучше проверить на наличие ошибок базы данных, которые могут произойти здесь

$conn->query("SELECT user FROM mysql.user where user='$username' and password='$password'"); 

Проверьте, если запрос выполняется первым. Ее также лучше использовать этот один

"SELECT * FROM mysql.user WHERE user= ?" 

После проверки количества строк. Вы можете использовать текущий пароль с помощью соли пользователя, а затем проверить, равны ли они.

Для более широкого использования безопасности подготовил проверку statements.And если $_POST['username'] и $_POST['password'] установлены слишком (даже если ваши поля ввода «требуется»)

И вторя ваши ошибки, вы можете иметь пункт с идентификатором ошибки

<p id="error"></p> 

И эхо это один

'<script> 
document.getElementById("error").innerHTML = "'.$error.'" 
</script>' 

Мой первый ответ простите за плохой английский.

Смежные вопросы