Делаю админку на сайте,после ввода правильно логина\пароль нужно логинить пользователя создавая cookie,но натыкаюсь на вот такую ошибку
Cannot modify header information - headers already sent by (output started at my path) in my path on line 54.
Знаю что это из-за каких то там заголовков,и знаю,что это можно решить если проверять форму и логинить пользователя в отдельном файле,но мне жуно все это делать в том же файле,в котором находиться сама форма,как быть?
Об sql уязвимости знаю :)
Вот код:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Title</title>
<link rel="stylesheet" href="src/css/reset.css">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<link rel="stylesheet" href="../src/css/style.css">
<!-- fonts -->
<link href="https://fonts.googleapis.com/css?family=Noto+Sans|Open+Sans|Roboto&display=swap&subset=cyrillic" rel="stylesheet">
</head>
<body>
<svg style="display: none;">
<symbol id="question" viewBox="0 0 31.357 31.357">
<path d="M15.255,0c5.424,0,10.764,2.498,10.764,8.473c0,5.51-6.314,7.629-7.67,9.62c-1.018,1.481-0.678,3.562-3.475,3.562
c-1.822,0-2.712-1.482-2.712-2.838c0-5.046,7.414-6.188,7.414-10.343c0-2.287-1.522-3.643-4.066-3.643
c-5.424,0-3.306,5.592-7.414,5.592c-1.483,0-2.756-0.89-2.756-2.584C5.339,3.683,10.084,0,15.255,0z M15.044,24.406
c1.904,0,3.475,1.566,3.475,3.476c0,1.91-1.568,3.476-3.475,3.476c-1.907,0-3.476-1.564-3.476-3.476
C11.568,25.973,13.137,24.406,15.044,24.406z"/>
</symbol>
</svg>
<?php require_once "includes/header.php";?>
<?php
if(isset($_POST['do_auth'])) {
$username = $_POST['username'];
$password = $_POST['password'];
if ($username == '') {
$error = 'Incorrect username or password';
}
else if($password == '') {
$error = 'Incorrect username or password';
}
// No error
else {
$user = $connection->query("SELECT * FROM `admins` WHERE `username` = '$username'");
if(mysqli_num_rows($user) == 0) {
$error = 'Incorrect username or password';
} else {
$user = mysqli_fetch_assoc($user);
if( !password_verify($password, $user['password']) ){
$error = 'Incorrect username or password';
} else {
// Access!
setcookie('user', $_POST['username'], 300, '/');
}
}
}
}
?>
<?php
if (isset($_COOKIE['user'])) { ?>
<input type="submit" class="btn btn-access" value="Access!">
<?php } else { ?>
<section class="blog">
<div class="container">
<div class="row justify-content-center">
<form action='<?=$_SERVER["SCRIPT_NAME"]?>' method='POST' class="col-4">
<h4 style="color: #333;">Log in</h4>
<h6 style="color: red;"><?=$error?></h6>
<input type="text" name="username" placeholder="username" class="form-control" value="<?=$_POST['username']?>"><br>
<input type="password" name="password" placeholder="password" class="form-control"><br>
<input type="submit" name="do_auth" value="Log in" class="btn btn-success">
</form>
</div>
</div>
</section>
<?php }?>
<!-- Bootstrap -->
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
</body>
</html>