@INDIGO1
Просто человек

Почему ни работает переадресция?

Есть код

<?php
require_once 'scripts/app_config.php';

if (!mysql_connect(DATABASE_HOST, DATABASE_USERNAME, "foo")) {
    handle_error("возникла проблема, связанная с подключением к базе данных, " .
        "содержащей нужную информацию.",
        mysql_error());
}
echo "<p>Connected to MySQL!</p>";

if (!mysql_select_db(DATABASE_NAME)) {
    handle_error("Там проблема конфигурации с нашей базой данных.",
        mysql_error());
}

echo "<p>Connected to MySQL, using database " . DATABASE_NAME . ".</p>";

$result = mysql_query("SHOW TABLES;");

if (!$result) {

    handle_error("При поиске информации в нашей базе данных возникла проблема.",
        "Ошибка в списках таблиц: " . mysql_error());
}

echo "<p>Tables in database:</p>";
echo "<ul>";
while ($row = mysql_fetch_row($result)) {
    echo "<li>Table: {$row[0]}</li>";
}
echo "</ul>";

?>

Там специально поставил неправильный пароль от бд. И он должен делать переадресацию на стро ошибка но он этого ни делает вот файл app_config.php

<?php
// Установка режима отладки
define("DEBUG_MODE", true);

define("DATABASE_HOST", "localhost");
define("DATABASE_USERNAME", "root");
define("DATABASE_PASSWORD", "1234");
define("DATABASE_NAME", "user");

// Константы подключения к базе данных
function debug_print($message) {
 if (DEBUG_MODE) {
 echo $message;
 }
}

function handle_error($user_error_message, $system_error_message) {
    header("Location: show_error.php?" .
        "error_message={$user_error_message}&" .
        "system_error_message={$system_error_message}");
    exit();
}
?>

Вот ошибка

Warning: mysql_connect(): Access denied for user 'root'@'localhost' (using password: YES) in E:\OSPanel\domains\work\test.php on line 6

Warning: Cannot modify header information - headers already sent by (output started at E:\OSPanel\domains\work\test.php:6) in E:\OSPanel\domains\work\scripts\app_config.php on line 20
  • Вопрос задан
  • 85 просмотров
Решения вопроса 1
Потому что ошибка на 6 строке, а механизм переадресации на 20. Возвращается ошибка - возвращается полезный контент, который противоречит механизму переадресации.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@magarif
Программист

Cannot modify header information - headers already sent by ...

Написано, что невозможно изменить заголовки, потому что уже был вывод.

php.net/manual/ru/function.header.php
Ответ написан
Комментировать
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Тут все , включая оформление вопроса без тегов и древний как какашки мамонта код - кошмарный ужас.
1) Прочитайте про ООП, ваша лапша просто кошмар
2) Хотя бы смените библиотеку на mysqli, а еще лучше на PDO
3) про MVC например почитайте

у вас ечится ерортекст, затем скрипт пытается сделать редирект, но так как все заголовки уже отправлены и начался вывод контента, заголовок переадресации не отсылается(читайте как работает протокол хттп(с)).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Ведисофт Екатеринбург
от 25 000 ₽
YCLIENTS Москва
от 200 000 до 350 000 ₽
от 300 000 до 500 000 ₽
20 апр. 2024, в 13:56
7000 руб./за проект
20 апр. 2024, в 13:52
7000 руб./за проект
20 апр. 2024, в 13:23
1000 руб./за проект