MySQL Select Query выбирает неправильную запись - PullRequest
0 голосов
/ 16 января 2019

Итак, я недавно создал раздел на своем веб-сайте, который отображает таблицу, заполненную из базы данных MySQL. Поскольку пользователи входят в систему, существуют определенные записи, которые я не хочу видеть другим пользователям, но некоторые пользователи я хочу видеть. Итак, я настроил систему уровня безопасности. Пока все работает нормально. На этой странице я запускаю оператор if, чтобы узнать, имеют ли пользователи уровень безопасности 4, и если они это делают, я запускаю запрос SELECT * на основе их имени. Таким образом, запрос

SELECT * WHERE `assignedTo` = '$username'

Что в теории работает, это не дает мне никаких ошибок, и у меня включена функция отчетов об ошибках. Это код ошибки, который у меня есть;

//Error Reporting
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(-1);

Однако у меня есть одна запись в базе данных для целей тестирования, и поле assignedTo теперь содержит «Пример1», когда я вхожу в систему как «Пример2», я все еще вижу эту запись, которая назначена для «Пример1». Я запустил var_dump (), и он показывает мне следующее:

object(PDOStatement)#3 (1) {
 ["queryString"]=>
 string(68) "SELECT * FROM `customerLeads` WHERE `assignedTo` = 'Example2' "
}

Таким образом, запрос верен, именно так он должен выполняться, но он не должен отображать запись, потому что assignedTo равно 'Example1', а не 'Example2'.

Вот мой код для этой веб-страницы;

<?php  
//Session Start
session_start();

//Error Reporting
ini_set('display_startup_errors', 1);
ini_set('display_errors', 1);
error_reporting(-1);


require 'includes/conn.php';
$user_id = $_SESSION['user_id'];
$user_security = $_SESSION['user_security'];

if(!isset($_SESSION['user_id']) || !isset($_SESSION['logged_in'])){
    //User not logged in. Redirect them back to the login.php page.
    ?>
        <script type="text/javascript">
            alert("You must be logged in!");
            window.location.href = "login.php";
        </script>
    <?php
}

$user_name = $_SESSION['user_name'];

if ($user_security == 4) {
 $customerList = $salesConn->query("SELECT * FROM `customerLeads` WHERE `assignedTo` = '$user_name' ");
}

if ($user_security == 0 OR 1) {
  $customerList = $salesConn->query("SELECT * FROM customerLeads");
  }
 var_dump($customerList);
?>

И тогда это моя таблица, в которой я отображаю данные;

  <table>
<thead>
  <tr>
    <th scope="col">Full Name</th>
    <th scope="col">Telephone</th>
    <th scope="col">Vehicle of Interest</th>
    <th scope="col">Budget</th>
    <th scope="col">P/X Vehicle</th>
    <th scope="col">P/X Reg</th>
    <th scope="col">P/X Finance</th>
    <th scope="col">P/X Settlement</th>
    <th scope="col">Salesman</th>
    <th scope="col">Status</th>
  </tr>
</thead>
<tbody>
  <?php
  while ($cRow = $customerList->fetch()) {
    $firstName = $cRow['customerFirstName'];
    $lastName = $cRow['customerLastName'];
    $tele = $cRow['customerTel'];
    $mob = $cRow['customerMob'];
    $mail = $cRow['customerEmail'];
    $add1 = $cRow['customerAdd1'];
    $add2 = $cRow['customerAdd2'];
    $add3 = $cRow['customerAdd3'];
    $add4 = $cRow['customerAdd4'];
    $vehInterest = $cRow['customerVeh'];
    $vehChange = $cRow['customerChangeDate'];
    $vehDrive = $cRow['customerDriveDate'];
    $vehFinance = $cRow['customerFinance'];
    $vehBudget = $cRow['customerBudget'];
    $pxVeh = $cRow['customerPXVeh'];
    $pxReg = $cRow['customerPXReg'];
    $pxMile = $cRow['customerPXMileage'];
    $pxColour = $cRow['customerPXColour'];
    $pxEngine = $cRow['customerPXEngine'];
    $pxTrans = $cRow['customerPXTrans'];
    $pxFuel = $cRow['customerPXFuel'];
    $pxPrice = $cRow['customerPXPrice'];
    $pxFinance = $cRow['customerPXFinance'];
    $pxSettle = $cRow['customerPXFinance'];
    $salesman = $cRow['customerSalesman'];
    $notes = $cRow['customerNotes'];
    $status = $cRow['customerStatus'];
  ?>
  <tr>
    <td data-label="Ful Name"><?php echo $firstName." ".$lastName; ?></td>
    <td data-label="Telephone"><?php echo $tele; ?></td>
    <td data-label="Vehicle of Interest"><?php echo $vehInterest; ?></td>
    <td data-label="Budget"><?php echo $vehBudget; ?></td>
    <td data-label="P/X Vehicle"><?php echo $pxVeh; ?></td>
    <td data-label="P/X Reg"><?php echo $pxReg; ?></td>
    <td data-label="P/X Finance"><?php echo $pxFinance; ?></td>
    <td data-label="P/X Settlement"><?php echo $pxSettle ?></td>
    <td data-label="Salesman"><?php echo $salesman; ?></td>
    <td data-label="Status"><?php echo $status; ?></td>
  </tr>
  <?php
  }
  ?>
</tbody>

1 Ответ

0 голосов
/ 16 января 2019

Это условие всегда верно:

if ($user_security == 0 OR 1)

Потому что 1 всегда является «истинным» значением. Не думайте о булевых выражениях с точки зрения того, как вы можете произносить их вслух, всегда думайте о них с точки зрения отдельных выражений. В этом случае у вас есть два выражения: $user_security == 0, которое условно истинно или ложно в зависимости от переменной; и 1, что всегда верно.

Вы, вероятно, хотите это вместо:

if ($user_security == 0 OR $user_security == 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...