2

私は現在 PHP を学んでおり、ログイン領域を含む小さな CMS 機能を作成しています。doctype/head 情報と開始タグを含むインクルード ヘッダー ファイルを含む以下のコードを使用しました。また、ヘッダー コンテンツも含まれます。データベースに接続するための接続ファイルもあります。

私のヘッダーインクルードコードは次のとおりです。

<!DOCTYPE html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width" />
<title><?php echo $pagetitle ?></title>
<link rel="stylesheet" href="../stylesheets/foundation.css">
<link rel="stylesheet" href="../stylesheets/app.css">
<style>@import url(http://fonts.googleapis.com/css?family=Open+Sans:400,300,600,700,800); @import url (http://fonts.googleapis.com/css?family=Kreon:100,200,300,400);</style>

<script src="../javascripts/modernizr.foundation.js"></script>
</head>


<body>
<div class="subHeader">
<div class="row">
    <div class="four columns logo">
    <a href="../index.html"><img src="../images/logo.png" alt="logo" /></a>
    </div>
    <div class="eight columns navigation right">
    <ul class="navigationMain">
    <li class="<?php if($navcurrent == "home"){echo "navigationActive";} ?>"><a href="index.php">Home</a></li>
    <li class="<?php if($navcurrent == "services"){echo "navigationActive";} ?>"><a href="services.php">Services</a></li>
    <li class="<?php if($navcurrent == "work"){echo "navigationActive";} ?>"><a href="gallery.php">Recent Work</a></li>
    <li class="<?php if($navcurrent == "about"){echo "navigationActive";} ?>"><a href="about.php">About</a></li>
    <li class="<?php if($navcurrent == "contact"){echo "navigationActive";} ?>"><a href="contact.php">Contact</a></li>
    </ul>
    </div>

 <div class="twelve columns titlesection">
 <h2><?php echo $headTitle ?></h2>
 <h4><?php echo $headsubTitle ?></h4>
 </div>

 </div><!--End Feature Row-->
 </div><!--End Feature-->

 <div class="underbar">
<div class="bordertriangle"></div>
<div class="row">
        <div class="eight columns">&nbsp;</div>
        <div class="three columns right socialcontainer">
        <ul class="socialicons">
        <li><a><img id="linkedinIcon" src="../images/socialli.png" alt="linkedin icon" /></a></li>
        <li><a><img id="twitterIcon" src="../images/socialtw.png" alt="twitter icon" /></a></li>
        <li><a><img id="facebookIcon" src="../images/socialfb.png" alt="facebook icon" /></a></li>
        </ul>
        </div>
</div>

管理ページを開くと、ユーザー名パスワード フォーム、ヘッダー、フッターが正常に表示されます。エラーをテストすると、正常に返されます。ただし、有効なユーザー名とパスワードを使用して正常にログインすると、ヘッダー ファイルに含まれているもの以外のコンテンツは表示されません。誰かが私が間違っているかもしれない方向に私を向けることができますか? どんな助けでも大歓迎です。私はPHPの比較的初心者です...

<?php 
$pagetitle = "Admin";
$navcurrent = "home";
$headTitle = "ADMIN AREA";
$headsubTitle = "SITE ADMINISTRATION AREA";
include_once('../includes/connection.php');
include_once('../includes/headeradmin.php');


if (isset($_SESSION['logged_in'])) {
echo('Successfully Logged In');
} else {
    if (isset($_POST['username'], $_POST['password'])){

        $username = $_POST['username'];
        $password = $_POST['password'];

        if (empty($username) or empty($password)){

            $error = 'An Error Has Occurred - All Fields Are Required';

            }
            else{
            $query = $pdo->prepare('SELECT * FROM users WHERE user_name = ? AND user_password = ?');    

            $query->bindValue(1, $username);
            $query->bindValue(2, $password);

            $query->execute();

            $num = $query->rowCount();

            if ($num == 1) {
                $_SESSION['logged_in'] = true;

                header('location: index.php');
                exit(); 
                }
                else{

                $error = 'The username/password you entered was incorrect - Please try again';
                    }
                }
        }
    ?>

    <div class="row">
    <div class="four columns centered">

    <?php if (isset($error)) { ?>
    <h5 style="color: #e63333;"><?php echo $error; ?></h5>
    <br />
    <br />

    <?php   } ?>

    <form action="index.php" method="post">
        <input type="text" name="username" placeholder="Username" />
        <input type="password" name="password" placeholder="Password" />
        <input type="submit"  value="Login" />
        </form>
    </div>
    </div>

4

1 に答える 1

3

header('location: index.php');この行にヘッダーを含めたときに、既にコンテンツ (つまり、html コード) をブラウザーに出力している場合、この行は使用できません。include_once('../includes/headeradmin.php');

headerのドキュメントを読む-実際の出力が送信される前に、通常の HTML タグ、ファイル内の空白行、または PHP から header() を呼び出す必要があることに注意してください。

管理ページのhead htmlを出力する前に、header()関数でユーザーをリダイレクトする必要があります

于 2013-09-14T23:50:10.477 に答える