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

Как после загрузки формы не загружать последующий контент

20.07.2025, 19:54. Показов 2019. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть динамически формируемая веб-страница index.php
Её структура:
1. Запуск сессии
2. Объявление сессионных переменных
3. Заполнение сессионных переменных (если есть чем)
4. Форма для вытягивания габаритов монитора пользователя (отправляется автоматически, если сессионные переменные пустые)
5. Контент (css,html,js)
Как сделать, что бы после отправки формы (п.4) контент не загружался (п.5), но если форма не отправляется, то контент загружается.

Сама форма:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
if($_SESSION['screenWidth']=="" || $_SESSION['screenHeight']=="")
{ echo "<!DOCTYPE html><html><head></head><body>";
  echo "<form method='post' action='index.php' style='opacity:0;'>";
  echo "<input type='text' name='myVar10' id='myVar1'>";
  echo "<input type='text' name='myVar20' id='myVar2'>";
  echo "<input type='submit' name='sub30' value='Отправить'>";
  echo "</form><script>";
  echo "var myVarInput1 = document.getElementById('myVar1');";
  echo "var myVarInput2 = document.getElementById('myVar2');";
  echo "myVarInput1.value = window.screen.width;";
  echo "myVarInput2.value = window.screen.height;";
  echo "document.querySelector('form').submit();";
  echo "</script></body></html>";
}
?>
Вот временная информация по загрузке:
000_1753015570.0086 начало страницы
111_1753015570.0133 перед формой +0,0727
222_1753015570.0135 после формы +0,0002
333_1753015570.0137 после расчёта масштаба +0,0002
444_1753015570.0138 перед загрузкой контента +0,0001
555_1753015570.0544 конец страницы +0,0406
000_1753015571.0126 начало страницы +0,9582 - здесь, видимо, обработка формы
111_1753015571.0134 перед формой +0,0008
222_1753015571.0136 после формы +0,0002
333_1753015571.0137 после расчёта масштаба +0,0001
444_1753015571.0141 перед загрузкой контента +0,0004
555_1753015571.0552 конец страницы +0,0411

Добавлено через 3 часа 32 минуты
Проблема решена. Тему можно закрывать.
Сделал:
1. Изменил код в index.php
PHP
1
2
3
4
5
6
<?php
if($_SESSION['screenWidth']=="" || $_SESSION['screenHeight']=="")
{ include "index2.php";
  goto a1;
}
?>
2. Форму определил в файл index2.php
3. В конце index.php добавил
PHP
1
2
3
<?php
a1:
?>
Даже выйгрыш загрузки по времени:
Было 1,0466 сек
Стало 0,6140 сек
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.07.2025, 19:54
Ответы с готовыми решениями:

как загружать контент при нажатии на мену
Привет. У меня вот такая простенькая задачка, которую я не могу решить, ибо еще не бум-бум в PHP....

Как лучше загружать контент через AJAX
Добрый день. Такой вопрос.. как лучше загружать контент. Имеется на странице header, левое...

Загрузка больших медиа файлов на сервер, с последующим воспроизведением
Добрый день, Форумчане Решил поднять сайт просмотра фильмов, с хостинг сервисом вроде бы...

24
Заблокирован
20.07.2025, 20:03
Цитата Сообщение от Инженер_3 Посмотреть сообщение
goto a1;
Молодец. Костыль сделал
Отправку формы можно легко проверить с помощью isset
PHP
1
2
3
4
5
6
7
if(isset($_POST['sub30']))
{
    // обрабатываем данные формы
}
else{
    //выводим форму и всё, что тебе надо
}
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
20.07.2025, 20:46
Цитата Сообщение от black1385 Посмотреть сообщение
Отправку формы можно легко проверить с помощью isset
Лучше использовать $_SERVER['REQUEST_METHOD'], сравнивая с 'POST', а потом уже делать валидацию всех обязательных полей.

Добавлено через 3 минуты
Инженер_3, куча echo - это жесть. Учитесь разделять код, шаблоны и т.п.
0
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 420
21.07.2025, 13:05  [ТС]
Цитата Сообщение от black1385 Посмотреть сообщение
Отправку формы можно легко проверить с помощью isset
А меня не отправка формы интересует.
Мне нужно, что бы после отправки формы не продолжала загружаться страница.
Твой код:
if(isset($_POST['sub30']))
{
// обрабатываем данные формы
// при первичной загрузке страницы - проскакивает мимо
// при вторичной загрузке страницы - обрабатывает данные
}
else
{
//выводим форму и всё, что тебе надо
// при первичной загрузке страницы формируется и отправляется форма
// при первичной загрузке страницы страница продолжает загружаться
}

Добавлено через 4 минуты
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Инженер_3, куча echo - это жесть
Потом будет одно echo - всё в одну строку.
А в чём "жесть"? Время загрузки сильно увеличивается или глаза разбегаются? В чём?
0
Заблокирован
21.07.2025, 13:18
Цитата Сообщение от Инженер_3 Посмотреть сообщение
А в чём "жесть"? Время загрузки сильно увеличивается или глаза разбегаются? В чём?
Нормально. Делай, как считаешь нужным и не парься
С goto ты тоже круто придумал. Продолжай в том же духе, если не хочешь слушать более опытных товарищей

Добавлено через 1 минуту
Цитата Сообщение от Инженер_3 Посмотреть сообщение
Мне нужно, что бы после отправки формы не продолжала загружаться страница.
Я тебе показал пример. Но можешь тоже не обращать внимание)
0
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 420
21.07.2025, 13:49  [ТС]
Цитата Сообщение от black1385 Посмотреть сообщение
С goto ты тоже круто придумал. Продолжай в том же духе, если не хочешь слушать более опытных товарищей
От опытных товарищей только слышишь дежурные фразы и никаких пояснений и конкретики.
0
Эксперт .NET
 Аватар для Usaga
14129 / 9349 / 1350
Регистрация: 21.01.2016
Сообщений: 35,147
21.07.2025, 13:52
Инженер_3, это потому, что эти товарищи не учителя. Каждый раз портянки разъяснительного текста писать утомительно.
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
21.07.2025, 14:22
PHP
1
2
3
4
5
<?php
if (empty($_SESSION['screenWidth']) || empty($_SESSION['screenHeight'])) {
    include "index2.php";
    die();
}
Добавлено через 24 минуты

Не по теме:

Цитата Сообщение от Usaga Посмотреть сообщение
Инженер_3, это потому, что эти товарищи не учителя. Каждый раз портянки разъяснительного текста писать утомительно.
Все джуны выбешивают. Но настоящий признак профессионализма - это позитивный настрой. Если кому-то утомительно разъяснять - что они делают на этом форуме? Ну утомительно - не пиши, в чем проблема? Зачем эта вся токсичность?

0
21.07.2025, 14:37

Не по теме:

sad67man, да не закладывал я токсичность в свои слова. Человек недоволен отсутствием конкретики. Я обозначил одну из причин.

0
Заблокирован
21.07.2025, 15:34
Цитата Сообщение от sad67man Посмотреть сообщение
Все джуны выбешивают.
А где джун? ТС не джун, потому что он не программист.
Цитата Сообщение от sad67man Посмотреть сообщение
Если кому-то утомительно разъяснять
Разъяснять не утомительно. Утомительно смотреть, как забивают болт на твои разъяснения и начинают их оспаривать. Я уверен, что он даже не опробовал мой вариант, не прислушался к советам sad67man, а начал сразу спорить. Посмотри на его код в первом посту. Нет никакой причины выводить это через echo и тем более каждую строку отдельно. Там же обычный html и JS без каких либо динамический переменных с пыха. Попробуй ему объяснить, что так делать не стоит. Вот что он тебе ответит:
Цитата Сообщение от Инженер_3 Посмотреть сообщение
А в чём "жесть"? Время загрузки сильно увеличивается или глаза разбегаются? В чём?
Поэтому и объяснять не хочется тому, кто не собирается тебя слушать.
Да и вообще, это логически неверно, создавать форму и автоматически её отправлять с перезагрузкой страницы, что бы сохранить в сессии размеры экрана девайса юзера. Хотелось бы посмотреть, как ты ему это объяснишь

Добавлено через 10 минут
Вот еще. Если бот гугла или яндекса зайдет на такую страницу, то страница для бота будет постоянно перезагружаться. Боту нельзя установить сессионную куку и поэтому сессия читаться не будет после перезагрузки страницы... как это походу предполагается.
0
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 420
22.07.2025, 10:06  [ТС]
Цитата Сообщение от black1385 Посмотреть сообщение
Я уверен, что он даже не опробовал мой вариант
Вариант ОШИБОЧНЫЙ !!!
PHP
1
2
3
4
5
6
7
if(isset($_POST['sub30']))
{
    // обрабатываем данные формы
}
else{
    //выводим форму и всё, что тебе надо
}
Потому что при программной отправке формы $_POST['sub30']=false

Но я сделал по другому:
PHP
1
2
3
4
5
6
7
8
9
10
if($_SESSION['screenWidth'] || $_SESSION['n_enter']>1) //где $_SESSION['n_enter']>1 для ботов (ботам дизайн не нужен)
{ if($_SESSION['screenWidth'])
   { // заполнение сессионных переменных
 
     // загрузка страницы
   }
}
else
{  // загрузка и отправка формы
}
И всё работает.

Добавлено через 5 минут
Цитата Сообщение от black1385 Посмотреть сообщение
Да и вообще, это логически неверно, создавать форму и автоматически её отправлять с перезагрузкой страницы, что бы сохранить в сессии размеры экрана девайса юзера.
Страница не перезагружается, а загружается для обработки формы.
При первичной "загрузке" только сессионные переменные создаются, отправка формы и больше НИЧЕГО.
0
Супер-модератор
Эксперт JSЭксперт HTML/CSSЭксперт PHP
 Аватар для gogolik
3952 / 2061 / 829
Регистрация: 13.03.2010
Сообщений: 6,781
22.07.2025, 10:49
Инженер_3, а у вас sub30 отправляется с формой? Если нет, то чего удивляться, что не работает? Вы хоть чуточку попытайтесь разобраться как оно вообще всё работает, а не бездумно копируйте чужой код.
0
Заблокирован
22.07.2025, 11:42
Цитата Сообщение от Инженер_3 Посмотреть сообщение
И всё работает.
Сайт покажешь? Хотелось бы посмотреть на это чудо
Что-то мне подсказывает, что не дождусь.
Цитата Сообщение от Инженер_3 Посмотреть сообщение
Страница не перезагружается, а загружается для обработки формы.
А какая разница? Еще раз повторю, это подход неправильный. Тем более, если ты решил делать это на сессиях, а не на куках. Сессию можно установить и тут же прочитать. Вот пример:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);
 
if(!isset($_SESSION)){
    session_start();
}
 
if (empty($_SESSION['screenWidth']) || empty($_SESSION['screenHeight'])) {
    $_SESSION['screenWidth']=800;
    $_SESSION['screenHeight']=600;
    echo $_SESSION['screenWidth'].' / '.$_SESSION['screenHeight'];
}
else{
    echo 'сессии screenWidth и screenHeight были установлены ранее и имеют значения => '.$_SESSION['screenWidth'].' / '.$_SESSION['screenHeight'];
}
0
3 / 3 / 0
Регистрация: 10.06.2016
Сообщений: 420
22.07.2025, 11:48  [ТС]
Цитата Сообщение от gogolik Посмотреть сообщение
Инженер_3, а у вас sub30 отправляется с формой? Если нет, то чего удивляться, что не работает? Вы хоть чуточку попытайтесь разобраться как оно вообще всё работает, а не бездумно копируйте чужой код.
У меня всё работает.
Кто копирует чужой код? У меня свой код.
sub30 и myVar10 отправляются в формой
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
22.07.2025, 14:44
Цитата Сообщение от black1385 Посмотреть сообщение
Сессию можно установить и тут же прочитать. Вот пример:
Ширину экрана можно получить только через javascript.. если пользователь заходит первый раз, то не важно где вы будете хранить - без перезагрузки страницы никак не получится это сделать.

Тут проще отказаться от этой идеи в целом, на стороне сервера размеры экрана неизвестны.

Но каждое устройство посылает заголовок user-agent.. и есть библиотеки, которые помогают определить тип устройства - мобильное, планшет, десктоп или робот.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3825 / 1662 / 429
Регистрация: 14.03.2022
Сообщений: 4,170
22.07.2025, 14:54
Цитата Сообщение от sad67man Посмотреть сообщение
Ширину экрана можно получить только через javascript.. если пользователь заходит первый раз, то не важно где вы будете хранить - без перезагрузки страницы никак не получится это сделать.
Х/з конечно что там задумал ТС...
Но ведь данные о размерах экрана можно отправить не формой, а запросом, тем же fetch()...
Другое дело, что делать потом на той странице?

Инженер_3, ты какую вообще цель преследуешь со знанием размеров экрана?
0
Заблокирован
22.07.2025, 15:45
Цитата Сообщение от sad67man Посмотреть сообщение
Ширину экрана можно получить только через javascript.. если пользователь заходит первый раз, то не важно где вы будете хранить - без перезагрузки страницы никак не получится это сделать.
Уверен?
Это файл index.php
PHP/HTML
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
if (!isset($_SESSION)) {
    session_start();
}
 
if (empty($_SESSION['screenWidth']) || empty($_SESSION['screenHeight'])) {
    ?>
    <script>
        async function sendScreenData() {
            const screenData = {
                width: window.screen.width,
                height: window.screen.height
            };
            const response = await fetch('screen.php', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                },
                body: JSON.stringify(screenData)
            });
            const data = await response.json();
            document.querySelector('#screenInfo').innerHTML = `
                <p>Ширина: ${data.sessionData.screenWidth}px</p>
                <p>Высота: ${data.sessionData.screenHeight}px</p>`;
        }
        window.addEventListener('load', sendScreenData);
    </script>
    <div id="screenInfo">Получение данных о размерах экрана...</div>
    <?php
} else {
    echo 'сессии screenWidth и screenHeight были установлены ранее и имеют значения => ' . $_SESSION['screenWidth'] . ' / ' . $_SESSION['screenHeight'];
}
А это файл для установки сессии размеров экрана screen.php
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
if(!isset($_SESSION)) {
    session_start();
}
$json = file_get_contents('php://input');
$data = json_decode($json, true);
 
$_SESSION['screenWidth'] = $data['width'];
$_SESSION['screenHeight'] = $data['height'];
 
$response = [
    'sessionData' => [
        'screenWidth' => $_SESSION['screenWidth'],
        'screenHeight' => $_SESSION['screenHeight']
    ]
];
header('Content-Type: application/json');
echo json_encode($response);
?>
Цитата Сообщение от sad67man Посмотреть сообщение
Тут проще отказаться от этой идеи в целом
С этим я соглашусь. Изначально глупая идея. Проще сделать адаптивный дизайн под все размеры экранов.
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
22.07.2025, 15:53
Цитата Сообщение от black1385 Посмотреть сообщение
Уверен?
Это файл index.php
Ну если вы делаете запрос через ajax, то без перезагрузки страницы - эти данные будут доступны только в js, что не имеет смысла, так как через js вам и так известна ширина экрана. Теряется вся задумка автора.. Как выше и написали - вы можете отправить аякс запросс, но что потом?
0
Заблокирован
22.07.2025, 16:05
Цитата Сообщение от sad67man Посмотреть сообщение
Теряется вся задумка автора.
А какая у него задумка? Я до сих пор не знаю
Цитата Сообщение от sad67man Посмотреть сообщение
Как выше и написали - вы можете отправить аякс запросс, но что потом?
Потом в сессии устанавливаются размеры экрана. Как и было задумано автором. По крайней мере это лучше, чем форму автоматически отправлять. Кликать по кнопке из js это самое глупое, что можно было бы представить
0
 Аватар для sad67man
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
22.07.2025, 16:17
Цитата Сообщение от black1385 Посмотреть сообщение
А какая у него задумка? Я до сих пор не знаю
Чтоб сервер знал ширину экрана. Проблема заключается в том, что ее невозможно узнать при первом заходе на сайт.
Цитата Сообщение от black1385 Посмотреть сообщение
Потом в сессии устанавливаются размеры экрана. Как и было задумано автором. По крайней мере это лучше, чем форму автоматически отправлять. Кликать по кнопке из js это самое глупое, что можно было бы представить
"Что потом?" Это такой риторический вопрос. имеется в виду - что вам придется перезагрузить страницу.. да она сохранилась в сессии, что будет полезно для следующих запросов к серверу..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.07.2025, 16:17
Помогаю со студенческими работами здесь

Загрузка фото с последующей обработкой на сервер средствами php
Доброго времени суток, уважаемые форумчане! Сразу скажу, что далек от программирования, но, в связи...

загружаю 9 фотографий нормально отображаются, загружаю остальные - они все одинаковый и заменяются последней загруженной фоткой
проблема такая если загружаю 9 фотографий нормально отображаются, загружаю остальные они все...

Форма для корректировки скрипта, с последующим его выполнением
Есть некий лабиринт. Форма служит для задания координат. После заполнения формы, должна изменится...

Сделать из формы подобие блокнота для записей с последующим сохранением
Ура. Нашёл нужную тему https://www.cyberforum.ru/php-beginners/thread686952.html Но, у меня...

Форма с возможностью выбора последующих действий
Всем доброй ночи (по моему времени :) ) Суть вопроса вот в чём... предположим мы имеем форму поля...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru