PHP не отображает эхо-сигнал

#php #echo

#php #эхо

Вопрос:

Я столкнулся с этой проблемой с помощью пользовательского скрипта входа в систему; Перенаправления работают нормально, но это не повторяет предупреждение вот мой код:

         if ($_POST['submit']) {

            sleep(6);

            $expire = time()   (24 * 60 * 60);
            $cookie = 'level of clearence';

            if ($passcode == ($level4||$level3||$level2||$level1)) {
                echo '<script>alert("Happy Hacking");</script>';
                //    setcookie($cookie, 'level4', $expire);

                header('Location: home.php');
            }
            else if ($passcode != ($level4||$level3||$level2||$level1)) {
                echo '<script>alert("Incorrect PassCode");</script>';
                header('Location: index.php');
            }

        }
  

Комментарии:

1. Кроме того, печать, похоже, ничего не меняет

2. Здесь нельзя использовать перенаправление PHP. Вместо этого используйте перенаправление JavaScript.

3. Это Ajax-скрипт? Если это так, используйте перенаправление JavaScript. Если нет, сценарий оповещения не будет отображаться, потому что вы перенаправляетесь на совершенно другую страницу.

4. Это ничего не повторяет, потому что это не то, как работают ответы на перенаправление. Если Location заголовок указывает браузеру перенаправить, браузер игнорирует любое содержимое и просто выдает новый направленный запрос.

5. Перенаправления Javascript не работают, вместо этого они обновляют страницу

Ответ №1:

Вы не можете выдавать заголовки после того, как выходные данные уже отправлены.

             echo '<script>alert("Incorrect PassCode");</script>';
            header('Location: index.php'); // This wont work after your echo
  

Этот код не будет работать. Вы можете изменить это на перенаправление JavaScript

            echo '<script>
                   alert("Incorrect PassCode");
                   location.href="index.php";
                 </script>';
  

Согласно руководству по PHP

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