Как сделасть проверку 2-х полей на PHP?

Написал следующий код. Думал что он работает так:
если значения 1 и 2 верно, то кук устанавливается,
а он работ так:
если одно из значений 1 или 2 верно, то кук устанавливается.
Что не так, помимо моей криворукости.
if($_COOKIE["pass"]!=='1' & $_COOKIE["name"]!=='K'){
    if($_POST['pass'] and $_POST['name']){   
    setcookie("pass",$_POST['pass'],time()+40);
    setcookie("name",$_POST['name'],time()+40);
    ini_set(session.cookie_lifetime, 60*60*24);
    header("Location: index.php");
    }
  • Вопрос задан
  • 2337 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
& - операция побитового "и". То есть php возьмет бинарное представление значений (в нашем случае это символы, а они кодируются числами) и перемножит каждый бит. Так что если у наших чисел в бинарном представлении будет хотя бы одна пара битов равна, то значение всегда будет не равно нулю а значит выражение будет истенным.

Подозреваю что вы хотели написать &&.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
if($_COOKIE["pass"]!=='1' && $_COOKIE["name"]!=='K'){
используйте либо and либо && для проверки условия
Ответ написан
SToRm1k
@SToRm1k
if($_COOKIE["pass"]=='1' AND $_COOKIE["name"]=='K'){
    if($_POST['pass'] and $_POST['name']){   
    setcookie("pass",$_POST['pass'],time()+40);
    setcookie("name",$_POST['name'],time()+40);
    ini_set(session.cookie_lifetime, 60*60*24);
    header("Location: index.php");
    }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы