Php при нажатии на кнопку вывести сообщение

Обновлено: 05.07.2024

1. Кнопки – Тег

Тег создает на веб-странице кнопки и по своему действию напоминает результат, получаемый с помощью тега (с параметром type="button | reset | submit"). В отличие от этого тега, предлагает расширенные возможности по созданию кнопок. Например, на подобной кнопке можно размещать любые элементы HTML , в том числе изображения. Используя стили, можно определить вид кнопки путем изменения шрифта, цвета фона, размеров и других параметров.
Теоретически, тег должен располагаться внутри формы, устанавливаемой элементом

Параметр TYPE
Определяет тип кнопки, который устанавливает ее поведение в форме. По внешнему виду кнопки разного типа никак не различаются, но у каждой такой кнопки свои функции. Значение по умолчанию: button.
Аргументы:
button – Обычная кнопка.
reset – Кнопка для очистки введенных данных формы и возвращения значений в первоначальное состояние.

Submit – Кнопка для отправки данных формы на сервер.
1.1. Кнопка (input type=button)
1.2. Кнопка с изображением (input type=image)

Кнопки с изображениями аналогичны по действию кнопке Submit, но представляют собой рисунок. Для этого задаем type=image и src="image.jpg".

Когда пользователь щелкнет где-нибудь на изображении, соответствующая форма будет передана на сервер с двумя дополнительными переменными – sub_x и sub_y. Они содержат координаты нажатия пользователя на изображение. Опытные программисты могут заметить, что на самом деле имена переменных, отправленных браузером, содержат точку, а не подчеркивание, но PHP автоматически конвертирует точку в подчеркивание.

1.3. Кнопка отправки формы (input type=submit)

Служит для отправки формы сценарию. При создании кнопки для отправки формы необходимо указать 2 атрибута: type="submit" и value="Текст кнопки". Атрибут name необходим, если кнопка не одна, а несколько и все они созданы для разных операций, например кнопки "Сохранить", "Удалить", "Редактировать" и т.д. После нажатия на кнопку сценарию передается строка имя=текст кнопки.

РНР -сценарий не требуется.

1.4. Массив кнопок (submit) для выбора варианта действий
2. Кнопка сброса формы (Reset)

При нажатии на кнопку сброса (reset), все элементы формы будут установлены в то состояние, которое было задано в атрибутах по умолчанию, причем отправка формы не производиться.

РНР -сценарий не требуется.

3. Флажок (checkbox)

Флажки checkbox предлагают пользователю ряд вариантов, и разрешает произвольный выбор (ни одного, одного или нескольких из них).

4. Переключатель(radio)

Переключатели radio предлагают пользователю ряд вариантов, но разрешает выбрать только один из них.
Пример 1.

5. Текстовое поле (text)

При создании обычного текстового поля размером size и максимальной допустимой длины maxlength символов, атрибут type принимает значение text. Если указан параметр value, то поле будет отображать указанный в переменной value. При создании поля не забывайте указывать имя поля, т.к. этот атрибут является обязательным.

6. Поле для ввода пароля (password)

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

7. Скрытое текстовое поле (hidden)

Позволяет передавать сценарию какую то служебную информацию, не отображая её на странице.

8. Выпадающий список (select)

Тэг . Теги позволяют определить содержимое списка, а параметр value определяет значение строки. Если в теге указан параметр selected, то строка будет изначально выбранной. Параметр size задает, сколько строк будет занимать список. Если size равен 1, то список будет выпадающим. Если указан атрибут multiple, то разрешено выбирать несколько элементов из списка. Но эта схема практически не используется, а при size = 1 не имеет смысла.

Если необходимо создать выпадающий с предсказуемой последовательностью. Например, список с годами с 2000 по 2050. То используется следующий прием.

9. Многострочное поле ввода текста (textarea)

Многострочное поле ввода текста позволяет отправлять не одну строку, а сразу несколько. При необходимости можно указать атрибут readonly, который запрещает редактировать, удалять и изменять текст, т.е. текст будет предназначен только для чтения. Если необходимо чтобы текст был изначально отображен в многострочном поле ввода, то его необходимо поместить между тэгами .
Существует параметр wrap – задание переноса строк. Возможные значения:
off – отключает перенос строк;
virtuals – показывает переносы строк, но отправляет текст как он введен;
physical – переносы строк оставляются в исходном виде.
По умолчанию тег

создает пустое поле шириной в 20 символов и состоящее из 2 строк.

Для того, чтобы в многострочном текстовом поле соблюдалось html-форматирование (перенос строк по средством тега
или
), то используйте функцию nl2br():

10. Кнопка для загрузки файлов (browse)

Служит для реализации загрузки файлов на сервер. При создании текстового поля также необходимо указать тип поля type как "file".

Способы общения браузера с сервером
Метод GET
Метод POST

Передать данные методом POST можно только с помощью формы на HTML странице. Основное отличие POST от GET в том, что данные передаются не в заголовке запроса а в теле, следовательно, пользователь их не видит. Модифицировать можно только изменив саму форму.
Преимущество:
- большая безопасность и функциональность запросов с помощью форм методом POST .
Недостаток:
- меньшая доступность.
Для чего следует использовать:
- для передачи большого объема информации (текст, файлы..);
- для передачи любой важной информации;
- для ограничения доступа (например, использовать для навигации только форму – возможность, доступная не всем программам-роботам или грабберам-контента).
Для чего не следует использовать:
- нет ограничений.

Загрузка файлов методом POST

В приведенном выше примере "URL" необходимо заменить ссылкой на PHP -скрипт. Скрытое поле MAX _FILE_SIZE (значение необходимо указывать в байтах) должно предшествовать полю для выбора файла, и его значение является максимально допустимым размером принимаемого файла. Также следует убедиться, что в атрибутах формы вы указали enctype="multipart/form-data", в противном случае загрузка файлов на сервер выполняться не будет.
Внимание
Опция MAX _FILE_SIZE является рекомендацией браузеру, даже если бы PHP также проверял это условие. Обойти это ограничение на стороне браузера достаточно просто, следовательно, вы не должны полагаться на то, что все файлы большего размера будут блокированы при помощи этой возможности. Тем не менее, ограничение PHP касательно максимального размера обойти невозможно. Вы в любом случае должны добавлять переменную формы MAX _FILE_SIZE, так как она предотвращает тревожное ожидание пользователей при передаче огромных файлов, только для того, чтобы узнать, что файл слишком большой и передача фактически не состоялась.

Как определить метод запроса?

вернет GET или POST .

Какой способ следует применять?
Как передать данные в другой файл непосредственно из тела PHP -программы методом GET и POST ?

Пример, для демонстрации отправки данных методом POST и GET одновременно и получения ответа от сервера.


В этом примере файл file.php получил переменные:

GET var="23" и var2="54"
POST var3="test" и var4="еще тест"

Внимание, данные, передаваемые через POST или GET , всегда передаются строкой (string), независимо от того, через форму они передаются или через скрипт. Поэтому, передавая число, помните, что в скрипт оно попадет как string.

Как перейти на другую страницу сайта из тела программы?

Через HTML :

На новую страницу

На предыдущую с обновлением:

Через генерацию JavaScript-кода:

На предыдущую с обновлением:

На предыдущую без обновления:

Перезагрузить текущую страницу:

Через PHP -функцию:

На предыдущую страницу с обновлением:

На текущую страницу с обновлением и генерацией полного url-адреса:

Самое главное, что надо помнить: сервер по своей инициативе обратиться к клиенту не может. Мы можем только по факту запроса выдать что-то браузеру – либо страницу, либо команду запросить другой ресурс.

Примеры необычного использования форм

Эти примеры показывают, что PHP -программу обработки ввода можно отделить от HTML -текста и можно расположить на одной странице.

Пример 1. Задание номера карточки.

Здесь отсутствует кнопка передачи данных, т.к. форма, состоящая из одного поля, передается автоматически при нажатии клавиши Enter.

Пример 2. Навигация по массиву (списку) по средством формы.

В этом примере осуществляется перемещение по списку (массиву) элементов с отражением его номера (ключа) и значения элемента в массиве с помощью кнопок и скрытой строки с передачей навигационного параметра.

Проверка корректности данных или допустимости вводимых данных

1. Проверку на длину:

2. Проверку корректности адреса электронной почты

Такая проверка осуществляется зачастую с помощью регулярных выражений. Как известно, у адреса две составляющие – имя пользователя и имя домена, которые разделены знаком @. В имени пользователя могут присутствовать заглавные и прописные буквы цифры, знаки подчеркивания и минуса, точки. Для проверки разделителя между именем пользователя и именем домена, в выражение требуется добавить + @.
Также не забывайте, что электронный ящик может находиться на поддомене xxx@xxx.xxx.com, или даже на домене четвертого, пятого уровня (как вариант, реально эта ситуация крайне редка, но отбрасывать эти адреса не стоит). Поэтому, в регулярном выражении не забывайте использовать точку (экранированную "\.") для указания того, что часть адреса после "@" может содержать точку, как разделитель доменных имен.
Таким образом, регулярное выражение, проверяющее имя пользователя и наличие разделителя имеет следующий вид:

Объединяя эти шаги, получаем следующее регулярное выражение для проверки адресов электронной почты:

Проверка осуществляется по этому шаблону с применением функции preg_match():

Эта пользовательская функция check_email возвращает true, если переданное значение переменной $email соответствует шаблону и false в противном случае.
В итоге проверка на корректность будет выглядеть так:

Соответственно в файле form.php перед формой прописываем следующее:

Соответственно, если ошибка была, то она будет напечатана пользователю перед формой. Таким же методом можно сохранять данные в заполненных полях формы, чтобы пользователь по несколько раз не вводил одно и то же.

Другие проверки на корректность введенных данных

Каждый web-мастер должен уметь не только писать скрипты, но и грамотно организовывать защиту своих творений. Одним из важнейших навыков является умение правильно фильтровать всю информацию, поступающую от пользователя.
Кроме чистых ошибок пользователя, необходимо также исключить ситуации, в которых возможно злонамеренное введение некорректных данных, к примеру, различных скриптов. Для этого вводимый пользователем текст необходимо обработать функциями удаления HTML -тегов (для исключения возможности написания скриптов на JavaScript и Visual Basic) и обратных слешей (для исключения возможности написания скриптов на Perl). Т. о. минимальный набор действий, необходимый для проверки корректности данных, вводимых пользователем, включает следующие этапы:
• проверка того, что пользователь ввел данные
• проверка допустимости вводимых пользователем данных (как правило, осуществляется при помощи регулярных выражений)
• обработка текста, введенного пользователем функцией htmlspecialchars для удаления HTML -тегов
• обработка текста, введенного пользователем функцией stripslashes для удаления обратных слешей

Фильтрация данных

Прежде всего, следует фильтровать данные, которые передает пользователь осознанно – в основном, это данные различных форм. Это может быть пара логин-пароль для входа, пункт голосования и т.п. Например, такая форма

После нажатия кнопки "OK" передаст скрипту index.php два значения – $login и $pass. Как их можно отфильтровать? Пример для переменной $login:
Вводимый пользователем текст необходимо обработать функциями удаления HTML -тегов (для исключения возможности написания скриптов на JavaScript и Visual Basic) и обратных слешей (для исключения возможности написания скриптов на Perl). К примеру, если переменная $login содержит текст с именем пользователя, то обработка этого текста выглядит так:

Если вы знакомы с регулярными выражениями, то предыдущий пример можно записать гораздо короче:

Аналогично фильтруются переменные, получаемые скриптом через URL . В движках сайтов можно встретить что-то вроде таких ссылок:

Проверка на пустоту поля

Проверка того, что пользователь ввел данные, может осуществляться, к примеру, с помощью функции isset:

Для этой же цели можно использовать функцию empty:

На практике удобно сначала проверить, не пустой ли action формы, а потом уже проверять различные его составляющие: поле имя, e-mail и т. д. К примеру:

Таблица сравнения типов в php

Следующая таблица демонстрируют работу PHP с типами переменных и операторами сравнения, как в случае свободного, так и в случае строгого сравнения. Также эта информация относится к разделу документации по приведению типов.
Замечание: HTML -формы не передают тип переменной: они всегда передают строки. Для проверки является ли строка числом, используйте функцию is_numeric().
Замечание: Использование if ($x) пока $x не определена сгенерирует ошибку E_NOTICE. Вместо этого используйте функцию empty() или isset() и/или инициализируйте переменную.

PS: Перепробовал, все находящиеся на сайте варианты, не 1 не подошел.

Модальное окно после отправки формы обратной связи
Ребят, вопрос конечно глупый, но каким образом сделать чтобы после отправки письма через форму.


Как убрать всплывающее окно формы
Дело началось с того, что я использую: <form method="POST" action=""> <input type="submit".

Как вывести модальное окно после отправки данных на сервер
Всем привет. Есть форма, которая отправляет методом post данные на сервер. Там эти данные.

Redirect после отправки формы
Доброго времени суток, подскажите пожалуйста, как мне сделать редирект! код весь работает, после.

Я предлагаю смотреть с сторону JS. Через поисковик по запросу что нить типа "Всплывающее окно JS" будет много готовых примеров.

Я предлагаю смотреть с сторону JS. Через поисковик по запросу что нить типа "Всплывающее окно JS" будет много готовых примеров.

Вот именно так, как я и написал)) Или обратитесь в раздел JS. Только средствами Пыха это вряд-ли можно реализовать.

";
echo "Нажмите, чтобы вернуться на главную страницу";
>

alert должен всплыть на mail.php перед echo "Нажмите, чтобы вернуться на главную страницу";

alert должен всплыть на mail.php перед echo "Нажмите, чтобы вернуться на главную страницу";

Код стоит так же, алерта нет. Мб причина в том что сайт у меня на html?
И я хотел не уводить пользователей с главной страницы в файл обработки (mail.php), а оставить на странице и просто добавить всплыв. окно

P.S. У тега form нужно удалить аттрибут action. В общем, считаю вывод через alert не очень красивым, поэтому в данном варианте можно сделать вывод html вместо алерта.

Так вы же используете php для отправки почты? Я не предлагаю вам переделывать весь сайт на php. Нужно всего лишь код переместить из одного файла в другой. И это один из вариантов решения вашей задачи.

Или вы хотите полностью отказаться от php? Зачем тогда пишите в ветке про php?

Так вы же используете php для отправки почты? Я не предлагаю вам переделывать весь сайт на php. Нужно всего лишь код переместить из одного файла в другой. И это один из вариантов решения вашей задачи.
Или вы хотите полностью отказаться от php? Зачем тогда пишите в ветке про php?


Не создается сессия после отправки формы
Здравствуйте! Есть код: if (isset($_POST)) < $_SESSION=$_POST; ><form method="post".


Закрытие окна после отправки формы
Есть страница с данными из БД, на этой же страничка есть кнопка добавить, при нажатию на которую.

Сохранение GET параметра, после отправки формы
Делаю калькулятор, в котором примеры берутся из json файла, а json файл выбирается GET параметром.

В то же время имеется простой и очевидный способ сделать жизнь лучше. Несмотря на очевидность, мне почему-то не приходилось видеть, чтобы кто-то его использовал — по крайней мере, когда я смотрел чужие исходники.

Идея очень простая, и ее можно реализовать с помощью пары классов.

Для доступа к сессии используется переменная $_SESSION.

