2014-12-15 2 views
1

Я пытаюсь использовать переменные сеанса, так что когда пользователь входит в учетную запись пользователя или учетную запись администратора, она меняет навигационную панель, чтобы сказать «Выход из системы», а не «Вход». похоже, не меняет навигационную панель! Может кто-нибудь мне помочь?Использование переменной сеанса для отображения входа/выхода

Вот мой loginsubmit.php

<font face="ClearSans-Thin"> 
<font color="lightgray"> 

<?php 
session_start(); 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 
include 'connection.php'; 
include 'loginform.php'; 
?> 
<center> 
<?php 
if (isset($_POST['submit'])) 
    { 
    $user = $_POST['username']; 
    $pass = $_POST['password']; 

    $query = "SELECT COUNT(*) AS cnt FROM Users WHERE Username='" . mysqli_real_escape_string($connection, $user) . "' && Password='" . mysqli_real_escape_string($connection, $pass). "'"; 
    $result = mysqli_query($connection, $query); 
    $row = mysqli_fetch_assoc($result); 

    $queryadmin = "SELECT COUNT(*) AS cnt FROM Admin WHERE Username='" . mysqli_real_escape_string($connection, $user) . "' && Password='" . mysqli_real_escape_string($connection, $pass). "'"; 
    $resultadmin = mysqli_query($connection, $queryadmin); 
    $rowadmin = mysqli_fetch_assoc($resultadmin); 

    if ($row["cnt"] > 0) 
    { 
     $_SESSION["userlogged"] = $user; 
     header("Location: homepage.php"); 
    } 
    else if ($rowadmin["cnt"] > 0) 
     { 
      $_SESSION["userlogged"] = $user; 
      header("Location: homepage.php"); 
     } 
    else 
    { 
     echo 'Not a valid login'; 
    } 
} 
?> 
</center> 

Так проходит через если заявления и устанавливает переменные сеанса. Теперь, возвращаясь к моему housestyle.php, он запускается через инструкции if, если он установлен, он отобразит навигационную панель с выходом из системы, иначе вы увидите логин. Но он, похоже, не работает, он просто отображает навигационную панель с помощью:

<body> 

    <?php 
    if (isset($_SESSION['userlogged'])) 
    { 
    ?> 
    <center> 
    <nav> 
    <ul class="horizontal_menu"> 

     <li> 

     <a href="Homepage.php" title="Back to the home page">HOME</a> 
     </li> 
     <li> 
     <a href="Products.php" title="Check out the products in stock">PRODUCTS</a> 

     </li> 
     <li> 
     <a href="aboutus.php" title="About the company">ABOUT US</a> 
     </li> 
     <li> 
     <a href="contactus.php" title="Contact information for the company">CONTACT US</a> 
     </li> 


     <li> 
    <a href="loginform.php" title="Log into your existing account">LOG OUT</a> 
    </li> 
    </center> 
    </nav> 
    </ul> 
    <ul class="search_bar"> 
    <form method="post" action="search.php"> 
    <input type="text" name="searchterm" placeholder="search..." required><input type="button" value="search" name="Search"> 
    </form> 
    </ul> 
    </body> 
</html> 
<?php 
} 
else 
{ 
?> 
    <center> 
    <nav> 
    <ul class="horizontal_menu"> 

     <li> 

     <a href="Homepage.php" title="Back to the home page">HOME</a> 
     </li> 
     <li> 
     <a href="Products.php" title="Check out the products in stock">PRODUCTS</a> 

     </li> 
     <li> 
     <a href="aboutus.php" title="About the company">ABOUT US</a> 
     </li> 
     <li> 
     <a href="contactus.php" title="Contact information for the company">CONTACT US</a> 
     </li> 


     <li> 
    <a href="loginform.php" title="Log into your existing account">LOG IN</a> 
    </li> 
    <li> 
    <a href="registrationform.php" title="Register a new account">REGISTER</a> 
    </li> 
    </center> 
    </nav> 
    </ul> 
    <ul class="search_bar"> 
    <form method="post" action="search.php"> 
    <input type="text" name="searchterm" placeholder="search..." required><input type="button" value="search" name="Search"> 
    </form> 
    </ul> 
    </body> 
</html> 
<?php 
} 
?> 

ответ

1

Вы начинаете свою сессию после выхода.

<font face="ClearSans-Thin"> 
<font color="lightgray"> 

<?php 
session_start(); 

Переместить session_start(); перед любым выходом.

Как:

<?php 
//No any other output before, like <html>, space, so nothing. 
session_start(); 
?> 
<font face="ClearSans-Thin"> 
<font color="lightgray"> 

EDIT:

Основываясь на Лукаса ответа, вы также должны добавить session_start() к вашему housestyle.php.

ПРИМЕЧАНИЕ

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

должен быть первым, чтобы поймать свою ошибку.

В вашем случае, я мог бы создать startup.php то, что включает в себя следующее:

error_reporting(E_ALL); 
ini_set('display_errors', 1); 
session_start(); 

и include('startup.php'); во всех файле PHP.

+0

Привет, друг. Я сделал это, но когда я вхожу в него, он по-прежнему не меняет навигационную панель, чтобы сказать «Выход»! :( – Uyyyfgfar

+0

добавление session_start(); работает, когда включен в housestyle.php! THaknyou для вашего ответа, хотя помощник – Uyyyfgfar

1

Вы забыли session_start() on housestyle.php

+0

Это не дает ответа на этот вопрос. Чтобы критически или просить разъяснений у автора, оставьте комментарий ниже своего сообщения. – diosney

+0

Добавление session_start() на housestyle.php решает проблему, по крайней мере, на мой взгляд –

+1

Это сработало! THankyou !! – Uyyyfgfar

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