Проверка соответствия двух переменных - PullRequest
1 голос
/ 09 апреля 2019

Я пытаюсь отобразить сообщение, если две переменные совпадают на основе идентификатора пользователя и идентификатора страницы. Я пытался часами и не могу добиться окончательного результата.

Я пытался использовать == в разные стороны, но я сохраняю "ОК" независимо от того, на какой странице я нахожусь.

Что работает: В приведенном ниже коде $ userNowId дает мне идентификатор пользователя текущего сеанса. $ profileID дает мне идентификатор конкретного идентификатора страницы. ЭТО РАБОТАЕТ.

Оба эти значения правильно отображаются на странице. Например, если я вошел в систему как пользователь с идентификатором 1 и набрал URL-адрес profile.php? User = 65, чтобы перейти на их страницу, мой идентификатор базы данных (1) и идентификатор URL-адреса (65) выдают эхо, как и должно.

Проблема: Теперь я хотел бы сделать оператор if, который говорит что-то вроде, если эти два значения не совпадают, эхо-сообщение «не ваш профиль». Не уверен, поможет ли это, но я написал это на ООП PHP.

Вот что у меня есть сейчас.

<?php
    require_once 'core/init.php';

    $userNow = new user();
    $userNow->LoggedInUser();

    if (!$username = input::get('user')) {
        redirect::to('index.php');
    } else {
        $user = new user($username);
        if (!$user->exists()) {
            redirect::to(404);
        } else {
            $data = $user->data();
            $userNowId = ($_SESSION && $data->id);
            $profileID = ($data->id);

            if ($userNowId == $profileID) {
                echo "Your profile";
            } else {
                echo "Not your profile!";
            }

1 Ответ

0 голосов
/ 09 апреля 2019

Проблема в том, как вы устанавливаете $userNowId

$userNowId = ($_SESSION && $data->id);

Это логическая операция, для которой будет установлено логическое значение true или false, а не идентификатор. Я подозреваю, что вы действительно хотели что-то вроде этого:

$userNowId = array_key_exists('id', $_SESSION) ? (int)$_SESSION['id'] : null;
$profileID = (int)$data->id;

if ($userNowId === $profileID) {
  echo "Your profile";
} else {
  echo "Not your profile!";
}

Обратите внимание, что я использовал строгое сравнение типов (===), чтобы предотвратить преобразование null в 0, что может представлять угрозу безопасности. Я также преобразовал id в целое число, так что строгая проверка типов будет работать, когда PHP преобразует int базы данных в строки, как это происходит.

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