我可以看到这个话题已经被讨论了很多次,我对这里的理论有基本的理解,但是我只是无法看到问题出现在我的代码中。无法在登录时修改标题信息点击
我正在处理一些需要用户登录(由站点管理员)进程的项目,因此我正在使用登录功能。我的页面粗略构建的方式是用户导航到我所称的父页面:
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