@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 например почитайте

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

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

Войти через центр авторизации
Похожие вопросы