2013-09-14 3 views
2

В настоящее время я изучаю PHP и создаю небольшую функцию CMS, которая включает в себя зону входа. Я использовал приведенный ниже код, который включает в себя заголовочный файл include, содержащий информацию о doctype/head и открывающий тег. Он также включает содержимое заголовка. У меня также есть файл подключения для подключения к db.Не удается получить функцию входа в систему

Мой заголовок включает код:

<!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> 

+1

Если войти в систему, успешно вы только повторяющим одну строку после заголовка. Если в заголовке есть проблема, что одна строка может не отображаться. Поскольку вы не разместили заголовок, говорить о нем гораздо больше нельзя. –

+0

Эй, спасибо за быстрый ответ. Я повторил здесь, чтобы все было просто. У меня на самом деле есть форма, где эхо («успешный вход»); выше. Удалил заголовок и разбил html на голые кости, и он все еще ничего не делает, кроме как показывает пустую страницу. –

+0

Что вы видите, когда вы успешно авторизуетесь? – ncm

ответ

3

Вы не можете использовать header('location: index.php'); линию, если вы уже выходного контента (то есть - HTML-код) в браузере, когда вы включен заголовок в этой строке include_once('../includes/headeradmin.php');

читать документацию header - Помните, что заголовок() должен вызываться до фактического вывода отправляется, либо с помощью обычных HTML-теги, пустые строки в файле, или из PHP

вам нужно перенаправить пользователя с помощью функции заголовка() перед выходом главного HTML страницы администратора

+0

+1 да около 99% тата, почему у вас была эта проблема. – ncm

+0

Спасибо за это. Проблема возникает, когда я удаляю заголовочный файл include. Я новичок в PHP, поэтому любые рекомендации относительно того, что я могу сделать здесь, будут оценены. –

+1

OK Спасибо. Я понимаю, как работает header(), но не полностью. Думаю, я просто собираюсь отказаться от проекта, пока я не смогу обойти его или найти пример, из которого я могу учиться. Спасибо, в любом случае. –

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