Чат Telegram
Группа ВКонтакте
Новый комментарий


Denchik
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login === 'admin' && $password === 'Pa$$w0rd') {
    $isAuthorized = 'Всё верно';
} else if($login !== 'admin') {
    $isAuthorized = 'Логин неверный';
} else if($login === 'admin' && $password !=='Pa$$w0rd'){
    $isAuthorized = 'Пароль неверный';
}
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isAuthorized ?>
</p>
</body>
</html>
ivashkevich

Ага, хорошо. Но в конце можно не проверять условие, так как остался только один вариант, просто else. Поправь коммент.

Denchik
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login === 'admin' && $password === 'Pa$$w0rd') {
    $isAuthorized = 'Всё верно';
} else if($login !== 'admin') {
    $isAuthorized = 'Логин неверный';
} else {
    $isAuthorized = 'Пароль неверный';
}
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isAuthorized ?>
</p>
</body>
</html>
ivashkevich

Теперь огонь!

DmitryGavrilov
<?php   
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login === 'admin' && $password === 'pa$$w0rd') {
    $isAuthorized = true;
}
//Добавьте дополнительное условие, которое будет говорить о том, что пользователь
// не найден, если переданный логин не ‘admin’.
else if ($login !== 'admin') {
    $isAuthorized = 'Пользователь не найден';
    //И если пользователь не найден, то нет смысла проверять пароль,
    // и это условие проверяться не будет.
    //Если же логин ‘admin’, но пароль не совпадает,
    // то писать о том, что пароль неверный.
} else  ($password !== 'pa$$w0rd'){
    $isAuthorized = 'Вы ввели не верный пароль'
}
?>

<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isAuthorized ? 'Логин и пароль верные!' : 'Логин и пароль введены не верно!' ?>
</p>
</body>
</html>
ivashkevich

Ну и в итоге у вас выведется либо 'Логин и пароль верные!', либо 'Логин и пароль введены не верно!'. Лучше завести отдельную переменную $result, и в неё складывать получившийся результат. Проверяйте хотя бы работоспособность написанного, прежде чем отправить.

$isAuthorized - в переменной изначально хранится булево значение, true/false. Такого типа она и должна оставаться. Не нужно складывать туда строку. Представляйте себе, что у переменной есть какой-то конкретный тип. Это позволит вам в дальнейшем избежать ошибок, так как вы наверняка будете знать, что у вас там за тип.

Переменные, начинающиеся со слова is или has подразумевают под собой, что там находится именно булево значение.

И конструкцию elseif нужно писать слитно.

Поправьте, убедитесь что выдаются действительно нужные ошибки, и отправляйте снова.

DmitryGavrilov
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';
$result = '';
if ($login === 'admin' && $password === 'pa$$w0rd') {
    $isAuthorized = true;
    $result = 'Авторизация прошла успешно';
}
//Добавьте дополнительное условие, которое будет говорить о том, что пользователь
// не найден, если переданный логин не ‘admin’.
elseif ($login !== 'admin') {
    $result = 'Пользователь не найден';
    //И если пользователь не найден, то нет смысла проверять пароль,
    // и это условие проверяться не будет.
    //Если же логин ‘admin’, но пароль не совпадает,
    // то писать о том, что пароль неверный.
} else {
  $result = 'Пароль введен неверно';
}
?>

<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isAuthorized ?>
    <?= $result ?>
</p>
</body>
</html>
ivashkevich

Для чего вам здесь переменная $isAuthorized?

DmitryGavrilov

Просто послушал вашего совета - "$isAuthorized - в переменной изначально хранится булево значение, true/false. Такого типа она и должна оставаться. Не нужно складывать туда строку. Представляйте себе, что у переменной есть какой-то конкретный тип. Это позволит вам в дальнейшем избежать ошибок, так как вы наверняка будете знать, что у вас там за тип."
И оставил ее только для вывода true или false. Я понимаю что и без нее все выводится)

ivashkevich

Хорошо, тогда удаляйте её)

DmitryGavrilov
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';
$result = '';
if ($login === 'admin' && $password === 'pa$$w0rd') {
    $result = 'Авторизация прошла успешно';
}
//Добавьте дополнительное условие, которое будет говорить о том, что пользователь
// не найден, если переданный логин не ‘admin’.
elseif ($login !== 'admin') {
    $result = 'Пользователь не найден';

    //И если пользователь не найден, то нет смысла проверять пароль,
    // и это условие проверяться не будет.
    //Если же логин ‘admin’, но пароль не совпадает,
    // то писать о том, что пароль неверный.
} else {
  $result = 'Пароль введен неверно';
}
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $result ?>
</p>
</body>
</html>
ivashkevich

Ну вот, другое дело :)

1nSide

2 Задача

?php

 $login = !empty($_GET['login'])? $_GET['login'] : 'Логин не передан';
 $password = !empty($_GET['password'])? $_GET['password'] : 'Пароль не передан';

 switch ($login&$password)
 {
     case $login === 'admin' && $password === '12345':
         $isAuthorized = 'Логин и пароль введены правильно';
     break;

     case $login === 'admin' && $password !== '12345';
         $isAuthorized = 'Пароль не верный';
         break;

     case $login !== 'admin':
         $isAuthorized = 'Такого пользователя не существует';
         break;

     default:
 }

