Вопрос Нормальный ли код для проверки данных?(mysql ещё не изучал)

Регистрация
4 Дек 2012
Сообщения
64
Репутация
0
Спасибо
0
Монет
0
const CORRECT_USER = "killcode";

const CORRECT_PASS = "qwerty123";



$name = $password = "";



$name = $_POST["username"];

$password = $_POST["password"];



function correct_login() {

global $name, $password;

if ($name === CORRECT_USER) {

if ($password === CORRECT_PASS) {

echo "Hello, killcode!";

} else {

echo "Incorrect password, please try again";

}

} else {

echo "Incorrect username, please try again";

}

}



correct_login();

 
Вот эта строка абсолютно бессмысленная: $name = $password = "";
Объясни, зачем ты делаешь вот это: $name = $_POST["username"];
$password = $_POST["password"]; У тебя УЖЕ есть значения $_POST["username"] и $_POST["password"] - зачем ты их присваиваешь переменным?

Вот так делать не надо: global $name, $password; Всё, что можно делать без global, должно делаться без global.

Должно быть так: function correct_login(string $name, string $password) : void {
if ($name === CORRECT_USER) {
if ($password === CORRECT_PASS) {
echo "Hello, killcode!";
} else {
echo "Incorrect password, please try again";
}
} else {
echo "Incorrect username, please try again";
}
}

correct_login($_POST["login"], $_POST["password"]);
 
Желательно также ввести проверку наличия данных и метода запроса:

const CORRECT_USER = "killcode";
const CORRECT_PASS = "qwerty123";

function authenticateUser($username, $password) {
return $username === CORRECT_USER && $password === CORRECT_PASS;
}

function displayMessage($authenticated) {
echo $authenticated ? "Hello, killcode!" : "Incorrect username or password, please try again";
}

if ($_SERVER["REQUEST_METHOD"] === "POST") {
$username = $_POST["username"] ?? "";
$password = $_POST["password"] ?? "";

displayMessage(authenticateUser($username, $password));
}
 
В дополнение к ответу от Андрей: не забывай, что поля могут быть не отправлены в запросе, потому лучше последнюю строку сделать так: correct_login($_POST["login"] ?? "", $_POST["password"] ?? "");
 
без MySQL плохо будет, но пока ты новичок - нормально
 
Назад
Сверху