Здравствуйте, имеется MVC модель сайта, смысл такой если человек авторизован имеет свою сессию, то контроллер возвращает по адресу "/admin" панель администратора. Если нет, то возвращает форму авторизации. Проблема заключается в следующем, что когда я авторизуюсь, то нужно обновить страницу вручную, что бы появилась панель администратора, если использовать header( "Location: /admin" );
то выкидывает ошибку - Warning: Cannot modify header information - headers already sent by
Что делать?
Код контроллера:
class AdminController
{
public function actionPanel()
{
if (isset($_SESSION['users-login'])) {
$client = AdminPanel::getSelectClientList();
include_once ROOT . '/views/layaut/administrator/Panel.php';
}else{
include_once ROOT . '/views/layaut/administrator/Login.php';
}
return true;
}
}
Код авторизации:
<?php
include_once ROOT . '/views/scripts/scripts.html';
include_once ROOT . '/views/views/administrator/Login.html';
$login = $_POST;
$errors = array();
if (isset($login['do_admin'])){
$log = AdminPanel::getEntrance('users', $login['email'], $login['pass']);
if ($log == false){
$errors[] = 'Неверно введено имя пользователя или пароль';
}
if(empty($errors)){
$_SESSION['users-login'] = $log;
header( "Location: /admin" );
}else {
echo '<div style="color: #ff4930;">' .array_shift($errors).'</div>';
}
}
сама форма HTML:
<div class="container" id="authorization">
<div class="col-12 col-md-4">
<form action="\admin" method="post" class="form-signin">
<h2 class="form-signin-heading">Авторизация</h2>
<label for="inputEmail" class="sr-only">Адрес электронной почты</label>
<input name='email' type="email" id="inputEmail" class="form-control" placeholder="Адрес электронной почты" required="" autofocus="">
<label for="inputPassword" class="sr-only">пароль</label>
<input name='pass' type="password" id="inputPassword" class="form-control" placeholder="Пароль" required="">
<div class="checkbox">
</div>
<button class="btn btn-lg btn-primary btn-block" type="submit" name="do_admin">Вход</button>
</form>
</div>
</div>
Не надо ничего выводить на экран до header()
, иначе он не будет работать. Надо удалить следующее:
include_once ROOT . '/views/scripts/scripts.html';
include_once ROOT . '/views/views/administrator/Login.html';
Тогда все будет работать.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
ЗдравствуйтеЕсть проект на Yii2 фреймворке и там нужно сделать так чтоб при выходе пользователя на одном устройстве/браузере его авторизация...