2015-05-29 3 views
2

Im с небольшой проблемой здесь, если я использую «или» все возвращается ложное, мой код Херес:нельзя использовать или если оператор

if($_SESSION["login"] != 'joaomonteiro' or 'm1n6u3x' or 'jorgesaado17'){ 
    echo 'Acesso negado, redirecionando...'; 
    $main = "index.php"; 
    header('Location: '.$main); 
}else{ 
    echo "success"; 
} 

, если я просто использовать = «имя» это работает отлично, кто бы ни «или» не

+0

Не вниз голосования, это законный вопрос. это может быть действительно запутанным для некоторых людей сначала – jhamPac

ответ

2

Это не работает, потому что это не так, как работают логические выражения.

Вы должны сравнивать каждую строку самостоятельно с $_SESSION["login"]:

if($_SESSION["login"] != 'joaomonteiro' 
    and $_SESSION["login"] != 'm1n6u3x' 
    and $_SESSION["login"] != 'jorgesaado17'){ 

Edit: Если оператор or следует использовать вместо and, только небольшое изменение необходимо:

if(!($_SESSION["login"] == 'joaomonteiro' 
    or $_SESSION["login"] == 'm1n6u3x' 
    or $_SESSION["login"] == 'jorgesaado17'){ 
+0

, но не требует и требует, чтобы все это было правдой? –

+0

Да, для условия, чтобы оценить значение true, каждое из трех условий должно быть истинным. Это так, если '$ _SESSION [" login "]' is * not 'joaomonteiro' * и * not' m1n6u3x' *, а также * not 'jorgesaado17' *. Это то, чего вы хотите достичь, правильно? – Timo

+0

Не хочет ли OP «или»? – iamnotmaynard

1

Вы должны сравнить каждое логическое сравнение со строкой.

if($_SESSION["login"] != 'joaomonteiro' && $_SESSION["login"] != 'm1n6u3x' && $_SESSION["login"] != 'jorgesaado17') { 
    // code 
} 
+0

Это условие вообще не имеет никакого смысла. Он всегда будет оценивать значение 'true'. – Timo

+0

oops Я печатал слишком быстро && – jhamPac

0

Это потому, что ваш в основном говорят:

if($_SESSION['login'] != 'joaomonteiro' or true or true) { 

} 

Если вы сделаете это

var_dump((boolean)"m1n6u3x"); 
var_dump((boolean)"jorgesaado17"); 

Оба из них возвращает истину.

Я рекомендую вам прочитать документацию на булевы

Booleans

Смежные вопросы