Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.70/30: Рейтинг темы: голосов - 30, средняя оценка - 4.70
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232

Как сделать обновление страницы сайта после нажатия кнопки submit в формах

30.05.2024, 15:27. Показов 9513. Ответов 111

Студворк — интернет-сервис помощи студентам
У меня на странице сайта, который я пишу для себя, 3 формы. Я хочу, чтобы после нажатия в форме кнопки submit происходило обновление страницы и на странице выводился введённый в форму контент.
Я нашла в интернете образец и по аналогии сделала код, но он не работает. Может быть, кто-то знает, почему?
Теорию ajax в jquery я просмотрела, но не всё поняла, видимо, поэтому и сделала где-то ошибки.
Мой код в файле vopros.php частично для одной из форм:
Code
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
48
49
50
51
52
53
54
55
56
57
58
59
...
 
<head>
<title>Вопрос</title>
<script type="text/javascript" 
  src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js">
  </script>
</head>
 
...
 
$id_vopr = intval($_GET['v']);
 
...
 
//Если это эксперт или админ
if($status_id==3||$status_id==2){       
//Форма для ввода ответа на вопрос
?> 
<p  style="color:#E095B2;font-size: 18px "><b>Добавить ответ<b></p>
<form method='POST' action=''>
Наберите здесь текст ответа:<br>
<textarea name='contentO' cols='100' rows='10'></textarea><br>
 <button type="submit" class="lii" name="s" 
data-v="<?=$value->$id_vopr;?>">Опубликовать ответ</button>
</form><br><br>
 
<script> 
$('.lii').on('click',function(){
        $.ajax({
           url:'/vopros.php',
           data:{v:$(this).data('$id_vopr')},
           success:function(){
              location.reload();
           }
        });
    });
  </script>
<?php
 
}
 
//Обрабатываю форму для ответа
if (isset($_POST['s'])) {
    //Если форма заполнена
if(isset($_POST["contentO"])){
//Сохраняю данные в БД
 $contentO = $_POST['contentO'];
 
//Вставляю дату
// получение текущей даты
$odate = date('Y-m-d  H:i');
 
//Вставляю значение + дату в таблицу otvets в БД
$query7 = "INSERT INTO otvets(id,contentO,dateo,experto)
VALUES('$id_vopr','$contentO','$odate','$uzer_c')";
$res7=mysqli_query($link, $query7);
}
}
Адрес моей виртуальной страницы:
http://host2.localhost/vv2/vopros.php?v=28
где 28 - это $id_vopr

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

Или, может быть, есть какой-то другой способ для обновления страницы после нажатия кнопки submit?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.05.2024, 15:27
Ответы с готовыми решениями:

Как получить текст страницы сайта которая открывается после нажатия кнопки
Как получить текст страницы сайта которая открывается после нажатия кнопки from selenium import webdriver from...

Как сделать, чтобы php работал после нажатия на submit
&lt;form method=&quot;post&quot; action=&quot;#&quot;&gt; &lt;p&gt;Имя: &lt;input type=&quot;text&quot; name=&quot;name&quot;&gt; &lt;p&gt;Фамилия: &lt;input type=&quot;text&quot;...

PHP БД отправка данных в phpmyadmin после нажатия кнопки ajax submit
Как отправить данные в БД (из input) после нажатия кнопки submit ajax? (Данные отправляемые в БД $user = R::dispense('users'); ...

111
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
11.06.2024, 16:17  [ТС]
Студворк — интернет-сервис помощи студентам
ft4l, спасибо, попробую завтра или послезавтра.
Пока я всё ещё играюсь со стилями в аккаунте.
У меня аккаунты юзера и эксперта выглядят немного по-разному, а файл один. В нём три больших блока один под другим. И если я стили настраиваю для аккаунта эксперта, то в аккаунте юзера все блоки сползаются вверх друг на друга и внутри них блоки тоже сбиваются. Пытаюсь изобрести костыли. Но, может, проще сделать отдельные файлы для юзеров и для экспертов и не убивать зря время?

Аякс я не использую.
А статус у меня проверяется в файле vopros.php раньше, и если это юзер, а не эксперт, он даже формы для ввода ответов не увидит. А если это не автор вопроса, то и форму для ввода комментариев тоже не увидит.
Потому что только эксперт может отвечать на вопросы, а комментарии может писать или эксперт, или автор вопроса. Просто юзер может только читать чужие вопросы или задавать и комментировать свои.

Про хранение логина в сессии я подумаю. Я ведь могу этот запрос оставить в основном файле, записать результат в сессию и взять из сессии в этом файле... Я попробую.
0
 Аватар для sad67man
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
11.06.2024, 16:26
Цитата Сообщение от Sollita Посмотреть сообщение
А статус у меня проверяется в файле vopros.php раньше, и если это юзер, а не эксперт, он даже формы для ввода ответов не увидит. А если это не автор вопроса, то и форму для ввода комментариев тоже не увидит.
Может быть рассинхрон. У пользователя висит открытая вкладка, а сессия закончилась. Он отправит форму, будучи разлогиненым.
Либо вы можете залогиниться, во второй вкладке выйти и залогиниться под другим пользователем. Затем вернуться на первую вкладку и отправить форму.
Все проверки прав доступа обязаны проверяться на стороне сервера.
0
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
11.06.2024, 18:25  [ТС]
sad67man, я пробовала во второй вкладке войти как другой пользователь, и у меня обе вкладки превратились в аккаунт последнего вошедшего пользователя. Так что отправить форму от имени другого пользователя не получится.

А если сессия закончится при открытой вкладке, то юзер форму отправить, скорее всего, не сможет. Я же писала, что если я долго не захожу на сайт при открытой вкладке, мне пишут, что нужно снова ввести данные и приходится снова проходить аутентификацию.
0
 Аватар для sad67man
2605 / 1509 / 689
Регистрация: 23.08.2015
Сообщений: 3,841
11.06.2024, 19:01
Цитата Сообщение от Sollita Посмотреть сообщение
и у меня обе вкладки превратились в аккаунт последнего вошедшего пользователя
Я про то и говорю, только вы же не обновляйте вкладки, чтоб форма для старого пользователя осталась, а куки с идентификатором сессии будут от нового пользователя и форму можно будет отправить.
Цитата Сообщение от Sollita Посмотреть сообщение
что нужно снова ввести данные и приходится снова проходить аутентификацию
Тут не совсем понял. Браузер может попросить подтвердить отправку формы при обновлении страницы, если последний запрос был методом POST.
Бывает браузер принудительно обновляет вкладку, если вы на нее давно не заходили, наверное при потери сессии на стороне браузера (у него своя сессия).. Но это 2 разных механизма.
И это лишь частные случаи я еще могу придумать кучу способов, в конце концов могу отправить запрос и не через браузер.

Вы серьезно считаете, что не обязательно проверять права доступа на стороне сервера? Или вы просто не хотите - это другое дело.. кто ж вам запретит)
0
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
11.06.2024, 19:35  [ТС]
sad67man, я и не обновляла вкладки. Я просто открыла новую вкладку от имени другого пользователя, потому что наивно думала, что так мне будет проще контролировать изменения в аккаунтах эксперта и юзера при изменении стилей в этом файле. Потом открыла первую вкладку, а она тоже открылась от имени второго пользователя. Т.е. номер не удался.

Я ничего не считаю, потому что не разбираюсь в вопросе. Но я ничего не делаю, пока не пойму, для чего мне это нужно и как оно работает. И когда Вы пишете "проверять права доступа на стороне сервера", я не понимаю, что именно Вы имеете в виду, и, тем более, не знаю, нужно ли мне это делать на своём сайте.

А как можно отправить запрос не через браузер, не подскажете?
0
Эксперт PHP
 Аватар для liris
5512 / 1195 / 164
Регистрация: 16.01.2023
Сообщений: 2,843
11.06.2024, 19:51
Цитата Сообщение от Sollita Посмотреть сообщение
А как можно отправить запрос не через браузер, не подскажете?
Postman
0
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
11.06.2024, 20:20  [ТС]
liris, ?
0
Эксперт PHP
 Аватар для liris
5512 / 1195 / 164
Регистрация: 16.01.2023
Сообщений: 2,843
12.06.2024, 09:16
Цитата Сообщение от Sollita Посмотреть сообщение
liris, ?
Postman - программа для отправки HTTP-запросов без браузера. Можно отправлять GET и POST запросы, добавлять к ним произвольные параметры, использовать куки, изменять заголовки и т.д.

Программа платная, но есть бесплатная версия (функционала которой обычно более чем достаточно). Инструкцию по использованию можно посмотреть в интернете.
0
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
12.06.2024, 09:57  [ТС]
liris, спасибо за объяснение. Но, насколько я поняла, обычный юзер этой программой пользоваться не будет. А программисту делать запросы в чужой сайт, который не имеет смысла взламывать, незачем.
Поэтому возникает 2 вопроса:
1. Насколько велика вероятность таких запросов в реальности, а не в теории?
2. И как можно предотвратить подобное поведение?
0
Невнимательный
 Аватар для ft4l
3139 / 1337 / 362
Регистрация: 08.02.2013
Сообщений: 7,841
Записей в блоге: 2
12.06.2024, 10:39
Цитата Сообщение от Sollita Посмотреть сообщение
не имеет смысла взламывать
Были-бы возможности... а желающих находится.))
Например в возможности sql-инъекций если у Вас оставить всё как есть
У меня например так получается.... самое безобидное )
есть таблица
mysql> select * from cat;
+-------+-----------+
| idcat | namecat |
+-------+-----------+
| 1 | FIRSTCAT |
| 2 | SECONDCAT |
| 3 | THIRDCAT |
+-------+-----------+
3 rows in set (0.00 sec)

и после специального соделжимого переменной извне запрос INSERT INTO cat(idcat,namecat) VALUES(NULL,'$var');
может получиться таким
mysql> INSERT INTO cat(idcat,namecat) VALUES(NULL,'переменнаая в которой символы '),(1, ''
) ON DUPLICATE KEY UPDATE namecat=('fake news');

Если не вставить больше ,) то в таблице получится
Code
1
2
3
4
5
6
7
8
mysql> select * from cat;
+-------+--------------------------------+
| idcat | namecat                        |
+-------+--------------------------------+
|     1 | fake news                      |
|     2 | SECONDCAT                      |
|     3 | THIRDCAT                       |
|     4 | переменнаая в которой символы  |
Добавлено через 5 минут
... вывод всем текста ошибок кстати тоже способствует нахождению таких мест...
но доработкам-разработкам настолько-же способствует )
0
Эксперт PHP
 Аватар для liris
5512 / 1195 / 164
Регистрация: 16.01.2023
Сообщений: 2,843
12.06.2024, 18:33
Цитата Сообщение от Sollita Посмотреть сообщение
насколько я поняла, обычный юзер этой программой пользоваться не будет
Это программа для вас, чтобы вы могли тестировать свои формы.

Цитата Сообщение от Sollita Посмотреть сообщение
программисту делать запросы в чужой сайт, который не имеет смысла взламывать
На практике, если в сайте есть уязвимость и на нем есть хоть какая-то посещаемость - его могут взломать и скорее всего это сделают. Как минимум для дальнейшего распространения вирусов, размещения своих вредоносных ссылок, слива трафика и т.д. Если вы считаете, что ваш сайт никому не нужен - это лишь ваше мнение. Возможно кому-то он будет нужен.
0
7 / 17 / 0
Регистрация: 30.09.2021
Сообщений: 232
12.06.2024, 19:42  [ТС]
liris, мне осталось дописать штук пять файлов и я думаю, что обойдусь без этой программы, если до сих пор обходилась Тем более, что я подозреваю, что на windows xp 32 бит она просто не будет работать

Про распространение вирусов и sql- инъекции я обязательно почитаю, когда займусь безопасностью.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.06.2024, 19:42

Как сделать перезагрузку страницы после нажатия
Всем привет. Столкнулся с такой проблемой: Установил на wordpress плагин &quot;Button visually impaired&quot; (Плагин для слабовибящих,...

Отлов нажатия кнопки submit и блокировка последующего нажатия
Привет всем! Нужен код, который способствует блокировке нажатия кнопки после одного нажатия на нее. Спасибо. Добавлено через 54...

как после нажатия кнопки Отправит сделать прелоадер и
нажимаю ссылку, появляется модальное окно. надо чтоб после нажатия кнопки отправить появлялся прелоадер(типа отравляется), а когда...

Как сделать, чтобы после нажатия кнопки к курсору цеплялся квадратик?
Вобщем мне нужно что бы на сцену можно было ставить квадраты. Для этого создал кнопку, а вот как зделать бы после клика к курсору цеплялся...

Как сделать, чтобы цикл продолжался только после нажатия кнопки?
for (int i=0; i&lt;n;i++) pl=dieroll (); нужно чтобы пользователь перед каждой иттерацией жал любую (можно заданную, можно нет)...


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

Или воспользуйтесь поиском по форуму:
112
Ответ Создать тему
Новые блоги и статьи
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru