我可以看到這個話題已經被討論了很多次,我對這裏的理論有基本的理解,但是我只是無法看到問題出現在我的代碼中。無法在登錄時修改標題信息點擊
我正在處理一些需要用戶登錄(由站點管理員)進程的項目,因此我正在使用登錄功能。我的頁面粗略構建的方式是用戶導航到我所稱的父頁面:
http://phzfitness.com/Site_Admin.php(用戶名:CraigB密碼:密碼)。
此頁面包含許多包含php文件(子頁面),其中一個是管理控制檯(../inc/adminConsole.inc.php),其中包含if語句,該語句應顯示管理控制檯鏈接,如添加新的管理員用戶,上傳照片和創建博客條目),如果用戶登錄,則包含另一個包含登錄表單的php文件(孫子頁面)。
所以,當我的土地我的網頁,我帶有登錄表單,就當我登錄我已經把它使用到相同的頁面,並重定向這就是當我得到以下信息:
警告:無法修改標頭信息 - 已在/home2/titch77/public_html/phzfitness.com/Site_Admin.php:13中輸出的標頭(已在/home2/titch77/public_html/phzfitness.com/inc/login_new中發送) .php on line 14
第13行代表第一個包含導航菜單的包含(子頁面)的開始標記,表示無關代碼<?php
。
下面是父頁面代碼:
<?php
require_once 'core/init.php';
?>
<HTML>
<head>
<link href="CSS/dark.css" rel="stylesheet" type="text/css">
<title>Admin Console</title>
</head>
<body>
<div id="wrapper">
<!--### Navigation ###-->
<div id="navigation">
<?php
include_once('inc/nav.inc.php');
include_once('inc/social.inc.php');
?>
</div>
<!--### Header ###-->
<div id="header">
<?php
include_once('inc/head.inc.php');
include_once('inc/promo.inc.php');
?>
</div>
<div id="main">
<?php
include_once('inc/adminConsole.inc.php');
?>
</div>
<!--Right Menu-->
<div id="Right" style="min-height:600">
<?php
include_once('inc/twit.inc.php');
?>
</div>
<div id="footer">
<?php
include_once('inc/footer.inc.php');
?>
</div>
</div>
</body>
</HTML>
代碼進入adminConsole.inc.php
<?php
$user = new user();
if($user->isLoggedIn()) {
?>
"<p>Admin Console</p>";
Welcome <?php escape($user->data()->user_username); ?> You are logged in!<br>
<ul>
<li><a href="../blogpost.inc.php" target="_blank">Crete a new blog entry</a></li>
<li><a href="../add_user.php" target="_blank">Register new user</a></li>
</ul>
echo '';
<?php
} else {
//include_once('inc/loginform.inc.php');
include_once('inc/login_new.php');
}
最後是進入login_new.php碼(這是它開始出錯的地方)
<?php
if(input::exists()) {
if(Token::check(input::get('token'))){
$validate = new Validate();
$validation = $validate->check($_POST, array(
'username' => array('required' => true),
'password' => array('required' => true)
));
if($validation->passed()) {
// log user in
$user = new user();
$login = $user->login(input::get('username'), input::get('password'));
if($login) {
header('Location: '.$_SERVER['PHP_SELF']);
//redirect::to('Site_Admin.php');
} else {
echo 'failed to log in!';
}
} else {
foreach($validation->errors() as $error) {
echo $error, '<br>';
}
}
}
}
?>
<link href="../CSS/Forms.css" rel="stylesheet" type="text/css">
<form class="dark-matter" action="" method="post">
<h1>Admin Log in
<span>You need to log in to use these features!</span>
</h1>
<div class="field">
<label for="username"><span>Username :</span>
<input type="text" name="username" id="username" placeholder="Username" autocomplete="off">
</label>
</div>
<div class="field">
<label for="password"><span>Password :</span>
<input type="password" name="password" id="password" placeholder="Password" autocomplete="off">
</label>
</div>
<input type="hidden" name="token" value="<?php echo Token::generate(); ?>"
<label> <span> </span><input type="submit" name="button" value="Login" class="button button-primary"></label>
</form>
其他php文件中包含多個類,但在此階段不確定是否需要。預先感謝您的幫助。
通過這個尚未=> http://stackoverflow.com/questions/8028957/how-to-fix-headers-already-sent-error-in-php去了 - 問站在被關閉。 – 2014-09-12 15:27:04
我正在尋找比這更多的幫助(是的,我已經通過了它)。我很欣賞這個問題已經以多種方式提出並得到解答。然而,這些答案都不屬於我的具體情況。 也許這是我嵌套我的網頁的方式。也許我錯過了我的代碼中的東西。它可能像我不知道的錯字一樣簡單。也許這不是在這裏做的,但我正在尋找一個人來運行我的代碼,並指出到底什麼是錯誤的,以及在哪裏。如果我要求太多,我會優雅地低頭尋求其他地方的幫助。謝謝 – 2014-09-13 00:48:37
三重檢查「一切」,包括/需要整個9碼。任何超出標題的東西,如回聲,HTML,空格,cookie,錯誤,JS等都被視爲輸出。按照指令制定的每一步,瀏覽你的結構和故事板。 – 2014-09-13 00:51:14