Я делаю проект в php mvc, но без рамки. Я организовал файлы таким образом: общественностьPhp redirect не работает
- Каталога: есть файлы доступны от внешнего
- Каталога Вида: есть файлы .php, но в основном только HTML
- Direcory Модель: содержит файлы, связанные с соединение с базой данных, и классы, которые определяют объекты, например, класс User.php контроллер
- Каталог: содержит «общий» класс контроллера и классы контроллеров более «конкретных»
Создает страницу входа (View/login.php) с формой, значение действия которой public/index.php. В index.php есть этот код:
$controller = new LoginController();
$view = $controller->invoke();
$view->render();
Invoke() является функцией в контроллер/LoginController.php, который считывает данные, введенные пользователем, и управляет ими, если они являются правильными (есть пользователь в базы данных с именем пользователя и пароль), а затем создает две глобальные переменные и сделайте редирект:
$_SESSION['logged_in'] = 1;
$_SESSION['username'] = $username;
$url = "../public/home.php";
header("Location: $url", true, 302);
exit();
общественности/home.php делает это:
$controller = new HomeController();
$view = $controller->invoke();
$view->render();
HomeController это класс, который расширяет контроль лер. Конструктор Controller видит, есть ли переменные $ _SESSION ['logged_in'] и $ _SESSION ['username']. Если они не существуют, он перенаправляет на public/index.php.
Моя проблема в том, что строка с заголовком ("refresh: 0; url = ../public/home.php"); не перенаправляется.
Объясните: когда я вставляю правильные данные (зарегистрированный пользователь) переадресации на короткое время, а затем возвращается к home.php. Вместо этого он должен перенаправить на home.php и остаться там, не переходите к index.php.
Я также пробовал с header("refresh: 0; url = ../public/home.php");
, но это та же проблема.
Как я могу решить эту проблему? Спасибо и извините за моего бедного английского!
Я изменил код, добавив 'ob_start();' сразу после '
user245679
'ob_end_flush();' add before 'exit()' или удалить 'ob_end_flush();' и проверить –
Я добавляю 'ob_end_flush();' также перед 'exit()' но это одно и то же ... – user245679