Подтвердить что ты не робот

Header ('location:..') не работает

(1) Я загружаю свой веб-сайт на удаленный веб-сервер.

(2) Система шаблонов сайтов настроена таким образом, что все страницы формируются путем отправки запросов с запросом URL-адреса на index.php

(3) Загрузка начальных страниц. Эта страница определяет местоположение следующей страницы, оценивая значение ее формы.

(4) Перенаправление на следующую страницу выполняется с помощью: 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'); 

Я хотел бы поблагодарить всех людей, которые пытались помочь.

4b9b3361

Ответ 1

Похоже, вы эхо-текст в браузере перед отправкой заголовка ( "location" ). Вы не можете отправлять контент в свой браузер перед выполнением заголовка(), так как ваше эхо приведет к отправке заголовка. Прокомментируйте эти строки и посмотрите, работает ли это:

// echo $path_choice;
// echo $page_inc;

Теперь ваш заголовок будет отправлен, и вы будете перенаправлены.

Ответ 2

добавить этот код в первый кода:

<?php
ob_start();
?>

Ответ 3

Вы можете попробовать использовать javascript для перенаправления страницы:

echo '<script>window.location = "'.$url.'";</script>';

Ответ 4

Может ли простой PHP script работать следующим образом?

<?php header('Location: /index.php?page=login'); ?>

Вы также должны убедиться, что путь кода с $path_choice != null и $form->is_connected() === true фактически принят, потому что ваши состояния ошибок не устанавливают HTTP-заголовки вообще.

Ответ 5

Я вижу "destroy_session()", вы используете session_start() где-то? Убедитесь, что NO-контент (включая (cookie файлы cookie) уже отправлен.

Советы по отладке: установите error_reporting (E_ALL) (включая E_NOTICE). Это даст вам строку, по которой отправляются заголовки.

Другие источники проблем: - спецификация - дополнительные строки перед включением файла

Ответ 6

Я считаю, что вам нужно проверить ваш if-stack и убедиться, что вы попадаете в каждый из ваших циклов. Поместите эхо после каждого оператора if, чтобы удостовериться, что заголовок() даже оценивается, ваш цикл пролонгирован раньше, чем вы ожидаете.

Мой подозреваемый связан с использованием null и $path_choice!= null. Вы пробовали is_null() или isset(), поскольку они были специально разработаны для проверки, является ли переменная нулевой. Кроме того, операнд! == может работать и в этом случае, но я не уверен, если PHP имеет это.

Ответ 7

Убедитесь, что перед <?php файла php у вас нет места. Это может помочь, если вы изменили тип кодировки файла на UTS_8 без спецификации и backspace непосредственно перед <?php и убедитесь, что у вас нет session start() после чего-либо в файле. Это должно быть сразу после

Ответ 8

Просто попробуйте это. он будет работать

echo "<script type='text/javascript'>  window.location='index.php'; </script>";

вместо header("location: index.php");

Ответ 9

Просто убедитесь, что перед вашим PHP-кодом у вас нет места, потому что это имеет значение.

Например

<?php
some code this is the correct way
?>

--------------

<?php
some code this is the incorrect way the space above matters
?>

Ответ 10

Ну, если вы все попробуете, этот пример может помочь (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>';
?>

Ответ 11

Убедитесь, что в начале кода не должно быть пробелов.

Например:

------whitespace----
<?php
.
.
.
. ?>

Удалите пространство из первой строки так, чтобы <?php должно быть в первой строке.