(1) Я загружаю свой веб-сайт на удаленный веб-сервер.
(2) Шаблонная система сайта настроена таким образом, что все страницы формируются путем отправки запросов с index.php
url в index.php
(3) Загрузка начальных страниц. Эта страница определяет местоположение следующей страницы, оценивая значение ее формы.
(4) Перенаправление на следующую страницу выполняется путем создания header('location: next_page')
: header('location: next_page')
(5) По какой-то причине перенаправление не выполняется. Вот как выглядит код:
$error = ""; if(isset($_POST['index_choice'])){ $path_choice = isset($_POST['path']) ? $_POST['path'] : NULL; //echo $path_choice; //echo $page_inc; //nothing after this if($path_choice != null){ if($form->is_connected()){ //if($path_choice != "" || $path_choice != NULL){ if($path_choice == "new"){ //header('location: /login.php'); //header('location: page/login'); header('location: /index.php?page=login'); exit(); } else{ //header('location: /amend.php'); //header('location: page/amend'); header('location: /index.php?page=amend'); exit(); } //} /** else{ //destroy_session(); $error = "You haven't selected a path. Please choose a path"; } * */ } else{ //destroy_session(); $error = "Problems with connecting to the database"; } }else{ //destroy_session(); $error = "You have not indicated your choice"; } }
РЕШИТЬ
Это было дело в том, что у вас есть пробел после ?>
Где-то еще в коде. Это было показано мне после размещения следующих команд в верхней части кода:
error_reporting(E_ALL); ini_set('display_errors', 'On');
Я хотел бы поблагодарить всех людей, которые пытались помочь.
Похоже, вы эхо-текст в браузере перед отправкой заголовка («location»). Вы не можете отправлять контент в свой браузер перед выполнением заголовка (), так как ваше эхо приведет к отправке заголовка. Прокомментируйте эти строки и посмотрите, работает ли это:
// echo $path_choice; // echo $page_inc;
Теперь ваш заголовок будет отправлен, и вы будете перенаправлены.
добавьте этот код в первый код:
<?php ob_start(); ?>
Вы можете попробовать использовать javascript для перенаправления страницы:
echo '<script>window.location = "'.$url.'";</script>';
Является ли простой PHP-скрипт следующим:
<?php header('Location: /index.php?page=login'); ?>
Вы также должны убедиться, что путь кода с $path_choice != null
и $form->is_connected() === true
действительно принят, потому что ваши состояния ошибок не устанавливают HTTP-заголовки вообще.
Я вижу «destroy_session ()», вы используете session_start () где-то? Убедитесь, что контент NO (включая (cookie) сеанса) уже отправлен.
Советы по отладке: установите error_reporting (E_ALL) (включая E_NOTICE). Это даст вам строку, по которой отправляются заголовки.
Другие источники проблем: – BOM – дополнительные строки перед включением файла
Я считаю, вам нужно проверить ваш if-stack и убедиться, что вы попадаете в каждый из ваших циклов. Поместите эхо после каждого оператора if, чтобы удостовериться, что заголовок () даже оценивается, ваш цикл пролонгирован раньше, чем вы ожидаете.
Мой подозреваемый связан с использованием null и $ path_choice! = Null. Вы пробовали is_null () или isset (), поскольку они были специально разработаны для проверки, является ли переменная нулевой. Кроме того, операнд! == может работать и в этом случае, но я не уверен, если PHP имеет это.
Убедитесь, что перед <?php
php-файла у вас нет места. Это может помочь, если вы изменили тип кодировки файла на UTS_8 без спецификации и backspace непосредственно перед <?php
и убедитесь, что у вас нет session start()
после чего-либо в файле. Это должно быть сразу после
Просто попробуйте это. это будет работать
echo "<script type='text/javascript'> window.location='index.php'; </script>";
вместо header("location: index.php");
Просто убедитесь, что перед вашим PHP-кодом у вас нет места, потому что это имеет значение.
Например
<?php some code this is the correct way ?> -------------- <?php some code this is the incorrect way the space above matters ?>
Ну, если вы все попробуете, этот пример может помочь (HTML / PHP):
<?php header("HTTP/1.0 404 Not Found"); echo '<html> <head> <meta http-equiv="Refresh" content="0;url=http://www.url.com/index.php?code=404" /> </head><body></body> </html>'; ?>
Убедитесь, что в начале кода не должно быть пробелов
Например:
------whitespace---- <?php . . . . ?>
Удалите пространство из первой строки так, что <?php
должно быть в первой строке.