?>

<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isAuthorized ?>
</p>
</body>
</html>
ivashkevich

Те же ошибки что и в случае выше. И еще к ним же:

  1. в switch используете побитовое И - если хотели использовать логическое И, то используйте два амперсанда &&
  2. Даже если вы исправите на логическое ИЛИ, в нем все равно не будет никакого смысла. Потому что login и password у вас всегда непустые строки и всегда будут приведены к true.
  3. Секция default никогда не должна быть пустой.
  4. Переменная isAuthorized (перевод - авторизация пройдена) не подходит по смыслу к тому, что вы в нее складываете. Вы туда присваиваете текст ошибки, а иногда еще и информацию об успехе. Лучше просто завести переменную для ошибок $error и присвоить ее в начале программы равной null. В конце будете смотреть, равна ли она null. Нет - значит ошибка произошла и надо об этом написать. Иначе - авторизация прошла успешно и стоит тоже об этом написать.
  5. Если логин или пароль не переданы, стоит тоже об этом писать, сейчас эта информация просто игнорируется. Лучше в эти переменные, если они не переданы, присвоить null и добавить еще 2 кейса в свитче для случаев, когда эти переменные равны null и присвоить текст ошибки опять же в переменную error.
1nSide

Не особо понял с операторами null, пытался сделать но не получилось, если можно то скиньте пример с таким решением как вы говорите.
Сделал так, вроде все работает.

<?php

 $login = !empty($_GET['login'])? $_GET['login'] : 'Логин не передан';
 $password = !empty($_GET['password'])? $_GET['password'] : 'Пароль не передан';

 switch ($login&&$password)
 {
     case $login === 'admin' && $password === '12345':
         $result = 'Пользователь авторезован';
         break;

     case $login === 'admin' && $password !== '12345':
         $result = 'Не верный пароль';
         break;

     default:
         $result = 'Пользователь не авторизован';

 }

?>

<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?=$result?>
</p>
</body>
</html>
ivashkevich

Привет, примерно вот так:

$login = !empty($_GET['login'])? $_GET['login'] : null;
$password = !empty($_GET['password'])? $_GET['password'] : null;

switch (true) {
    case $login === null || $password === null:
        $result = 'логин не передан';
        break;
    case $login === 'admin' && $password === '12345':
    //дальше продолжается ваш код
andropij
<?php
$password = !empty($_GET['password']) ? $_GET['password'] : 'логин не передан';
$login = !empty($_GET['login']) ? $_GET['login'] : 'логин не передан';
if ($login != 'admin') {
    echo "Пользователь не найден!";
} else if ($password != '123') {
    echo "Невреный пароль";
}
?>

<html>
<head>
    <title>Знакомсвто с Get запросом</title>
</head>
<body>
</body>
</html>
ivashkevich

Неплохо! Однако, не стоит в переменную $password складывать текст ошибки - для этого лучше заводить специальную переменную с текстом $error. А в $login и $password должны содержаться логин и пароль, если их нет - храните там null. В вашем варианте, если их не передать, то мы никогда об этом не узнаем.

Fox-24

Как всегда всё супер! Спасибо)


// ДЗ

$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login !== 'admin') {        // Если логин не совпадает с 'admin'
    $isAuthorized = 'Указан не верный логин';
} elseif ($login === 'admin' && $password === 'Pa$$w0rd') {     // Если логин и пароль совпадают
    $isAuthorized = 'Поздравляем! Авторизация прошла успешно.';

} else {                         // Если пароль не верный
    $isAuthorized = 'Введен не верный пароль. Попробуйте еще раз.';

}

?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isAuthorized ?>
</p>
</body>
</html>
ivashkevich
  1. Как думаете, нужно ли после проверки
    if ($login !== 'admin')

    проверять что

    } elseif ($login === 'admin' ...
  2. Переменная $isAuthorized начинается с is - мы об этом не говорили, но такие имена говорят о том, что тип значения - boolean (true/false). Для вашего варианта будет лучше назвать переменную $result.
    Либо же можно завести 2 отдельные переменные - $isAuthorized, с типом boolean, которая будет говорить об успешности авторизации. И ещё одну переменную $error - по умолчанию будет равна null, но при возникновении ошибок авторизации будет задаваться текст ошибки.
    А затем уже в условиях проверять значения этих переменных, и на их основе писать какой-то текст.
Fox-24
  1. Нет, конечно не нужно. Стоило перепроверить условия, тут ковырялся некоторое время...)
  2. Спасибо, полезная информация.
if ($login !== 'admin') {        // Если логин не совпадает с 'admin'
    $result = 'Указан не верный логин';
} elseif ($password === 'Pa$$w0rd') {     // Если логин и пароль совпадают
    $result = 'Поздравляем! Авторизация прошла успешно.';

} else {                         // Если пароль не верный
    $result = 'Введен не верный пароль. Попробуйте еще раз.';

}

?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $result ?>
</p>
</body>
</html>
ivashkevich

Найс!

Himik
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login === 'admin') {
    if ($password === 'Pa$$w0rd') {
        $isAuthorized = 'Логин и пароль верные';
    } else {
        $isAuthorized = 'пароль не подходит';
    } 
} else {
    $isAuthorized = 'пользователь не найден';
}
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?php echo $isAuthorized; ?>
</p>
</body>
</html>
ivashkevich

Хорошо =)

ArtemijeKA
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';
if ($login !== 'admin') {
    $isAuthorized = 'Пользователь не найден!';
}
elseif ($password === 'pass') {
    $isAuthorized = 'Пользователь и пароль совпадают!';
}
else {
    $isAuthorized = 'Пароль не верен!';
}
ivashkevich

Хорошо

yuliya-chirkova

А у меня вопрос.

<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';
if ($login ==='admin' && $password === '123456') {
    $autorized = 'Данные верны';
}

elseif ($login !== 'admin')
{

    $autorized = 'Логин неверный';
}

else ($password !== '123456')
 {
     $autorized = 'Пароль неверный'
 }

?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $autorized ?>
</p>
</body>
</html>

Если у нас неверный логин, то мы можем завершить цикл оператором break? Пробовала добавлять его после elseif- показало ошибку

ivashkevich

Здравствуйте, это не цикл, циклы - это for, while, foreach. Здесь же у вас условие и break внутри них не имеет смысла. Кроме того, блок else не может содержать условия - он просто выполняется, если предыдущие if и ifelse не выполнились. Таким образом, строка

else ($password !== '123456')

должна быть переписана просто в

else
Benya
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login != 'admin') {
    $isAdmin = true;
} else {
    if ($login === 'admin' && $password === '12345') {
        $isAuthorized = true;
    } else {
        $isAuthorized = false;
    }
}

?>

<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isAdmin ? 'login not found' : ($isAuthorized ? 'Логин и пароль верные!' : 'Неправильный  пароль') ?>
</p>
</body>
</html>
ivashkevich

Работать-то работает, но переменная isAdmin (это Админ), в этом коде true если это не админ. Ерунда какая-то - переделайте =)

SBTesla
<?php

$login = !empty($_POST ['login']) ? $_POST ['login']  : ' ';
$password = !empty($_POST ['password']) ? $_POST ['password'] :' ';

if ($login === 'admin'  &&  $password === '12345'){
    $isAuthorized =true ;
    }
    elseif($login !== 'admin'){
        $isAuthorized =false;
        $error = 'Логин не верен';
    }
    else ($password !== '12345') {
        $error = 'Пароль не верен'

}

?>

<html>
<head>
    <title>Результат авторизации</title>
</head>
<p><?= $isAuthorized  ? 'Вы Авторизованы': $error ?></p>
<body>
</body>
</html>
lordbear53@gmail.com

index.php

<html>
<head>
    <title>Авторизация</title>
</head>
<body>
<form action="/login.php" method="get">
    <label>
        Логин <input type="text" name="login">
    </label>
    <br>
    <label>
        Пароль <input type="password" name="password">
    </label>
    <br>
    <input type="submit" value="Войти">
</form>
</body>
</html>

login.php

<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login === 'admin') {
    $isLoginRight = true;
    if($password === '12345678')
    {
        $isPasswordRight = true;
    } else {
        $isPasswordRight = false;
    }
} else {
    $isLoginRight = false;
}
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?php
        if($isLoginRight)
        {
            if($isPasswordRight)
            {
                echo 'Логин и пароль верные!';
            } else {
                echo 'Пароль не верный!';
            }
        } else {
            echo 'Пользователь не найден!';
        }
    ?>
</p>
</body>
</html>
ivashkevich

Отлично! Для оформления кода используйте первую кнопку в окне добавления комментария.

demyanovpaul@yandex.ru

Сейчас если переданы неверные логин или пароль, выводится информация о том, что либо одно, либо другое неверно.
Добавьте дополнительное условие, которое будет говорить о том, что пользователь не найден, если переданный логин не ‘admin’. И если пользователь не найден, то нет смысла проверять пароль, и это условие проверяться не будет. Если же логин ‘admin’, но пароль не совпадает, то писать о том, что пароль неверный.

<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

$errorMessage = '';
$isAuthorized = false;

if ($login === 'admin')
    if($password === 'Pa$$w0rd')
        $isAuthorized = true;
    else
        $errorMessage = 'Введен не правильный пароль';
 else
     $errorMessage = 'Логин не найден';
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isAuthorized ? 'Логин и пароль верные! Добро пожаловать ' . $login : $errorMessage; ?>
</p>
</body>
</html>
ivashkevich

Хорошо, но для условий всегда используйте фигурные скобки. Это закон =)

virtual2018
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login === 'admin') {
    if ($password === 'Pa$$w0rd') {
        $messageText = 'Логин и пароль верные!';
    } else {
        $messageText = 'Неправильный пароль';
    }
} else {
    $messageText = 'Неправильный логин';
}

?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $messageText ?>
</p>
</body>
</html>
ivashkevich

Отлично!

Pavel-Tonk
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login !== 'admin') {
    $isAuthorized = 'none';
} else if ($login === 'admin' && $password === '123') {
    $isAuthorized = 'admin';
} else {
    $isAuthorized = false;
}
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isAuthorized === 'admin' ? 'Логин и пароль верные!' : 
        $isAuthorized === 'none' ? 'Нет такого пользователя' : 'Пароль не верен';
     ?>
</p>
</body>
</html>

Не могу понять почему конструкция проверки $isAuthorized не срабатывает правильно, где ошибся?

ivashkevich

Привет. Очень сложно читать код из двух тернарок подряд. Не надо так делать.

Переменная isAuthorized должна содержать только true или false. Заведи лучше отдельную переменную для ошибок, в которой будут строки. Если же ошибок нет - записывай в неё null.

Bogdan
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login !== 'admin') {
    $isAuthorized =  "пользователь не найден";
}else if ($login === 'admin' && $password === 'Pa$$w0rd') {
    $isAuthorized = "Логин и пароль верные!";
} else {
    $isAuthorized = "Неправильный пароль";
}
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?=$isAuthorized;?>
</p>
</body>
</html>
ivashkevich

Хорошо

SashkoUkraine
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

$isAdmin = true;

if ($login === 'admin') {
    if ($password === 'Pa$$w0rd') {
        $isAuthorized = true;
    } else {
        $isAuthorized = false;
    }
} else {
    $isAdmin = false;
}

?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?php
        if ($isAdmin) {
            echo $isAuthorized ? 'Логин и пароль верные!' : 'Неправильный пароль';
        } else {
            echo 'пользователь не найден';
        }
    ?>

</p>
</body>
</html>
ivashkevich

Ок!

excent63

Спасибо за очередной урок!
Домашнее задание:

<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login != 'admin' && $password != 'pass'){
    $authorization = 'Неверный логин';
} elseif ($password != 'pass') {
    $authorization = 'Пароль не верный';
} else {
    $authorization = 'Успешная авторизация';
}
?>
<html>
<head>
    <title>Знакомство с GET</title>
</head>
<body>
<?=$authorization?>
</body>
</html>
ivashkevich

ОК! =)

N9PIX
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : 'Логин не передан';
$password = !empty($_GET['password']) ? $_GET['password'] : 'Пароль не передан';
if($login === 'admin' && $password === '123') {
    $isAunthorized = 'Добро пожаловать на сайт';
} else if ($login === 'admin' && $password !== '123') {
    $isAunthorized = 'Пароль введён не верно';
} else {
    $isAunthorized = 'Пароль и логин не верны';
}
?>
<html>
<head>
    <title>Авторизация</title>
</head>
<body>
<p>
    <?= $isAunthorized?>
</p>
</body>
</html>
ivashkevich

Ок!

red.shuhov48@gmail.com
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login === 'admin' && $password === 'admin'){
    $isAutorized = 'ok';
}  elseif ($login === 'admin'){
    $isAutorized = 'login - not';
} else{
    $isAutorized = 'password - not';
}
?>
<html>
<head>
    <meta charset="UTF-8">
    <title>Avtorizaition</title>
</head>
<body>
    <p>
        <?=$isAutorized?>
    </p>

спасибо за уроки))
правда не все понял по GET вроде все понятно,думаю с POST приблизительно тоже...
есть вопросик:
$login = !empty($_GET['login'])-правильно читать строку присвоить значения условие если значение GET-не пусто то ... дальше немного непонятно...

ivashkevich

Повторите тернарный оператор)

Pro100Bah
<?php
echo 'Homework19' . '<br>';
$login = !empty($_GET['login']) ? $_GET['login'] : ' ';
$password = !empty($_GET['password']) ? $_GET['password'] : ' ';

if ($login === 'admin' && $password === 'qwerty') {
    $isAuthorized = 'ВЫ успешно авторизированы!!!';
} elseif ($login !== 'admin') {
    $isAuthorized = 'Неверно указан Логин!!!';
} elseif ($password !== 'qwerty') {
    $isAuthorized = 'Неверно указан Пароль!!!';
}
if ($login !== 'admin' && $password !== 'qwerty') {
    $isAuthorized = 'Неверно указан логин и пароль!!!';}
?>

<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isAuthorized ?>
</p>
</body>
</html>

<?= $isAuthorized ? 'Логин и пароль верные!' : 'Неправильный логин или пароль' ?> - это конструкция из примера в уроке - это применение тернарного оператора правильно? А вот это

$login = !empty($_GET['login']) ? $_GET['login'] : 'логин не передан!';
$password = !empty($_GET['password']) ? $_GET['password'] : 'пароль не передан!';

где логин не передан или пароль не передан; это что такое?

ivashkevich

И это тоже тернарный оператор)

результат = (логическое условие) ? (что вернуть, если условие выполнено) : (что вернуть, если не выполнено)
volodia.pavloff201343@gmail.com
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';
//В этом месте вставляем проверку условий
if ($login != 'admin') {
  echo  'Пользователь не найден!'; 
}
elseif ($password != 'Pa$$w0rd') {
  echo 'Логин и пароль не совпадают, проверьте пароль';
}
ivashkevich

Ок!

babls2332@gmail.com
<?php
if ($_GET['login'] !== 'admin') {
    echo 'Пользователь не найден';
    return false;
}

