Автор Тема: Как исправить вывод содержимого двух шапок файла header в скрипте ФФ?  (Прочитано 813 раз)

0 Пользователей и 1 Гость просматривают эту тему.

nikogdaАвтор темы

  • *
  • Оффлайн
  • Награды Более 7 лет на форуме Более 100 сообщений Более 50 созданных тем Топ 10 по созданным темам
  • Дата регистрации: Июль 2016
  • Сообщений: 201
  • Страна: ru
  • Поблагодарили: 4 раз(а)
  • Репутация +0/-0
  • Пол: Мужской
Доброго времени суток.
Люди, подскажите и помогите пожалуйста разобраться, почему выводится/отображается при открытии исходного кода страницы ctrl+u содержимое сразу двух файлов /inc/_header.php в аккаунте пользователя.

Сейчас опишу всю штуку.

Создал по мимо  /inc/_header.php еще файл /inc/_header_account.php, в котором будут подключатся в теге <head> другие скрипты js, стили css и наверное title с discription.

Прописал файл /inc/_header_account.php в /pages/_account.php таким образом:
<?PHP
$_OPTIMIZATION["title"] = "Аккаунт";
$_OPTIMIZATION["description"] = "Аккаунт пользователя";
$_OPTIMIZATION["keywords"] = "Аккаунт, личный кабинет, пользователь";

# Шапка
@include("inc/_header_account.php");

# Блокировка сессии
if(!isset($_SESSION["user_id"])){ Header("Location: /"); return; }

if(isset($_GET["sel"])){
      
   $smenu = strval($_GET["sel"]);
         
   switch($smenu){
      
      case "404": include("pages/_404.php"); break; // Страница ошибки
      case "stats": include("pages/account/_story.php"); break; // Статистика
      case "referals": include("pages/account/_referals.php"); break; // Рефералы
      case "exit": @session_destroy(); Header("Location: /"); return; break; // Выход
            
   # Страница ошибки
   default: @include("pages/_404.php"); break;
         
   }
         
}else @include("pages/account/_user_account.php");

?>

Файл получается подключился.

Но при нажатии Ctrl+U исходного кода страницы наблюдаю, что отображается содержимое двух файлов /inc/_header.php и /inc/_header_account.php
Считаю это не правильным, так как должен отображаться, быть задействован исключительно только файл /inc/_header_account.php после авторизации. А до авторизации должен быть задействован только файл /inc/_header.php

Смотрел много скриптов и нашел и попробовал себе такой код, но ничего не вышло (код в корне index.php):
# Шапка
// if ($_GET["menu"] == 'about') {
//    include("inc/_header.php");
// }else include("inc/_header2.php");

   if(isset($_GET["menu"])){

      $menu = strval($_GET["menu"]);

      switch($menu){

         case "user": include("inc/_header_account.php"); break;

         default: include("inc/_header.php"); break;

      }

   }else include("inc/_header.php");


      if(isset($_GET["menu"])){

         $menu = strval($_GET["menu"]);

         switch($menu){

            case "404": include("pages/_404.php"); break; // Страница ошибки
            case "user": include("pages/_account.php"); break; // Аккаунт

            case "exit":
                  session_start();unset($_SESSION['user']);unset($_SESSION['admin']);session_destroy();session_unset();
                  Header("Location: /"); return;
              break; // Выход

         # Страница ошибки
         default: include("pages/_404.php"); break;

         }

      }else include("pages/_index.php");

У меня в index.php такой код, но при замене ничего не получилось:
# Шапка
@include("inc/_header.php");

      if(isset($_GET["menu"])){
      
         $menu = strval($_GET["menu"]);
         
         switch($menu){
         case "404": include("pages/_404.php"); break; // Страница ошибки
         # Страница ошибки
         default: @include("pages/_404.php"); break;
         
         }
         
      }else @include("pages/_index.php");


# Подвал
@include("inc/_footer.php");

Посмотрел в скаченном скрипте в файле /pages/_account.php есть ли там строчка как у меня - @include("inc/_header_account.php"); - но ее там не оказалось. Был вот такой код:
<?php

if(!defined('MY_KEY'))
{
    header("HTTP/1.1 404 Not Found");
    exit(file_get_contents('../404.html'));
}

$_OPTIMIZATION["title"] = "Аккаунт";
$_OPTIMIZATION["description"] = "Аккаунт пользователя";
$_OPTIMIZATION["keywords"] = "Аккаунт, личный кабинет, пользователь";

# Блокировка сессии
if(!isset($_SESSION["user_id"])){ Header("Location: /"); return; }

if(isset($_GET["sel"])){

    $smenu = strval($_GET["sel"]);

    switch($smenu){

Как быть вообще не знаю. И прицепиться не к чему и по аналогии сделать никак(


 

whoohaw

  • *
  • *
  • Оффлайн
  • Награды Более 6 лет на форуме !!! Более 250 сообщений За помощь пользователям За финансовую помощь форуму !!! Репутация более 15 За время в онлайне на форуме Более 10 созданных тем
  • Дата регистрации: Апр. 2018
  • Расположение: Тверь
  • Возраст: 35
  • Сообщений: 320
  • Страна: ru
  • Поблагодарили: 27 раз(а)
  • Репутация +17/-1
  • Пол: Мужской
  • Дата рождения:
    1988-09-21
    Социальные сети:
    ВКонтакте
Посмотри этот код.
# Шапка
// if ($_GET["menu"] == 'about') {
//    include("inc/_header.php");
// }else include("inc/_header2.php");

   if(isset($_GET["menu"])){

      $menu = strval($_GET["menu"]);

      switch($menu){

         case "user": include("inc/_header_account.php"); break;

         default: include("inc/_header.php"); break;

      }

   }else include("inc/_header.php");


      if(isset($_GET["menu"])){

         $menu = strval($_GET["menu"]);

         switch($menu){

            case "404": include("pages/_404.php"); break; // Страница ошибки
            case "user": include("pages/_account.php"); break; // Аккаунт

            case "exit":
                  session_start();unset($_SESSION['user']);unset($_SESSION['admin']);session_destroy();session_unset();
                  Header("Location: /"); return;
              break; // Выход

         # Страница ошибки
         default: include("pages/_404.php"); break;

         }

      }else include("pages/_index.php");

По GET у тебя произошло задвоение по параметру "user". Проходя по первому циклу свитч, у тебя кейс подключает файл _header_account.php, а по второму циклу - файл _account.php.

Хотя если судить по логике, то пользователю, который авторизован - надо показывать иную шапку сайта, а неавторизованному - первичную. Это делается проверкой наличия сессии, а не по сверке ГЕТ-параметров. Надо примерно так:
if ($_SESSION['user_id']) {
include (шапка для авторизованных);
} else include (шапка для неавторизованных)

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

nikogdaАвтор темы

  • *
  • Оффлайн
  • Награды Более 7 лет на форуме Более 100 сообщений Более 50 созданных тем Топ 10 по созданным темам
  • Дата регистрации: Июль 2016
  • Сообщений: 201
  • Страна: ru
  • Поблагодарили: 4 раз(а)
  • Репутация +0/-0
  • Пол: Мужской
возможно, у тебя в коде и есть проверка на существование сессии, однако после условия нет else и авторизованный видит 2 шапки, а неавторизованный - одну. Или наоборот, смотря как реализовано. Покажи код, который подключает шапки в зависимости от условий.

Вот корневой index
# Шапка
@include("inc/_header.php");

      if(isset($_GET["menu"])){
      
         $menu = strval($_GET["menu"]);
         
         switch($menu){
         
            case "404": include("pages/_404.php"); break; // Страница ошибки
            case "rules": include("pages/_rules.php"); break; // Правила проекта
            case "about": include("pages/_about.php"); break; // О проекте
            case "adminka": include("pages/_admin.php"); break; // Админка
            
         # Страница ошибки
         default: @include("pages/_404.php"); break;
         
         }
         
      }else @include("pages/_index.php");


# Подвал
@include("inc/_footer.php");


# Заносим контент в переменную
$content = ob_get_contents();

Файл pages/_account.php
<?PHP
$_OPTIMIZATION["title"] = "Аккаунт";
$_OPTIMIZATION["description"] = "Аккаунт пользователя";
$_OPTIMIZATION["keywords"] = "Аккаунт, личный кабинет, пользователь";


# Блокировка сессии
if(!isset($_SESSION["user_id"])){ Header("Location: /"); return; }

if(isset($_GET["sel"])){
      
   $smenu = strval($_GET["sel"]);
         
   switch($smenu){
      
      case "404": include("pages/_404.php"); break; // Страница ошибки
      case "stats": include("pages/account/_story.php"); break; // Статистика
      case "referals": include("pages/account/_referals.php"); break; // Рефералы

      case "exit": @session_destroy(); Header("Location: /"); return; break; // Выход
            
   # Страница ошибки
   default: @include("pages/_404.php"); break;
         
   }
         
}else @include("pages/account/_user_account.php");

?>
 

whoohaw

  • *
  • *
  • Оффлайн
  • Награды Более 6 лет на форуме !!! Более 250 сообщений За помощь пользователям За финансовую помощь форуму !!! Репутация более 15 За время в онлайне на форуме Более 10 созданных тем
  • Дата регистрации: Апр. 2018
  • Расположение: Тверь
  • Возраст: 35
  • Сообщений: 320
  • Страна: ru
  • Поблагодарили: 27 раз(а)
  • Репутация +17/-1
  • Пол: Мужской
  • Дата рождения:
    1988-09-21
    Социальные сети:
    ВКонтакте
предположим. А по какому принципу подключается шапка /inc/_header_account.phpм ?
 

nikogdaАвтор темы

  • *
  • Оффлайн
  • Награды Более 7 лет на форуме Более 100 сообщений Более 50 созданных тем Топ 10 по созданным темам
  • Дата регистрации: Июль 2016
  • Сообщений: 201
  • Страна: ru
  • Поблагодарили: 4 раз(а)
  • Репутация +0/-0
  • Пол: Мужской
предположим. А по какому принципу подключается шапка /inc/_header_account.phpм ?

Я прописал ее в pages/_account.php
<?PHP
$_OPTIMIZATION["title"] = "Аккаунт";
$_OPTIMIZATION["description"] = "Аккаунт пользователя";
$_OPTIMIZATION["keywords"] = "Аккаунт, личный кабинет, пользователь";

# Шапка
@include("inc/_header_account.php");

# Блокировка сессии
if(!isset($_SESSION["user_id"])){ Header("Location: /"); return; }
if(isset($_GET["sel"])){
      
   $smenu = strval($_GET["sel"]);
         
   switch($smenu){

Попробовал сделать вот так в index корневом
# Шапка
//@include("inc/_header.php");
if(isset($_SESSION['user_id'])) {
@include ("inc/_header_account.php");
} else @include ("inc/_header.php");

Что-то все странно стало отображаться и видимо это действие только для главной, так как на главной странице все хорошо, а заходя на страницы входа, регистрации - все слетает. В аккаунте тоже стили сбились.
  :flud:
предположим. А по какому принципу подключается шапка /inc/_header_account.phpм ?

Хотя нет, все нормально отображается до авторизации на всех страницах с таким кодом
if(isset($_SESSION['user_id'])) {
@include ("inc/_header_account.php");
} else @include ("inc/_header.php") ;

В аккаунте теперь при нажатии на ctrl+u выводится один <head> файла /inc/_footer_users_account.php

Как бы все правильно получается или нет?

Заметил еще когда авторизован, то при переходе на главную все криво на самой главной(
 

whoohaw

  • *
  • *
  • Оффлайн
  • Награды Более 6 лет на форуме !!! Более 250 сообщений За помощь пользователям За финансовую помощь форуму !!! Репутация более 15 За время в онлайне на форуме Более 10 созданных тем
  • Дата регистрации: Апр. 2018
  • Расположение: Тверь
  • Возраст: 35
  • Сообщений: 320
  • Страна: ru
  • Поблагодарили: 27 раз(а)
  • Репутация +17/-1
  • Пол: Мужской
  • Дата рождения:
    1988-09-21
    Социальные сети:
    ВКонтакте
все правильно. По вопросу того, почему все криво - это уже вопрос к стилям из разных шапок. В шапке для авторизованных криво установлены стили, или прописаны.

Как вариант, это может быть связано с кешем сайта. Стили, как правильно, могут обновляться долго.
 

nikogdaАвтор темы

  • *
  • Оффлайн
  • Награды Более 7 лет на форуме Более 100 сообщений Более 50 созданных тем Топ 10 по созданным темам
  • Дата регистрации: Июль 2016
  • Сообщений: 201
  • Страна: ru
  • Поблагодарили: 4 раз(а)
  • Репутация +0/-0
  • Пол: Мужской
все правильно. По вопросу того, почему все криво - это уже вопрос к стилям из разных шапок. В шапке для авторизованных криво установлены стили, или прописаны.

Как вариант, это может быть связано с кешем сайта. Стили, как правильно, могут обновляться долго.

Все равно выходит что-то не то((( но близко к истине и даже очень близко. Например после авторизации перехожу на главную и главная кривая, а выхожу из аккаунта - все нормально.
Попробую стили подогнать тогда, может что получится. Предчувствие такое, что ничего не получится )))
Ух!!! как при такой погоде трудно капец просто...
Спасибо огромное, с места сдвинулся хоть , я бы до такого никогда не додумался.
 

kvozimir

  • снова в skype --> kvozimir
  • *
  • *
  • Оффлайн
  • Награды Более 8 лет на форуме Более 2000 сообщений Топ 10 по сообщениям Топ 10 по созданным темам Репутация  более 25 Более 50 созданных тем Благодарность от форума За помощь пользователям За время в онлайне на форуме
  • Дата регистрации: Фев. 2016
  • Возраст: 32
  • Сообщений: 2028
  • Страна: ru
  • Поблагодарили: 242 раз(а)
  • Репутация +40/-1
  • Пол: Мужской
  • Дата рождения:
    1992-04-18
    Социальные сети:
    ВКонтакте
при авторизации при переходе на главную цепляет стили от аккаунта, поэтому все и едет

 
Теги: