Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
113 / 100 / 68
Регистрация: 21.04.2014
Сообщений: 1,420

Более грамотная организация приложения

17.11.2015, 11:36. Показов 502. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Пишу приложение, вот небольшой кусочек:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?PHP
session_start();
?>
<html>
<head>
<meta http-equiv="Content-Type"; content="text/html; charset=utf-8">
<script type='text/javascript' src='jquery-2.1.4.js'></script>
</head>
<body>
<div>
 
<div id="MAIN"></div>                          <!--В этот блок будет выводится результат-->      
 
<script type="text/javascript">                <!--Главная форма с двумя ссылками-->
$(function(){
        $.ajax({
          url: "http://site/Start.php",
          success: function(data) {
             $("#MAIN").html(data);
          }
        });
      });
</script>
 
<?PHP
if ($_GET['Button']!="")
{
    $ButtonName=$_GET['Button'];
?>
<script type="text/javascript">                <!--Получаем отделения-->
var B="<?PHP echo $_GET['Button'] ?>";
$(function(){
    $.ajax({
      url: "http://site/ReceptionPlaces.php",  <!--В этом файле создаётся сессия button-->
      type: 'GET',
      data: {'Button':B},
      success: function(data) {
         $("#MAIN").html(data);
      }
    });
  });
 
</script>
<?PHP
}
?>
НУ И ТАК ДАЛЕЕ...
Сначала идёт запрос к файлу Start.php в котором хранятся две ссылки. В зависимости от того на какую из ссылок нажал пользователь выполняется следующая часть и идёт обращение к файлу ReceptionPlaces.php.
Проблема в том, что большая часть таких обращений происходит далеко не моментально и пока они не выполнились перед пользователем оказываются все те же две ссылки. Я попытался это исправить и добавил в файл Start.php проверку на наличием сессии button (это первая сессия, которая создаётся в приложении и если она есть, то отображать первые две ссылки точно не нужно) и если сессия существует, то выводится картинка с изображением загрузки. Код файла Start.php:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?PHP
session_start();
?>
<html>
<head>
<meta http-equiv="Content-Type"; content="text/html; charset=utf-8">
  <title>Терминал. Главная страница.</title> 
</head>
<body>
 
<?PHP
if(isset($_SESSION['button']))
{
    echo "<img src='load.gif'>";
}
else
{
    echo "<a href='?Button=CheckSchedule'>УЗНАТЬ РАСПИСАНИЕ</a><br>";
    echo "<a href='?Button=MakeAnAppointment'>ЗАПИСАТЬСЯ НА ПРИЁМ</a>";
    }
?>
</body>
</html>
Но проблема в том, что сессии у меня разрушаются только когда приложение полностью отработает и в конце пользователь нажмёт нужную кнопку. Если в процессе работы пользователь просто возьмёт и перейдёт на изначальную страницу, то сессии продолжат существовать и картинка с загрузкой повиснет навсегда =/ Как такого избежать? Как более корректно проверить, что отображать ссылки уже не нужно?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.11.2015, 11:36
Ответы с готовыми решениями:

Грамотная организация IT инфраструктуры
Всем привет. 2 года работаю сис. админом. Год в одной конторе, год в другой. Потом долгое время не занимался этим делом, сейчас устроился...

Грамотная организация дуплексных контактов
Добрый день, коллеги, нужна ваша помощь! Я занимаюсь проектированием приложения, с использованием WCF служб. Разбираюсь, как работать с...

TcpClient, DataArrival, GUI thread: грамотная организация потоков
Пишу свой велосипедный TcpClient, чтобы был событийный. Так вот, при обработке события DataArrival ругается на потоки. Как сделать так,...

3
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
17.11.2015, 13:08
Во первых, зачем анимацию загрузки надо подгружать? Изначально
HTML5
1
<div id="MAIN"><img src='load.gif'></div>
Не?
Во вторых если будет задан $_GET['Button'] , то в MAIN запишется контент. Зачем вообще грузить в этом случае линки?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?PHP
session_start();
?>
<html>
<head>
<meta http-equiv="Content-Type"; content="text/html; charset=utf-8">
<script type='text/javascript' src='jquery-2.1.4.js'></script>
</head>
<body>
<div>
 
<div id="MAIN"><img src='load.gif'></div>                          <!--В этот блок будет выводится результат-->      
<? if (empty($_GET['Button'])) : ?>
<script type="text/javascript">                <!--Главная форма с двумя ссылками-->
$(function(){
        $.ajax({
          url: "http://site/Start.php",
          success: function(data) {
             $("#MAIN").html(data);
          }
        });
      });
</script>
 
<?PHP else : ?>
<?    $ButtonName = strval($_GET['Button']); ?>
<script type="text/javascript">                <!--Получаем отделения-->
var B="<?PHP echo $_GET['Button'] ?>";
$(function(){
    $.ajax({
      url: "http://site/ReceptionPlaces.php",  <!--В этом файле создаётся сессия button-->
      type: 'GET',
      data: {'Button':B},
      success: function(data) {
         $("#MAIN").html(data);
      }
    });
  });
 
</script>
<?PHP endif; ?>
1
113 / 100 / 68
Регистрация: 21.04.2014
Сообщений: 1,420
17.11.2015, 14:39  [ТС]
crautcher, так не подходит. В процессе работы приложения параметр Button может благополучно исчезнуть из строки браузера и тогда ничего не работает.
Собственно, поэтому я и хотел использовать сессии.

Не по теме:

За картинку прямо внутри div`а спасибо. Что-то я не подумал...



Добавлено через 23 минуты
Вышел из положения, но возможно не лучшем способом. В самом начале страницы прописал переменную.
PHP
1
$FormMain=true;
Сам вывод ссылок убрал в самый конец файла. После каждого блока с запросом AJAX записываю в переменную False. В конце файла перед выводом ссылок проверяю значение переменной и вывожу их только если переменная true.
0
113 / 100 / 68
Регистрация: 21.04.2014
Сообщений: 1,420
26.11.2015, 17:37  [ТС]
У меня тут снова вопрос по организации всё того же приложения, но уже несколько другого рода.
Есть N файлов PHP, которые должны отрабатывать друг за другом. Раньше я просто отправлял параметры GET и главный файл проверял есть ли тот или иной параметр:
PHP
1
if (($_GET['SpecialityID']!="")&&($_SESSION['ReceptionPlacesID']!=""))
И всё было прекрасно, пока приложение было маленьким, но сейчас оно разрослось, проверять приходится уже целую тучу параметров и что самое плохое - кое где появляются совпадения и отрабатывают сразу несколько файлов, весь порядок идёт к чёрту...

Вот так моё приложение встраивается в сайт, если это важно:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
....
<div id="TICKETS"><img src="load.gif" alt="Пожалуйста, подождите..."></div>
                                                         
                            <script type="text/javascript">
                            $(function(){
                                    $.ajax({
                                      url: "http://site/TicketsModule.php?<?=http_build_query($_GET)?>", <!--Ссылка на главный файл приложения-->
                                      success: function(data) {
                                         $("#TICKETS").html(data);
                                      }
                                    });
                                  });
                            </script>
....
Ну а в самом главном файле уже и проверяются все параметры и начинают работать те или иные файлы:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
....
if (strlen($string_array[1])==0)
    echo file_get_contents('http://site/ReceptionPlaces.php');
//Здесь не захотел работать JS, как мне пояснили это из-за того, что действия уже происходят на сервере
?>
 
</div>                              
 
<?PHP                                                               //А вот почему он внезапно начал работать здесь я без понятия о_о"
if ($_GET['ReceptionPlacesID']!="")
{
    ?>
    <script type="text/javascript">
    var RPID="<?PHP echo $_GET['ReceptionPlacesID'] ?>";
    $(function(){
        $.ajax({
          url: "http://site/SelectSpeciality.php",
          type: 'GET',
          data: {'ReceptionPlacesID':RPID},
          success: function(data) {
             $("#MAIN").html(data);
          }
        });
      });
 
    </script>
    <?PHP
} 
?>
....
Подскажите как правильно организовать приложение, чтобы был последовательный вызов файла одного за другим. Т.е. Сначала открылся файл ReceptionPlaces.php, пользователь там что-то выбрал, это сохранилось в сессию, затем открылся файл SelectSpeciality.php и т.д.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.11.2015, 17:37
Помогаю со студенческими работами здесь

Грамотная реализация клиент-серверного приложения
Возник вопрос как грамотно реализовать клиент-серверное приложение под Linux'ом. Пока имеется стандартная реализация через потоковые...

Организация приложения
Приложение должно использовать базу данных для хранения промежуточных данных. Одна из методов долго их записывает в базу. Как просигналить...

Организация защиты приложения
пытаюсь организовать защиту приложения .. секции в web.config имеют вид: &lt;authentication mode='Forms'&gt; &lt;forms name='AppAuth'...

Организация архитектуры приложения
Здравствуйте. Подскажие, пожалуйста, как лучше сделать архитектуру приложения. Пишу веб-приложение, которое будет добавлять в базу и...

Организация оплаты внутри приложения
У меня есть приложение, я хочу чтобы оплата приложения происходила после регистрации пользователя. Пользователь вводит количество функций,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru