Как сделать переход на другую страницу при правильном введении пароля и логина на PHP?

<?php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);


$credentials = file('credentials.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);

$username_input = $_POST['username'];
$password_input = $_POST['password'];


$username_valid = false;
$password_valid = false;

foreach ($credentials as $line) {
    list($key, $value) = explode(':', $line);
    if ($key == 'username' && trim($value) == $username_input) {
        $username_valid = true;
    }
    if ($key == 'password' && password_verify($password_input, trim($value))) {
        $password_valid = true;
    }
}

if ($username_valid && $password_valid) {
    header('Location: dvach2.html');
    exit();
} else {
    header('Location: dvach.html');
    exit();
}
?>

У меня есть такой код, он читает пароли вида username:name passsword:password и подсоединён к сайту, введите сюда описание изображения

Пользователь вводит логин и пароль, условные 123 и 123, нажимается на кнопка и происходит быстрая перезагрузка самого сайта, т.е. он переносит на страницу т.к. не находит логин и пароль верными. Запускаю через XAMPP локальный сервер.


Ответы (1 шт):

Автор решения: Doctor Tinker

    <?php
    
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    
    $credentials = file(__DIR__ . '/credentials.txt', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
    
    $username_input = $_POST['username'];
    $password_input = $_POST['password'];
    
    $username_valid = false;
    $password_valid = false;
    
    foreach ($credentials as $line) {
        list($key, $value) = explode(':', $line);
    
        if ($key == 'username' && trim($value) == $username_input) {
            $username_valid = true;
        }
    
        if ($key == 'password' && trim($value) == $password_input) {
            $password_valid = true;
        }
    }
    
    if ($username_valid && $password_valid) {
        header('Location: dvach2.html');
        exit();
    } else {
    
        header('Location: dvach.html');
        exit();
    }

Я решил свою проблему, проблема заключалась в том что когда я пытался авторизоваться он переносил меня обратно на эту же страницу авторизации, я переписал код подобным образом и теперь оно работает.

→ Ссылка