if ($_GET['password'] !== 'admin') {
    echo 'Неверный пароль';
    return false;
}

echo 'Пользователь найден';
?>
<html>
<head>
    <title>Знакомство с GET-запросами</title>
</head>
<body>
<form action="login.php">
    <input name='login' placeholder="login">
    <input name='password' placeholder="password">
    <input type="submit">
</form>
</body>
</html>
ivashkevich

Почему именно return false?

ashfedor

if ($login !== 'admin'){
  $isAuthorized = 'Пользователь не найден';
} elseif ($password !== '123456'){
  $isAuthorized = 'пароль не правильный';
} else{
    $isAuthorized = 'Вы вошли в систему';
}```
ivashkevich

Отлично!

shtiher@yandex.ru
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login === 'admin') {
    if ($password === 'Pa$$w0rd'){
        $isAuthorized = 'Логин и пароль верны';
    } else {
        $isAuthorized = 'Пароль не верный';
    }
} else {
    $isAuthorized = 'Пользователь не найден';
}
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isAuthorized ?>
</p>
</body>
</html>
ivashkevich

ОК!

Blook
<?php
 $login = $_GET['login'] == 'admin' ? True : False;
 $password = $_GET['password'] == 'p@ssw0rd' ? True : False;
 if ($login && $password) {
     $isAuthorized = 'Login and password are correct';
 } else if ($login && !$password) {
     $isAuthorized = 'Password is uncorrect';
 } else {
     $isAuthorized = 'Login or password is uncorrect';
 }
?>

<html>
<head>
    <title>
        Result
    </title>
</head>
<body>
    <?= $isAuthorized ?>
</body>
</html>
ivashkevich

ОК. true и false пишутся с маленькой буквы.

Blook

спасибо, учту

Grewi
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$pass = !empty($_GET['pass']) ? $_GET['pass'] : '';
echo $login.'</br>'.$pass;

if ($login === 'admin'){
    if ($pass === 'pass'){
        $i = true;
    }else {
        $err = 'Не верный пароль';
    }
}else {
    $err = 'Не верный логин';
}

echo $i == true ? '</br> Авторизация прошла успешно' : '</br>'.$err ;
ilshatgb@mail.ru
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';
?>

<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?php
    if ($login !== 'admin') {
        echo 'Пользователь не найден';
    } elseif ($password !== 'pa$$word') {
        echo 'Пароль неверный';
    } else {
        echo 'Логин и пароль верные';
    }
    ?>
</p>
</body>
</html>
ivashkevich

Отлично

lilit
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login === 'admin') {

    if ($password === 'Pa$$w0rd') {
        $isAuthorized = 'Логин и пароль верные!';
    } else {
        $isAuthorized = 'Пароль неверный';
    }

} else {
    $isAuthorized = 'Пользователь не найден';
}
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isAuthorized ?>
</p>
</body>
</html>
lilit

Мудрено слишком, да?

<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login === 'admin') {
    $isLogin = true;
    if ($password === 'Pa$$w0rd') {
        $isPassword = true;
        $good = false;
    } else {
        $isPassword = false;
        $good = true;
    }

} else {$isLogin = false;
    $isPassword = true;
    $good = true;
}
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isLogin ? '' : 'Пользователь не найден' ?>
    <?= $isPassword ? '' : 'Пароль неверный' ?>
    <?= $good ? '' : 'Логин и пароль верные!'?>
</p>
</body>
</html>
ivashkevich

Первый вариант норм. Второй - мешанина какая-то =)

XXX
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login === 'admin') {
    if($password === '12345') {
        $isAuthorized = 1;
    }
    else $isAuthorized = 2;}
else {
    $isAuthorized = 3;
}

?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>

    <?php
    switch ($isAuthorized) {
        case 1:
            echo 'Логин и пароль верные!';
            break;
        case 2:
            echo 'Неверный пароль!';
            break;
        case 3:
            echo 'Неверный логин! Пароль не проверяется!';
            break;
    } ?>
</p>
</body>
</html>
ivashkevich

Ок!

polvanovv
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if($login !== 'admin'){
    $isAuthorized = 'User not found!';
}else {
    if ($login === 'admin' && $password === 'Pa$$w0rd') {
        $isAuthorized = 'Success authorization!';
    } else {
        $isAuthorized = 'Incorrect password!';
    }
}
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isAuthorized ?>
</p>
</body>
</html>
ivashkevich

Отлично

artemship

По-моему во втором if проверка $login === 'admin' не нужна

Boodoo
<?php
    $login = !empty($_GET['login']) ? $_GET['login'] : '';
    $password = !empty($_GET['password']) ? $_GET['password'] : '';

    $isAuthorized = false;
    $mess = '';

    if($login == 'admin') {
        if($password === 'Pa$$w0rd') {
            $isAuthorized = true;
        } else {
            $mess = 'Пароль не верный';
        }
    } else {
        $mess = 'Пользователь не найден.';
    }
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Результат авторизации</title>
</head>
<body>
    <p>
        <?= $isAuthorized ? 'Логин и пароль верные!' : $mess ?>
    </p>
</body>
</html>
ivashkevich

Отлично разделили ответственность переменных за разные действия.

artemship
<?php

$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login !== 'admin') {
    $result = 'Пользователь не найден';
} elseif ($password !== 'Pa$$w0rd') {
    $result = 'Пароль неверный';
} else {
    $result = 'Добро пожаловать! :)';
}

?>

<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $result ?>
</p>
</body>
</html>
ivashkevich

Отлично

che4151999@gmail.com
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login === 'admin' && $password === 'Password') {
    $isAuthorized = 'Авторизация Успешна';
} else if($login!='admin') {
    $isAuthorized = 'Неверный логин';
} else{
    $isAuthorized='Неверный пароль';
}
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isAuthorized ?>
</p>
</body>
</html>
ivashkevich

Отлично

sceptic
<?php

$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login === 'admin') {
    if ($password === 'Pa$$w0rd'){
        $isAuthorized = 'Логин и пароль верные!';
    } else {
        $isAuthorized = 'Неверный пароль!';
    }

} else {
    $isAuthorized = 'Пользователь не найден!';
}
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?=$isAuthorized; ?>
</p>
</body>
</html>

Если логин не подходит, то пароль проверяться не будет.

ivashkevich

Отлично!

Dram
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<h2>Вариант №1</h2> <br>
<p>
<?php
$Authorized = ['admin','Pa$$w0rd'];
var_dump($Authorized);
var_dump($_GET);
if ($_GET['login'] !== $Authorized[0]) {
    echo 'Пользователь не найден';
}elseif ($_GET['login'] === $Authorized[0] && $_GET['password'] === $Authorized[1]){
    echo 'Успешная авторизация';
}
else{
    echo 'Пароль не верный';
}

?>
</p>
<h2>Вариант №2</h2> <br>
<?php
$Authorized = ['admin','Pa$$w0rd'];
var_dump($Authorized);
var_dump($_GET);
if ($_GET['login'] !== $Authorized[0]) {
    echo 'Пользователь не найден';
}elseif ($_GET['login'] === $Authorized[0] && $_GET['password'] !== $Authorized[1]){
    echo 'Пароль не верный';
}
else{
    echo 'Успешная авторизация';
}

?>
</body>
</html>
ivashkevich

А в чем между ними разница?

Dram

Особой разницы нет, думал вы сделаете замечание что нет явной проверки на Не ПРАВИЛЬНЫЙ ПАРОЛЬ.

ivashkevich

В первом условии проверяете, что логин неправильный, после этого во втором условии проверяете, что он правильный. Это лишнее. Так как если он не неправильный, значит он точно правильный, и достаточно будет во втором условии проверить только пароль.

krollik1000000@gmail.com
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login !== 'admin') {
    $isAuthorized = 'нет такого пользователя';
} else if ($login === 'admin' && $password !== '1234') {
    $isAuthorized = 'не верный пароль';
} else {
    $isAuthorized = 'добро пожаловать';
}
echo $login;
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isAuthorized ?>
</p>
</body>
</html>

вопрос,зачем когда присваивается переменным значение писать тернарный оператор,если мы можем просто написать $login = $_GET['login'];
$password = $_GET['password'];

ivashkevich

Отлично.
Потому что если с формы убрать одно из полей и отправить такой запрос, то скрипт упадет с ошибкой при обращении к значению массива по несуществующему ключу. То есть если мы уберем с формы поле password и отправим запрос, то в массиве $_GET не будет ключа password. Если прямо обратиться к нему вот так: $_GET['password'], не проверив предварительно с помощью isset, empty или array_key_exists, то будет ошибка. Вам задание - проверить, что так оно и будет.

esqrx
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : 'логин не передан!';
$password = !empty($_GET['password']) ? $_GET['password'] : 'пароль не передан!';

if ($login === 'admin' && $password === 'password'){
    echo 'Добро пожаловать';
}
    else if ($login !== 'admin'){
    echo 'Пользователь не найден';
}
//Почему я не могу сюда ввести **BREAK;**?
    else if ($login === 'admin' && $password !== 'password'){
    echo 'Неверный пароль';
}
ivashkevich
  1. Не нужно в переменные для хранения логина и пароля складывать ошибки! Не пришёл пароль - значит в переменной будет пусто. Можете потом эту пустоту проверять и выводить ошибки, но хранить в переменных предназначенных для чего-то одного всё что вздумается - плохая практика.
  2. break используется в циклах.
  3. С форматированием проблемы у вас - все отступы и переносы пляшут, что сложно читать код.
  4. elseif пишется слитно.
esqrx
$login = ($_GET['login']);
$password = ($_GET['password']);

if ($login === 'admin') {
    if ($password === 'pass') {
        echo 'Добро пожаловать';
    } else echo 'Пароль введен неверно!';
} else echo 'Данный пользователь отсутствует!';

//Спасибо за развернутый ответ!!
ivashkevich
  1. А куда делась проверка с помощью empty? Если поле с формы убрать, то при отправке запроса скрипт упадет с ошибкой.
  2. Для блоков if-else ВСЕГДА используйте фигурные скобки, даже если там одна строчка.
Moskva

Код:

<?php
$login = !empty($_GET['login']) ? $_GET['login'] : 'Логин не передан';
$password = !empty($_GET['password']) ? $_GET['password'] : 'Пароль не передан';
if ($login != 'admin'){
    echo 'Логин неверный';
    die();
} elseif($password != '12345'){
    echo 'Пароль неверный';
    die();
}

?>
<html>
<head>
    <title>Знакомство с GET-запросамиы</title>
</head>
<body>
Переданный логин: <?= $login?>
<br>
Переданный пароль: <?= $password?>
</body>
</html>
ivashkevich

Нужно обходиться без die. В переменные, которые используются для хранения логина и пароля не нужно складывать ошибки.

Moskva

А вот так?

<?php

$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';
if ($login != 'admin'){
    $error = 'Логин неверный';
} elseif($password != '12345'){
    $error = 'Пароль неверный';
} else{
    echo 'Вы успешно авторизовались';
}

?>
<html>
<head>
    <title>Знакомство с GET-запросами</title>
</head>
<body>
<? if($error !== false){
    echo $error;
} ?>
Переданный логин: <?= $login?>
<br>
Переданный пароль: <?= $password?>
</body>
</html>
ivashkevich

Почему сообщение об успешной авторизации находится вне html- документа?

Reechniy
<?php
$login=!empty($_GET['login']) ? $_GET['login']:'';
$password=!empty($_GET['password']) ? $_GET['password']:'';

if($login==='admin' && $password==='Pa$$w0rd'){
    $isAutorized='Верный логин и пароль';
}else if($login!=='admin'){
    $isAutorized='Неверный логин';
}else{
    $isAutorized='Неверный пароль';
}

?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?=$isAutorized?>
    </p>
</body>
</html>
ivashkevich

Отлично

kvakazuabr
if ($login !== 'admin') { //&& $password === 'Pa$$w0rd') {
   //$isAuthorized = true;
    $isAuthorized = 'пользователь не найден';
} else {
    if($password === 'Pa$$w0rd') {
        $isAuthorized = 'добро пожаловать на сайт';
    } else {
      $isAuthorized = 'не верный пароль';  
    }

}
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <!--  //? 'Логин и пароль верные!' : 'Неправильный логин или пароль' ?> -->
    <?= $isAuthorized;?>
</p>
</body>
</html>
ivashkevich

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

AlexxxEy
<?php
$login = !empty($_GET['login']) ?  $_GET['login'] : 'Значение не найдено';
$password = !empty($_GET['login']) ?  $_GET['login'] : 'Значение не найдено';

if($_GET['login'] == 'text1' && $_GET['password'] == 'pass'){
    $LogAvtAcs = true;
}
elseif($_GET['login'] != 'text1') {
    $LogAvtAcs = false;
    $Log = 'Пользователь не найден, нет смысла проверять пароль';

}elseif($_GET['password'] != 'pass'){
    $LogAvtAcs = false;
    $Log = 'Пароль не вереный, доступ запрещен';
}
?>

<html>
<head>
    <title> Страница доступна</title>
</head>
<body>
<p><?= $Log ?></p>
<p><?= $Avtotest = $LogAvtAcs ? 'Доступ есть' : 'Доступа нет'; ?></p>
</body>
ivashkevich
$login = !empty($_GET['login']) ?  $_GET['login'] : 'Значение не найдено';
$password = !empty($_GET['login']) ?  $_GET['login'] : 'Значение не найдено';

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

ivashkevich

$LogAvtAcs - имена переменных с маленькой буквы!

<p><?= $Avtotest = $LogAvtAcs ? 'Доступ есть' : 'Доступа нет'; ?></p>

Вот это для чего вообще? Для чего переменная $Avtotest?

Aleks
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login === 'admin' && $password === 'Pa$$w0rd') {
    $isAuthorized = 'Верная авторизация';
} else if($login !== 'admin') {
    $isAuthorized = 'Логин неверный';
} else {
    $isAuthorized = 'Пароль не верный';
}
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isAuthorized ?>
</p>
</body>
</html>
ivashkevich

Отлично

Vladimir96
<!--Форма-->
<html>
<head>
    <title>Форма входа</title>
</head>
<body>
<form action="/index.php" method="get">
    <label>
        Логин <input type="text" name="login">
    </label>
    <br>
    <label>
        Пароль <input type="password" name="password">
    </label>
    <br>
    <input type="submit" value="Войти">
</form
</body>
</html>
<?php
    //Код и исполнение
    $login = !empty($_GET['login']) ? $_GET['login'] : '';
    $password = !empty($_GET['password']) ? $_GET['password'] : '';

    if ($login === 'admin' && $password === 'Pa$$w0rd') {
        $isAuthorized = $login . ', добро пожаловать!';
    } elseif ($login !== 'admin') {
        $isAuthorized = 'Пользователь не найден';
    } else {
        $isAuthorized = 'Неверный пароль';
    }
    ?>

<html>
    <head>
        <title>Результат авторизации</title>
    </head>
    <body>
    <p>
        <?= $isAuthorized; ?>
    </p>
    </body>
</html>
ivashkevich

Отлично

Lasto
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login === 'admin' && $password === '123') {

       $login = 'Вы вошли';
} else if  ($login!=='admin' )  {
       $login = 'Пользователь не найден';

} else if  ($password!=='Pa$$word')

        $login='Не верный пароль';
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
    <? '<hr>';?>

    <h2>Результат авторизации</h2>

<p>
    <?= $login  ?>
</p>
</body>
</html>
ivashkevich
<? '<hr>';?>

Это что такое?

Lasto

разделил полосой)

ivashkevich

Я к тому, что это за форма записи? Где нормальные PHP-теги? Где echo? Бред какой-то.

Ooleg
<?php

$user = $_GET['login'] === 'admin' ? true : false;
if ($user) {
    $isAuthorized = $_GET['password'] === 'Pa$$w0rd' ? true : false;
}

?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <? if (!$user) {
        echo 'Пользователь не найден!';
        } else {
        echo $isAuthorized ? 'Логин и пароль верные!' : 'Неправильный пароль(';
        }
     ?>
</p>
</body>
</html>
ivashkevich

Странный подход. Логичнее было бы формировать текст ошибки в самом начале, а потом его просто выводить, если переменная с этим текстом не пустая. А если пустая, то выводить сообщение об успешной авторизации.

Ooleg

Просто баловался, хотел написать как можно меньше кода в верхней части.

ivashkevich

Не надо баловаться. Делайте хорошо)

Dreft
<?php
    $login = !empty($_GET['login']) ? $_GET['login'] : '';
    $password = !empty($_GET['password']) ? $_GET['password'] : '';

    if ($login === 'admin' && $password === '123') {
        $isAuthorized = 'Вы успешно вошли.';
    } elseif ($login != 'admin') {
        $isAuthorized = 'Неправильный логин';
    } else {
        $isAuthorized = 'Неправильный пароль';
    }
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p><?=$isAuthorized?></p>
</body>
</html>
ivashkevich

Отлично

XXX
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

switch (true){
    case ($login == 'admin' & $password == '123'):
        $authorized = 'Логин и пароль верны!';
        break;
    case ($login == 'admin' & $password != '123'):
        $authorized = 'Неверный пароль!';
        break;
    default:
        $authorized = 'Пользователь не найден, пароль не проверяется!';
}
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $authorized  ?>
</p>
</body>
</html>
ivashkevich

Отлично

prinzplanloser0514@gmail.com
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

if ($login == 'admin') {
    if ($password == 'Pa$$w0rd') {
        $authorization = 'Добро пожаловать';
    } else
        $authorization = 'Неверный пароль';
} else
    $authorization = 'Неверный логин'

?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?php echo $authorization ?>
</p>
</body>
</html>

Добрый день,похоже на правду?

ivashkevich

Отлично

dliashchenko
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';

  if ($login === 'admin' && $password === 'Pa$$w0rd') {
        $isAuthorized = 'Логин и пароль верные!';
  } elseif ($login !== 'admin'){
    $isAuthorized = 'Логин не найден!';
  } else {
      $isAuthorized = 'Пароль неверный!';
  }
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isAuthorized; ?>
</p>
</body>
</html>
ivashkevich

Отлично

prinzplanloser0514@gmail.com
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : '';
$password = !empty($_GET['password']) ? $_GET['password'] : '';
?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?php
    if ($login == 'admin') {
        if ($password == 'Pa$$w0rd') {
            echo "Вы авторизовались";
        } else
            echo 'Неверный пароль';

    } else
        echo 'Неверный логин'
    ?>
</p>
</body>
</html>
ivashkevich

Ок. Но лучше результат вычислить не посреди шаблона, а в самом начале.

H3licoptero
$login = !empty($_GET['login']) ? $_GET['login'] : ' ';
$password = !empty($_GET['password']) ? $_GET['password'] : ' ';

if ($login === 'admin' && $password === 'Pa$$w0rd') {
    $isAuthorized = 'Логин и пароль верные!';
} elseif ($login === 'admin' && $password != 'Pa$$w0rd') {
    echo 'Пароль неверный.';
} elseif ($login != 'admin') {
    echo 'Пользователь не найден.';
}

?>
<html>
<head>
    <title>Результат авторизации</title>
</head>
<body>
<p>
    <?= $isAuthorized ?>
</p>
</body>
</html>
ivashkevich

Отлично

ZeeCaptain
<?php
$login = !empty($_GET['login']) ? $_GET['login'] : ' ';
$password = !empty($_GET['password']) ? $_GET['password'] : ' ';

if ($login === 'root' && $password === 'pass') {
    $isAuthorized = true;
} elseif($login !== 'root') {
    echo 'Пользователь не найден';
    return 0;
} else {
    $isAuthorized = false;
}
?>
<html>
<head>
    <title>Рузультат авторизации</title>
</head>
<body>
<p>
    <?= $isAuthorized ? 'Логин и пароль верные!': 'Логин и пароль не верные'?>
</p>
</body>
</html>
ivashkevich

Не стоит по умолчанию для пустых значений использовать строку из пробелов. Либо просто пустую строку используй, либо null. И для чего возвращаешь 0?

Самый понятный курс PHP
Онлайн-уроки в удобное время!
Начать бесплатно
Логические задачи с собеседований