PHP PDO, запрос имени пользователя - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть запрос php dpo:

<?php
    include '../reg/db.php';
    $stmt = $db->query("SELECT * FROM users");
    while ( $row = $stmt->fetch() ) {
    $password_hashed = $row['password'];
    $username = $row['name'];
}

Затем, когда мне нужно отобразить имя пользователя, который только что вошел в систему, , но оно показывает неправильное имя !(бывший я Алекс, он пишет, что я Джон (Джон уже в БД, не понимаю, почему он выбирает другое имя)

if ( password_verify( $_POST['password'], $password_hashed )  ) { ?>
   <div class="enterReg">
     <div class="frameworkForUser">
     <div class="usernameMargin">
     <? echo $username; ?>
   </div>
<? } ?>

Как я могу получить имя пользователя, который только что вошел в систему? Немного поработал в интернете, но ничего о нём не нашел .-.

1 Ответ

0 голосов
/ 25 февраля 2019

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

что-то вроде:

$username =$_POST['username'];
$password = password=$_POST['password'];

 $stmt = $db->query("SELECT * FROM users where username='$username' and password= '$password'");

Хотя это может решить вашу проблему, но, пожалуйста, не используйтеэтот код в работе из-за страха перед sql-инъекцией, html-скриптингом Attack и т. д.

Вы можете лучше использовать Подготовленное Mysqli заявление или лучше использовать PDO.

чтобы обезопасить себя от атаки html-элементов, вы можете использовать функцию strip_tags ()

Пример

$username =strip_tags($_POST['username']);
$password = strip_tags(password=$_POST['password']);

Обновленный ответ

Вариант 1используя сеансы

<?php


    include '../reg/db.php';
$username = strip_tags($_POST['username']);
$password = strip_tags($_POST['password']);


if ($username == ''){
echo "username is empty";
exit();
}


if ($password == ''){
echo "Password is empty";
exit();
}



$stmt = $db->prepare('SELECT * FROM users where username = :username and password = :password');

        $result->execute(array(
            ':username' => $username, ':password' => $password));

$count = $stmt->rowCount();
$row = $result->fetch();

if( $count == 1 ) {
echo "login sucessful";
// Redirect me to a Dasboard.php to display the login user
echo "<script>window.location='dashboard.php'</script>";


//Initialize a session
session_start()

//Prevent session Fixation Attack using session generated Id;
session_regenerate_id();

// pass users info in a session if things where ok.
// Prevent xss Attack using Htmlspecialchar or htmlentities() functions

$_SESSION['name'] = htmlspecialchars($row['name']);
$_SESSION['username'] = htmlspecialchars($row['username']);

// Do not pass users password in a session
//$_SESSION['password']=htmlspecialchars($row['password']);

}
else {

echo "<font color=red>Either Username or Password is Wrong</font>";
}


?>

на dashboard.php , теперь вы можете получить приведенный ниже код в зависимости от ваших реализаций .....

// initialize sessions

session_start();

// the the authenticated users parameters

Name: <?php echo $_SESSION['name']; ?><br>
userName: <?php echo $_SESSION['username']; ?><br>

вариант 2 Нет сеанса использования

<?php


    include '../reg/db.php';
$username = strip_tags($_POST['username']);
$password = strip_tags($_POST['password']);


if ($username == ''){
echo "username is empty";
exit();
}


if ($password == ''){
echo "Password is empty";
exit();
}



$stmt = $db->prepare('SELECT * FROM users where username = :username and password = :password');

        $result->execute(array(
            ':username' => $username, ':password' => $password));

$count = $stmt->rowCount();
$row = $result->fetch();

if( $count == 1 ) {
echo "login sucessful";
// Redirect me to a Dasboard.php to display the login user
//echo "<script>window.location='dashboard.php'</script>";


$name = htmlspecialchars($row['name']);
$username = htmlspecialchars($row['username']);

echo "userame: $username </br>";
echo "Name: $name </br>";


}
else {

echo "<font color=red>Either Username or Password is Wrong</font>";
}


?>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...