Проверка, совпадают ли два результата, не работает

#php #html #forms #url #pdo

#php #HTML #формы #url-адрес #pdo

Вопрос:

Итак, я пытаюсь отобразить сообщение для пользователя учетной записи. Поэтому я бы зашел в профиль пользователя /index.php?username=joe . На моем месте у Joe вас была бы возможность отправлять почту, поэтому я бы показал почтовый ящик. Проблема по какой — то причине отображается в окне, даже если это не Joe так. Вот мой код

 $stmt = $con->prepare("SELECT username FROM users WHERE username = :username");
$stmt->bindValue(':username', $_GET['username']);
$stmt->execute();
$row = $stmt->fetch();
$username = $row['username'];

if (count($username) < 1){
    echo "User not found";
}


echo $_SESSION['user'];
echo $username;
?>
//Issue has to be here somewhere 
<?php if($_SESSION['loggedIn'] == true || $username == $_SESSION['user']) : ?>
        <form method="post" action="http://localhost:8888/post/p.php">
            <input type="text" name="post" placeholder="Post">
            <input type="submit">
        </form>

<?php else: ?>
<!--Display sign up and in-->
<p>Sign in </p>
<?php endif; ?>
 

Так echo $_SESSION['user']; отображается Аллен, в то время echo $username; как отображается Джо. Поэтому я бы предположил, что форма не должна отображаться. Есть какие-нибудь идеи?

Ответ №1:

Вы используете не того оператора. || означает логический OR .

 <?php if($_SESSION['loggedIn'] == true || $username == $_SESSION['user']) : ?>
 

Вместо этого вам нужен логический AND :

 <?php if($_SESSION['loggedIn'] == true amp;amp; $username == $_SESSION['user']) : ?>
 

Ответ №2:

Не уверен, но что вы здесь делаете

 <?php if($_SESSION['loggedIn'] == true || $username == $_SESSION['user']) : ?>
 

Говорит, являетесь ли вы пользователем loggedin ИЛИ вы пользователь. Я думаю, вы можете изменить это на:

 <?php if($_SESSION['loggedIn'] == true amp;amp; $username == $_SESSION['user']) : ?>