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

При переходе на новую страницу при нажатии на F5 требует повторной отправки данных

12.05.2020, 21:17. Показов 6384. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Допустим, есть самая простая форма:

HTML5
1
2
3
4
<form action="mail.php" method="post">
  <input type="text" placeholder="Текст">
  <input type="submit" value="Кнопка">
</form>
и вот я перехожу, обновляю страницу (нажимаю F5) и каждый раз выходит такая табличка: "На странице, которую вы ищете, использовалась введенная вами информация. При возврате на эту страницу может потребоваться повторить выполненные ранее действия. Продолжить?" Как можно предотвратить ее появление? Знаю, что это делается как-то на PHP. Вроде, где-то надо прописать редирект header('location: '.$_SERVER['HTTP_REFERER']); exit; Но как и где?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.05.2020, 21:17
Ответы с готовыми решениями:

POST переменные при нажатии на ссылку и при переходе на другую страницу
Как сделать так, чтобы при нажатии на ссылку и при переходе на другую страницу были доступны $_POST переменные (например listbox)?

При переходе на новую страницу запустить скрипт
html. на странице расположена кнопка. при нажатии на нее перейти по ссылке на другую страницу и при открытии другой страницы запустить...

Выполнение сценария при переходе на новую страницу
В общем имеется скрипт (silent.js) который скрывает div. Как сделать так чтобы при переходе по ссылке выполнялся мой скрипт на новой...

19
Заблокирован
12.05.2020, 21:37
файл с формой, например, index.php
PHP
1
2
3
4
5
6
7
8
9
session_start();
if (isset($_SESSION['send'])) {
    echo $_SESSION['send'];
    unset($_SESSION['send']);
}
<form action="mail.php" method="post" autocomplete="off">
  <input name="text" placeholder="Текст">
  <button name="send">Отправить</button>
</form>
обработчик - mail.php
PHP
1
2
3
4
5
6
7
8
9
if (filter_has_var(0, 'send')) {
 
    // ... тут какие-то проверки, например, введено ли сообщение вообще ...
    
    mail('тут_email_куда_отправляем', 'Письмо', filter_input(0, 'text'), 'Content-type: text/plain; charset=utf-8');
    $_SESSION['send'] = 'Сообщение отправлено';
    header('location: ' . $_SERVER['HTTP_REFERER']);
    exit();
}
0
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 137
12.05.2020, 21:51  [ТС]
Цитата Сообщение от Verolomstvo Посмотреть сообщение
тут какие-то проверки, например, введено ли сообщение вообще ...
А если не требуется вообще ничего проверять? Просто перешел и перешел. Там просто одна строчка, например, с моим контактным номером. Посмотрел и ушел обратно.
0
Заблокирован
12.05.2020, 21:53
markiz462,
тут тоже сессию стартануть
PHP
1
2
3
4
5
6
7
8
9
10
session_start();
if (filter_has_var(0, 'send')) {
 
    // ... тут какие-то проверки, например, введено ли сообщение вообще ...
    
    mail('тут_email_куда_отправляем', 'Письмо', filter_input(0, 'text'), 'Content-type: text/plain; charset=utf-8');
    $_SESSION['send'] = 'Сообщение отправлено';
    header('location: ' . $_SERVER['HTTP_REFERER']);
    exit();
}
Добавлено через 1 минуту
Цитата Сообщение от markiz462 Посмотреть сообщение
А если не требуется вообще ничего проверять? Просто перешел и перешел. Там просто одна строчка, например, с моим контактным номером. Посмотрел и ушел обратно.
Вы POST формой кнопки делаете для перехода по страницам?
0
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 137
12.05.2020, 21:57  [ТС]
Я вот так записал в новом файле:

PHP
1
2
3
4
5
if (isset($_POST["enter"])) {
 
        header('location: edit.php'.$_SERVER['HTTP_REFERER']);
        exit();
}
Теперь вообще на нее не переходит.

Добавлено через 3 минуты
Цитата Сообщение от Verolomstvo Посмотреть сообщение
Вы POST формой кнопки делаете для перехода по страницам?
Да, а что не так? Я делаю все, что придет на ум, чтобы понять, как оно работает.

Вот так записал, все равно выходит табличка:
PHP
1
2
3
4
5
6
session_start();
    if (filter_has_var(0, 'send')) {
 
        header('location: '.$_SERVER['HTTP_REFERER']);
        exit();
}
0
Заблокирован
12.05.2020, 22:01
markiz462, что сделать надо? в
Цитата Сообщение от markiz462 Посмотреть сообщение
header('location: edit.php'.$_SERVER['HTTP_REFERER']);
что это за дичь?
Цитата Сообщение от markiz462 Посмотреть сообщение
Вот так записал, все равно выходит табличка:
какая табличка, что не так? отправили формой сообщение, получили сообщение об отправке - ВСЁ

нажми F5, сообщение о повторной отправке есть?
0
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 137
12.05.2020, 22:05  [ТС]
Цитата Сообщение от Verolomstvo Посмотреть сообщение
что это за дичь?
edit.php? Это моя страница, куда я перехожу. Я уже убрал ее из кода.

Цитата Сообщение от Verolomstvo Посмотреть сообщение
какая табличка, что не так?
Табличка, выскакивающая на новой страничке при нажатии F5.
Миниатюры
При переходе на новую страницу при нажатии на F5 требует повторной отправки данных  
0
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 137
12.05.2020, 22:09  [ТС]
Цитата Сообщение от Verolomstvo Посмотреть сообщение
Вы POST формой кнопки делаете для перехода по страницам?
Я же пароль ввожу, чтобы перейти на новую страницу.

Добавлено через 3 минуты
Цитата Сообщение от Verolomstvo Посмотреть сообщение
нажми F5, сообщение о повторной отправке есть?
Да, нажимаю 10 раз, 10 раз эта проклятая табличка выходит.
0
Заблокирован
12.05.2020, 22:12
Цитата Сообщение от markiz462 Посмотреть сообщение
Табличка, выскакивающая на новой страничке при нажатии F5.
на какой новой странице???

файл index.php
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
session_start();
if (isset($_SESSION['send'])) {
    echo $_SESSION['send'];
    unset($_SESSION['send']);
}
?>
<form action="mail.php" method="post" autocomplete="off">
  <input name="text" placeholder="Текст">
  <button name="send">Отправить</button>
</form>
файл mail.php
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
session_start();
if (filter_has_var(0, 'send')) {
 
    // ... тут какие-то проверки, например, введено ли сообщение вообще ...
 
    mail('тут_email_куда_отправляем', 'Письмо', filter_input(0, 'text'), 'Content-type: text/plain; charset=utf-8');
    $_SESSION['send'] = 'Сообщение отправлено';
    header('location: ' . $_SERVER['HTTP_REFERER']);
    exit();
}
Нажми кнопку Отправить и потом нажми F5
0
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 137
12.05.2020, 22:13  [ТС]
Выложу весь код.

Вот первая страница index.php:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
 
<form action="mail.php" method="post">
 
  <input type="text" placeholder="Текст"> //ввожу пароль
  <input type="submit" value="Кнопка"> //нажимаю кнопку
 
</form>
 
</body>
</html>
Это вторая страница mail.php:
HTML5
1
2
3
4
5
6
7
8
<?
session_start();
    if (filter_has_var(0, 'send')) {
        header('location: '.$_SERVER['HTTP_REFERER']);
        exit();
    }
?>
    Содержимое
0
Заблокирован
12.05.2020, 22:18
Цитата Сообщение от markiz462 Посмотреть сообщение
<input type="text" placeholder="Текст"> //ввожу пароль
что тут происходит?

Добавлено через 1 минуту
PHP
1
header('location: '.$_SERVER['HTTP_REFERER']); // редирект на страницу, С КОТОРОЙ ОТПРАВЛЕН ЗАПРОС, на страницу с формой
0
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 137
12.05.2020, 22:18  [ТС]
Цитата Сообщение от Verolomstvo Посмотреть сообщение
Нажми кнопку Отправить и потом нажми F5
Ваш код обрабатывает запрос на mail.php и возвращает ответ "сообщение отправлено" на index.php, верно?

А я хочу, чтобы я перешел на страницу mail.php, и чтобы на ней не выскакивала эта табличка при нажатии F5. Скажем, я хочу сделать себе страничку с кнопкой "Личная информация", где будет мой номер телефона и т.д.. Попасть туда смогут только те, кому я дам пароль. Вот у меня и есть форма с полем для пароля и кнопка.

Добавлено через 43 секунды
Цитата Сообщение от Verolomstvo Посмотреть сообщение
что тут происходит?
Пароль вписываю.
0
Заблокирован
12.05.2020, 22:20
Цитата Сообщение от markiz462 Посмотреть сообщение
А я хочу, чтобы я перешел на страницу mail.php, и чтобы на ней не выскакивала эта табличка при нажатии F5
HTML5
1
<a href="mail.php">Личная информация</a>
0
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 137
12.05.2020, 22:22  [ТС]
Цитата Сообщение от Verolomstvo Посмотреть сообщение
1
<a href="mail.php">Личная информация</a>
Ну, перейдут по этой ссылке все, кому не лень. А я хочу, чтобы смогли перейти только те, кому я скажу пароль от этой страницы.
0
Заблокирован
12.05.2020, 22:24
markiz462, короче я понял, отправляй форму методом GET, по умолчанию тег form имеет метод GET, если его не указывать
HTML5
1
2
3
<form action="mail.php">
  <button>Личная информация</button>
</form>
а вообще это делается так
HTML5
1
<a href="mail.php" class="btn">Личная информация</a>
и на css прописывается оформление тега a в виде кнопки
0
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 137
12.05.2020, 22:24  [ТС]
Цитата Сообщение от Verolomstvo Посмотреть сообщение
1
<a href="mail.php">Личная информация</a>
Или, допустим, у меня при каждом переходе на эту страницу пароль записывается в БД, чтобы я потом видел, сколько раз туда перешли. Так что задача такова, чтобы это работало через форму POST.
0
Заблокирован
12.05.2020, 22:25
markiz462, ну так пароль нужно запрашивать после перехода
0
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 137
12.05.2020, 22:26  [ТС]
Цитата Сообщение от Verolomstvo Посмотреть сообщение
а вообще это делается так
Я в курсе, поэтому я хочу это сделать через форму POST, потому что как это сделать через нее - я не в курсе. А я хочу, чтобы я был в курсе, как это сделать и так, и так.
0
Заблокирован
12.05.2020, 22:27
Цитата Сообщение от markiz462 Посмотреть сообщение
пароль записывается в БД
записывается или проверяется?
Цитата Сообщение от markiz462 Посмотреть сообщение
сколько раз туда перешли
для чего?
0
0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 137
12.05.2020, 22:30  [ТС]
Цитата Сообщение от Verolomstvo Посмотреть сообщение
записывается или проверяется?
Записывается, id выставляется автоматически. Тем самым я вижу, сколько раз уже побывали на этой странице.
Цитата Сообщение от Verolomstvo Посмотреть сообщение
для чего?
Не знаю, просто, не важно, не в этом суть. Просто хочу осуществить переход через POST-запрос и избавиться от таблички при таком способе перехода. Изучаю редирект и хочу знать его во всех возможных и невозможных проявлениях.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.05.2020, 22:30
Помогаю со студенческими работами здесь

Setcookie теряет содержимое при переходе на новую страницу
Приветствую, у меня есть две страницы: Главная и Личный кабинет, они соединенны файлом core.php и нужно чтобы при вводе данных в index.php...

Не удается обновить страницу без повторной отправки данных...
Пытаюсь написать простейшую страничку чата... Код следующий: Фреймсет, состоящий из двух фреймов: &lt;html&gt; &lt;HEAD&gt; ...

Почему при переходе на новую страницу создается новая сессия?
При переходе на новую страницу сессия не сохранняетса а создаетса новая сессия проверял по id сессии

Автоматический перенос текста при переходе на новую страницу в таблице Word
Добрый день! Помогите пожалуйста, нужно реализовать с помощью макроса автоматическое копирование текста из 1 и 2 столбца на следующую...

Как сделать чтобы при переходе на новую страницу все сохранялось?
Есть код,выполняющий поиск в файле.txt private async void startsearch_Click(object sender, RoutedEventArgs e) { ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru