Почему эта переменная всегда возвращает true? - PullRequest
2 голосов
/ 22 декабря 2010

Я пытаюсь написать скрипт входа в систему. После входа в систему устанавливается переменная сеанса, и на главной странице запускается функция isLoggedIn. Проблема в том, что переменная $ loggedIn всегда возвращает true. Может кто-нибудь помочь?

function validateUser($user)
{
    if(isset($user)){
    session_regenerate_id ();//this is a security measure
    $_SESSION['logged'] = 1;
    $_SESSION['userid'] = $user;}
}
//Validates Login
function isLoggedIn()
{
    if($_SESSION['logged'] = 1)
        return true;
    return false;
}

$loggedIn = isLoggedIn();

if($loggedIn){ SHOW CONTENT FOR LOGGED IN USERS }

else { show content for users not logged in }

Ответы [ 4 ]

10 голосов
/ 22 декабря 2010

Вы используете оператор присваивания = вместо условного оператора ==.

Это должно быть:

if ($_SESSION['logged'] == 1)
    return true;

Результатом присваивания = является выражение в правой части, которое равно 1, что в данном случае всегда верно.:)

4 голосов
/ 22 декабря 2010

это потому, что вы устанавливаете $ _SESSION ['logged'] с одинарными равными.Вместо этого используйте двойное равенство:

function isLoggedIn()
{
    if($_SESSION['logged'] == 1)
        return true;
    return false;
}
3 голосов
/ 22 декабря 2010

function isLoggedIn () {if ($ _ SESSION ['logged'] = 1) // присваивает значение от '1' до $ _SESSION ['logged'], поэтому в этом случае, если условие проверяет, есть ли какое-либо значение, $_SESSION ['logged'], который будет истинным для всех случаев (действительный / недействительный), возвращать true;вернуть ложь;}

$ loggedIn = isLoggedIn (); / те, что значение для $ loggedIn будет всегда истинным

изменить if ($ _ SESSION ['logged'] = 1) на if ($ _ SESSION['logged'] == 1)

2 голосов
/ 22 декабря 2010

НЕ ЭТО if ($ _ SESSION ['logged'] = 1) ЭТО правильно -> if ($ _ SESSION ['logged'] == 1)

...