2012-06-05 2 views
1

Я работаю над проектом PHP, где я пытаюсь перенаправить с одной страницы на другую, используя заголовок (Location: something.php). Это работает отлично на локальной машине, но при загрузке на сервер, происходит следующее сообщение об ошибке:О ошибке заголовка в PHP

Warning: Cannot modify header information - headers already sent by (output started at /homepages/4/d404449574/htdocs/yellowandred_in/newTest/editHome.php:15) in /homepages/4/d404449574/htdocs/yellowandred_in/newTest/editHome.php on line 43 

Я уже пытался с include, include_once, require и require_once, но это дает другие ошибки, как:

Cannot redeclare logged_in() (previously declared in C:\wamp\www\ynrNewVersion-1\editHome.php:3) in C:\wamp\www\ynrNewVersion-1\adminIndex.php on line 5 

Мой код

<?php 
session_start(); 
function logged_in() { 
    return isset($_SESSION['username']); 
} 

function confirm_logged_in() { 
    if (!logged_in()) { 
    include "error404.php"; 
    exit; 
    } 
} 

confirm_logged_in(); 
require_once("connection.php"); 

$query="select * from home"; 
$homeInfo = mysql_query($query, $connection); 
$result = mysql_fetch_array($homeInfo); 

$content = $result['content']; 
$rssFeeds = $result['rssFeeds']; 
$message = ""; 
if(isset($_POST['submit'])){ 
    $content = $_POST['content']; 
    $rssFeeds = $_POST['rssFeeds']; 
    if($content == "" || $rssFeeds == ""){ 
    $message = "Please enter into all the fields"; 
    } else { 
    $query = "UPDATE home SET content='$content',rssFeeds='$rssFeeds' WHERE id=1 LIMIT 1"; 
    $result = mysql_query($query,$connection); 
    if(!$result){ 
     echo "error".mysql_error(); 
    } 
    if ($result == 1) { 
     header("Location:adminIndex.php"); 
    } else { 
     $message = "Error Occurred"; 
    } 
    } 
} 
if(isset($_POST['cancel'])){ 
    header("Location:adminIndex.php"); 
} 
?> 
+0

.: Возможно, из-за эха выше, когда он срабатывает первым. заголовок не работает, и вы получили сообщение об ошибке. – sephoy08

+0

Проблема в том, что вы начали эхо-контент перед настройкой заголовка(), вы можете ob_start как упомянутый @shatru или повторно настроить ваш код, чтобы не эхо-текст перед любыми вызовами header() – Scuzzy

ответ

0

Используйте ob_start() в верхней части страницы PHP;

0

вам нужно поставить exit() или die() после функции заголовка, иначе остальная часть скрипта будет продолжать выполняться.

Перенаправление может принимать относительный или абсолютный URL. Проблема заключается в пробеле перед двоеточием. Попробуйте следующее:

header("Location: adminIndex.php"); 
die(); 
+0

Спасибо. –

0

Проблема в том, что у вас есть эхо перед вашей функцией заголовка.

if(!$result){ 
    echo "error".mysql_error(); 
} 

перед вашим двумя заголовками («Местоположение: adminIndex.php»), вы не можете ничего эха.

Смежные вопросы