2015-12-18 4 views
0

Для того, чтобы отделить html и php-код, я подошел к следующей структуре - Index.php - Мозг кода - получает данные, обрабатывает данные, а затем выбирает, что страницы для отправки пользователю.перенос переменных между главной страницей и внутренними страницами

Перед тем как перейти на основной сайт, вам необходимо войти в систему или зарегистрироваться. После этого index.php загрузит site.html, у которого будет блок dyn_content. Содержимое будет загружено javascript в зависимости от того, какая ссылка нажата пользователем.

index.php

... 
case "inside": { 
      site(); 
      break; 
     } 
... 
function site() { 
    $Page = file_get_contents("site.html"); 
    echo $Page; // if it is not good way to display page, plz let me know the better way. 
    return 1; 
} 
... 

site.html

... 
<div id="main_page"> 

      <div id="dyn_content"> 

      </div> 
     </div> 
... 

JQuery

... 
$(document).on("click",'#link_profile', function(){ 
     $("#dyn_content").load("in_page/profile.php",function() { 
      $('#m_main_top').load("menu/m_profile.php");}); 
      return false; 
    }); 
$(document).on("click",'#link_setings', function(){ 
     $("#dyn_content").load("in_page/set.php",function() { 
      $('#m_main_top').load("menu/m_set.php");}); 
      return false; 
    }); 
... 

Для отображения данных при загрузке страницы в din_content, мне нужно получить его из базы данных (данные пользователя для profile.php для примера). Поскольку я разделял код, мне нужно сделать это в index.php (я не могу сделать это в файле profile.php, так как это разрушит концепцию разделения). Однако переменные в index.php не видны на страницах, загруженных в dyn_content (но я ожидаю, что они будут работать, так как мы все еще в index.php).

Итак, первый вопрос: возможно ли, чтобы индексные переменные отображались на страницах, загруженных в блок dyn_content? Может быть, проблема в том, что страница site.html уже загружена index.php, а когда страницы (страницы в блоке dyn_content), загруженные jquery, слишком поздно, поскольку это действие происходит на стороне пользователя?

Итак, я придумал идею - получить все требуемые данные в каком-то пространстве, а затем взять эти данные, когда это необходимо. Поэтому я придумываю следующие идеи, как это сделать:

  1. Я думал о передаче переменных с index.php на jquery, а затем из jquery на страницу dyn_block. Но я думаю, что это не лучший способ.
  2. Отправлено json data от index.php на другие страницы. Он выглядит хорошо, но проблема в том, что мы не знаем адресата, пока пользователь не нажмет на одну из ссылок (это могут быть settings.php или profile.php или другие ссылки). Кроме того, данные должны обрабатываться только тогда, когда страница должна отображаться. Поэтому у меня проблема с реализацией этой идеи, и я не уверен, что она лучшая.
  3. Использование сеансов или кэша браузера. Это, я думаю, лучший способ, как это сделать. Но я не уверен, хорошо ли это, так как мы можем использовать 50 переменных, которые будут занимать место пользователя. И если он уже заполнен на стороне пользователя, у нас возникнет проблема с отображением данных.

Так что это все идеи, что я получаю. Итак, вопрос: могу ли я сделать переменные в index.php видимыми во внутренних частях, как описано выше? если нет, как лучше их перенести?

ответ

0

Существует более унифицированный и упрощенный подход:
Предположим, у вас есть начальные части html прямо внутри вашего индекса.PHP:

// index.php content 
... 
<nav> 
    <ul> 
     <li><a href="index.php">Home</a></li> 
     <li><a href="index.php?page=profile">Profile</a></li> 
     <li><a href="index.php?page=settings">Settings</a></li> 
     <li><a href="index.php?page=other">Contact Us</a></li> 
    </ul> 
</nav> 
... 

... 
<div id="main_page"> 
    <div id="dyn_content"> 

    if(isset($_GET['page']) && !empty($_GET['page'])){ 
     switch($_GET['page']){ 
      case "profile": 
       $some_variable = 111; 
       $profile_id = $_SESSION['user_id']; // just for example 
       include ("in_page/profile.php"); 
       break; 
      case "settings": 
       $some_variable = 222; 
       include ("in_page/set.php"); 
       break; 
      default: 
       include ("index.php"); 

     } 
    } 

    </div> 
</div> 

... 

Изнутри любой прилежащей страницы, вы можете получить доступ к глобальным переменной странице «родительской», объявленным перед включением

// profile.php content 
<a href="https://stackoverflow.com/users/<?php echo $profile_id ?>">My link</a></br> 
<img src="https://stackoverflow.com/users/images/<?php echo $profile_id ?>"/> // avatar 
... // approximate content 
+0

Извините, но в начале я сказал, что я пытаюсь отдельный HTML и PHP, в вашем примере вы его объединяете. index.php -do только работа php, никаких тегов html вообще, index.php объединяет и загружает страницу, что нужно пользователю –

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