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

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

nikogdaАвтор темы

  • *
  • Оффлайн
  • Награды Более 5 лет на форуме !!! Более 50 созданных тем Топ 10 по созданным темам Более 150 сообщений
  • Дата регистрации: Июль 2016
  • Сообщений: 199
  • Страна: ru
  • Поблагодарили: 3 раз(а)
  • Репутация +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

  • *
  • Оффлайн
  • Награды Более 250 сообщений Репутация более 15 Три года на форуме !!! За время в онлайне на форуме Более 10 созданных тем
  • Дата регистрации: Апр. 2018
  • Расположение: Тверь
  • Возраст: 33
  • Сообщений: 282
  • Страна: ru
  • Поблагодарили: 21 раз(а)
  • Репутация +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Автор темы

  • *
  • Оффлайн
  • Награды Более 5 лет на форуме !!! Более 50 созданных тем Топ 10 по созданным темам Более 150 сообщений
  • Дата регистрации: Июль 2016
  • Сообщений: 199
  • Страна: ru
  • Поблагодарили: 3 раз(а)
  • Репутация +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

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

nikogdaАвтор темы

  • *
  • Оффлайн
  • Награды Более 5 лет на форуме !!! Более 50 созданных тем Топ 10 по созданным темам Более 150 сообщений
  • Дата регистрации: Июль 2016
  • Сообщений: 199
  • Страна: ru
  • Поблагодарили: 3 раз(а)
  • Репутация +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

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

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

nikogdaАвтор темы

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

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

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

kvozimir

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

 
Теги: