PHP проверяет БД, если пользователь SESSION "забанен" не возвращает true? - PullRequest
0 голосов
/ 29 октября 2018

Я потерян, см. Код ниже. Предполагается, что PHP выдает эхо «Вас забанят», если в db + table есть запись web_wan.blockaccount, где имя столбца «isban» равно 1. Однако при тестировании добавьте строку в таблицу:

id - username - isban

1 myuser 1

Ничего не происходит, сайт загружается нормально. Я проверил соединение это нормально + поиск столбца. Есть идеи? СЕССИЯ также должна работать, иначе я бы вообще не смог посетить страницу.

<?php
$query = $con->query("select id from web_wan.blockaccount where isban='1' and username ='.$_SESSION[username].'") or die($con->error);
while($row = $query->fetch_array())
{
    if(!empty($row))
    echo "Your Account denied access to this site!";
    exit;
} 

?>

PS. Я новичок в PHP.

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

Используйте фигурные скобки вокруг этого оператора if. Если вы не только следующая строка выполняется как часть, если, выход будет в любом случае.

if(!empty($row))
    echo "Your Account denied access to this site!"; // only this if true
    exit; // this runs anyway



if(!empty($row)) {
    echo "Your Account denied access to this site!";
    exit;
} // now both only if true

И да, убедитесь, что вы начали сеанс, как сказал Джастин Т в своем ответе.

И вы также можете отказаться от цикла while:

$row = $query->fetch_array();
0 голосов
/ 29 октября 2018

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

<?php
$query = $con->query("select id from web_wan.blockaccount where isban='1' and username ='$_SESSION[username]'") or die($con->error);
if( $query->num_rows!==0 ){
    echo "Your Account denied access to this site!";
    exit;
} 

?>
0 голосов
/ 29 октября 2018

Всякий раз, когда вы имеете дело с сессиями PHP, документ PHP ДОЛЖЕН начинаться со следующего:

<?php
session_start();
//any other PHP code

session_start(); должен быть вызван перед выполнением любого другого кода PHP.

...