Замечу, что $_SESSION — это массив, мы используем всего лишь один элемент этого массива с индексом ‘session_message’.

Если вы не смогли нащупать нить, самое время освежить в памяти разделы мануала, посвященные сессиям и массивам.

Так вот, ООП дает возможность позволить себе роскошь не продумывать все заранее.

Следующий класс — Inbox — как раз для этого и предназначен.

Создадим очень простой пример, который в ответ на отправку формы будет сообщать количество секунд в текущей минуте.

Всю работу с массивами и сессиями мы спрятали внутри классов, и конечный код выглядит просто и красиво.

Создайте каталог на веб-сервере, затем создайте в нем эти три файла и попробуйте скрипт в работе. Заметьте, проблем с кнопками Back и Refresh не возникает.

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

Здесь мы встречаем два затруднения:

Чтобы попытаться решить первую проблему, можно создать буфер, в котором бы хранился результат работы вывода Inbox.

Возможно, у нас еще будет несколько похожих (на Inbox) вещей, и надо создать систему буферов. Для того, чтобы не перепутать где чей вывод, мы, наверное придем к именованию буферов. У нас будет где-то храниться последовательность, в соответствии с которой должен происходить вывод буферов — желательно во внешнем файле, чтобы легче было вносить изменения.

Идея в том, чтобы в методах toPage() формировать не HTML-код, а XML структуру. Документ страницы будет создаваться в виде стринга с XML-кодом (он будет служить в качестве "буфера"), а на последней стадии работы скрипта мы будем использовать XSL-трансформацию.

Для начала представим себе, что должно являться результатом работы основной части кода.

Метод toPage() сделан пустым — в данном случае он нужен как индикатор того, как должны внешние "матрешки"-классы общаться с внутренним классом. Впрочем, здесь можно было бы предложить реализацию по умолчанию, если бы мы заметили, что есть много объектов, которые одинаково выводят себя на страницу.

Классы Message и Inbox несколько изменятся — теперь оба они должны наследоваться от Outputable, а также изменятся и методы toPage()
Message.php

Изменился способ вывода — теперь вместо непосредственного вывода на страницу внешнее представление до поры до времени хранится в Outputable, который "сидит" в каждом из объектов. Метод appendOutput() служит некоторой заменой конструкции echo(). Чтобы забрать вывод объекта, используется метод getOutput().

Теперь посмотрим, что собой представляет клиентская часть кода, которая будет решать ту же задачу, что и раньше.
index.php

Главное новшество — в объекте $global_content, название которого говорит само за себя. В данном случае он принадлежит классу Outputable, в реальных задачах вы, наверное, создадите отдельный класс для контента страницы.

Для того, чтобы посмотреть на результат, осталось только подготовить XSL-шаблон.
style.xsl

Чего же мы добились?

Прежде всего, можно смелее браться за сложные проекты — обеспечена реальная независимость модулей. Порядок укладки результатов на страницу теперь контролируется с помощью внешнего XSL-шаблона и не зависит от порядка запуска модулей.

Любой модуль, который генерирует XML-данные в качестве результата своей работы, может быть использован в проекте. Кстати, это одно из преимуществ перед template-движками, в которых создание данных заключается в последовательности вызова методов (assign и т.п.) конкретного движка, на которых нет общего стандарта.

Еще одно преимущество — легкость отладки. Если вы запустите скрипт, то заметите, что на каждой странице присутствует debug-вывод — XML-прообраз, который здорово упрощает отладку приложений.

Напоследок, галопом о перспективах:


2 ответа 2

Для этого вы можете использовать JavaScript(jQuery) AJAX.

Подключите jQuery, а после можете применить этот код

И соответственно сама функция


Есть несколько вариантов.

Из скрипта email.php делать редирект обратно на форму, с каким-нибудь параметром GET и по наличию этого параметра выводить текст под формой или не выводить.

Добавить под формой iframe и выполнять скрипт в нем. Надо добавить в форму аттрибут target - указывающий на данный iframe

Читайте также: