PHP Login script работает только с именами пользователей, известными mysql - PullRequest
0 голосов
/ 14 мая 2019

Этот скрипт должен получить некоторые переменные формы отправки.Затем он должен проверить их в БД и посмотреть, совпадают ли пароль и имя пользователя, если нет, отправить их обратно на страницу входа.

Я уже пытался позволить ему проверить, существует ли имя пользователя через:

$this = "Select name from user where name = '".$_POST['name']"'";

$query = mysqli_query($conn,$this);

while( $row = mysqli_fetch_assoc($query)){

if (empty($row['name']){

 do this;

}

}

Но все еще есть пустая страница.

<?php
include "private/dbconnection.inc.php";

$conn = mysqli_connect($servername, $username, $password, $db);

if(!$conn){
  die ("Verbindung fehlgeschlagen: ". mysqli_connect_error());
}

$selectpw = "SELECT * from user where name = '".$_POST['name']." ' ";
$pwcheck = mysqli_query($conn,$selectpw);
$selectname = "SELECT name from user where name = '".$_POST['name']."'";
$namecheck = mysqli_query($conn,$selectname);
while ( $row = mysqli_fetch_assoc($pwcheck)){
  if ( $_POST['password'] === $row['password'] && $_POST['name'] === $row['name'] ){
header("Location:https://myhost.de/xxx/this/user.php");
}
else{
  header("Location:https://myhost.de/xxxx/prototyp1/");
}
}
mysqli_close($conn);
?>

Скрипт должен проверить, является ли пользователь действительным для входа в систему, если он не должен быть отправлен обратно для входа в систему.Если он действителен, он попадает на другую страницу.

Но он работает только с именами пользователей, которые MySQL знает с другими именами пользователей, которых я застрял на странице php, и он просто показывает пустой экран.

1 Ответ

0 голосов
/ 15 мая 2019

Как сказал Обсидиан, ваш код потенциально уязвим для внедрения SQL, поэтому было бы более целесообразно использовать PDO. Это можно сделать так, как показано в следующем примере основного кода.

<?php
include "private/dbconnection.inc.php";

try {
    $db = new PDO('host=' . $server_name . ';dbname=' . $database . 'charset=utf-8;', $username, $password);
}
catch(PDOException $e)
{
    throw $e; // Throw the PDOException if something failed
}

if(isset($_POST['username']) && isset($_POST['password']))
{
    if(!empty($_POST['username'] && !empty($_POST['username'])
    {
        $query = $db->prepare('SELECT password FROM users WHERE username = ?');

        $query->bindParam(1, trim($_POST['username']));

        if($query->execute())
        {
            $password = $query->fetchColumn();

            if($_POST['password'] == $password)
            {
                header('Location: https://myhost.de/xxx/this/user.php');
            } else {
                header('Location: https://myhost.de/xxxx/prototyp1/');
            }
        }
    }
}

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