PHP PDO изменить статус таблицы, чтобы забанить пользователя - PullRequest
0 голосов
/ 19 декабря 2018

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

Это весь код:

if ( isset($_GET['username'], $_GET['password'], $_GET['hwid']) ) {

//We use prepared statements, why? Because it's much more safe.
$userStatement = $connect->prepare('SELECT * FROM ROE WHERE username = :u AND password = :p');
//We bind each param, no need to use htmlspecialchars or real_escape_string since PDO will do this for us
$userStatement->bindParam(':u', $_GET['username'], PDO::PARAM_STR);
$userStatement->bindParam(':p', $_GET['password'], PDO::PARAM_STR);
//We only continue when the statement is succesfully executed.
if ( $userStatement->execute() ) {
    echo $userStatement->fetchColumn(0) > 0 ? '5352978916' : '0017577757';
}

//We use prepared statements, why? Because it's much more safe.
$userStatement1 = $connect->prepare('SELECT * FROM ROE WHERE hwid = :h');
//We bind each param, no need to use htmlspecialchars or real_escape_string since PDO will do this for us
$userStatement1->bindParam(':h', $_GET['hwid'], PDO::PARAM_STR);
//We only continue when the statement is succesfully executed.
if ( $userStatement1->execute() ) {
    echo $userStatement1->fetchColumn(0) > 0 ? '<br /><br />4201426523' : '<br /><br />8940042580' . $userStatement = $connect->prepare("UPDATE ROE SET status='2' WHERE username=':u'");
}

}

Эта строка кода говорит мне, если пользователь вошел в систему правильно:

        echo $userStatement1->fetchColumn(0) > 0 ? '<br /><br />4201426523' : '<br /><br />8940042580' . $userStatement = $connect->prepare("UPDATE ROE SET status='2' WHERE username=':u'");

Когда веб-сайтотображает 4201426523 поле правильно и когда веб-сайт отображает 8940042580, это неправильно.Теперь я попытался добавить функцию запрета, которая будет работать, если веб-сайт отображает 8940042580, и он должен изменить статус пользователя в моей базе данных phpmyadmin на 2, однако он не работает.

Может кто-нибудь помочь мне?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Этот оператор не имеет никакого смысла:

echo $userStatement1->fetchColumn(0) > 0 ? 
    '<br /><br />4201426523' : 
    '<br /><br />8940042580' . $userStatement = $connect->prepare("UPDATE ROE SET status='2' WHERE username=:u");

Когда результат fetchColumn(0) равен 0, вы пытаетесь вывести строку '<br /><br />8940042580', объединенную с объектом результата из prepare оператор, который должен давать вам ошибку «объект не может быть преобразован в строку».

Я думаю, что вы хотели написать:

if ($userStatement1->fetchColumn(0) > 0) {
    echo '<br /><br />4201426523';
}
else {
    echo '<br /><br />8940042580';
    $userStatement = $connect->prepare("UPDATE ROE SET status='2' WHERE username=:u");
    $userStatement->bindParam(':u', $_GET['username'], PDO::PARAM_STR);
    $userStatement->execute();
}
0 голосов
/ 19 декабря 2018

На самом деле вы готовите запрос только в последнем операторе if:

$userStatement = $connect->prepare("UPDATE ROE SET status='2' WHERE username=':u'"); 

без его выполнения с

$userStatement->execute();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...