Почему php не работает в html
Перейти к содержимому

Почему php не работает в html

  • автор:

PHP и HTML

PHP и HTML тесно взаимодействуют: PHP умеет генерировать HTML, а HTML умеет передавать информацию PHP. Перед чтением вопросов в этом разделе важно понимать, как получать переменные извне PHP. Страницы руководства по этой теме содержат много примеров.

  1. Какое кодирование или декодирование я должен выполнять при передаче значения через форму или URL-адрес?
  2. Я пытаюсь использовать , но переменные $foo.x и $foo.y недоступны. Значение $_GET[‘foo.x’] тоже не существует. Где они?
  3. Как создать массивы в HTML ?
  4. Как получить все результаты из HTML-тега select с атрибутом multiple?
  5. Как передать переменную из JavaScript в PHP?

Какое кодирование или декодирование я должен выполнять при передаче значения через форму или URL-адрес?

  • Интерпретация HTML. Чтобы задать произвольную строку, вы должны заключить её в двойные кавычки и использовать функцию htmlspecialchars() для кодирования.
  • URL: URL-адрес состоит из нескольких частей. Если вы хотите, чтобы данные были восприняты как один элемент, нужно закодировать их функцией urlencode() .

Пример #1 Скрытый элемент HTML-формы

Замечание: Кодировать перменную $data функцией urlencode() неправильно, поскольку кодировать данные urlencode() это обязанность браузера. Популярные браузеры делают это правильно. Заметьте, что это произойдёт независимо от метода (например, GET или POST). Это заметно только в случае GET-запроса, поскольку POST-запросы обычно скрыты.

Пример #2 Данные, которые редактирует пользователь

Замечание: Браузер показывает данные как предполагалось, потому что браузер интерпретирует экранированные HTML-символы. При отправке через GET- или POST-метод браузер закодирует (urlencoded) данные для передачи, а PHP декодирует (urldecoded). Поэтому не нужно выполнять какое-либо кодирование или декодирование, всё обрабатываются автоматически.

Пример #3 В URL

Замечание: На самом деле вы подделываете HTML-запрос GET, поэтому необходимо вручную закодировать ( urlencode() ) данные.

Замечание: Вам надо применить функцию htmlspecialchars() к полному URL-адресу, потому что URL-адрес появляется как значение HTML-атрибута. При этом браузер сначала раскодирует всё значение (операция, обратная действию функции htmlspecialchars() ) и затем передаст URL. PHP поймёт URL-адрес правильно, поскольку вы закодировали данные функцией urlencode() . Вы заметите, что символ & в URL-адресе заменяется на мнемонику & . Хотя большинство браузеров это исправит, если вы забудете об этом, но всё же это не всегда возможно. Поэтому, даже если ваш URL-адрес не динамический, нужно закодировать его функцией htmlspecialchars() .

Я пытаюсь использовать , но переменные $foo.x и $foo.y недоступны. Значение $_GET[‘foo.x’] тоже не существует. Где они?

При отправке формы, вместо стандартной кнопки отправки допустимо использовать изображение с тэгом вроде такого:

Когда пользователь кликает по изображению, серверу будет послана сопутствующая форма с двумя дополнительными переменными: foo.x и foo.y .

Поскольку имена foo.x и foo.y не разрешены в PHP, они автоматически преобразовываются в foo_x и foo_y . То есть точки заменяются на подчёркивания. Таким образом, вы обращаетесь к этим переменным так же, как и к любым другим, описанным в разделе о получении переменных извне PHP. Например, $_GET[‘foo_x’] .

Замечание:

Пробелы в именах переменных запроса преобразовываются в подчёркивания.

Как создать массивы в HTML ?

Чтобы браузер передал результат в PHP-скрипт как массив, элементы , или называют следующим образом:

Обратите внимание на квадратные скобки после имени переменной: они делают переменную массивом. Разработчику доступна группировка элементов в массив за счёт присваивания одинакового имени разным элементам:

Это создаст два массива, MyArray и MyOtherArray, которые браузер передаст PHP-скрипту. Можно также задать конкретные ключи для массивов:

Массив AnotherArray теперь будет содержать ключи 0, 1, email и phone.

Замечание:

Определять ключи массивов в HTML необязательно. Если вы не установите ключи, массив заполнится в порядке появления элементов в форме. Первый пример будет содержать ключи 0, 1, 2 и 3.

Как получить все результаты из HTML-тега select с атрибутом multiple?

HTML-тег select с атрибутом multiple разрешает пользователю выбрать элементы из списка. Эти элементы затем передаются обработчику формы. Проблема в том, что они переданы с одним и тем же именем. Например:

Каждая выбранная опция поступит обработчику формы как:

var=option1 var=option2 var=option3

Каждая опция будет перезаписывать содержимое предыдущей переменной $var . Решение — использовать функцию PHP «массив из элемента формы». Как в следующем примере:

Это говорит PHP рассматривать переменную $var как массив и каждое присваивание значения для var[] добавляет элемент в массив. Первым элементом будет $var[0] , следующим — $var[1] и т. д. Можно использовать функцию count() , чтобы определить, сколько элементов было выбрано, а функцию sort() — для сортировки массива опций, если это необходимо.

Заметьте, если вы используете JavaScript, есть риск того, что запись [] в имени элемента вызовет проблемы, если вы пытаетесь обращаться к элементу по имени. Вместо этого указывайте числовой идентификатор элемента формы или возьмите имя переменной в одинарные кавычки и используйте его как индекс массива элементов, например:

variable = document.forms[0].elements['var[]'];

Как передать переменную из JavaScript в PHP?

Поскольку JavaScript — обычно клиентская технология, а PHP, как правило, серверная, и поскольку HTML — протокол «без состояния», эти два языка не умеют обмениваться переменными напрямую.

Однако можно передавать переменные между ними. Один из способов добиться этого — сгенерировать JavaScript-код из PHP и принудительно обновлять браузер, посылая определённые переменные обратно PHP-скрипту. Пример показывает, как это сделать — он разрешает PHP-коду захватывать высоту и ширину экрана, что обычно возможно только на стороне клиента.

Пример #4 Генерирование JavaScript из PHP

if (isset( $_GET [ ‘width’ ]) AND isset( $_GET [ ‘height’ ])) // Выводим переменные с размерами
echo «Ширина экрана: » . $_GET [ ‘width’ ] . «
\n» ;
echo «Высота экрана: » . $_GET [ ‘height’ ] . «
\n» ;
> else // Передаём переменные с размерами
// (сохраняем оригинальную строку запроса
// — POST-переменные нужно будет передавать другим способом)

как вставить php файл в htm страницу?

pinkponk, в html нельзя, если только в html код c расширением php.

3 июля 2009, 17:08

а можно поподробнее

На сайте с 25.11.2006

3 июля 2009, 17:09

masttack:
pinkponk, в html нельзя, если только в html код c расширением php.

Не знаете — лучше молчите. А по теме: В корневом файле .htaccess (если его нет, то нужно создать в корневой папке сайта) добавить строчку: AddType application/x-httpd-php .php .htm .html После этого все html страницы будут обрабатываться как php файлы.

Почему не работает код php на странице?

Compolomus

Дмитрий, но ведь он настроен не у всех, я думаю таких людей вообще мало. Как тогда страница будет работать у них?

Compolomus

Дмитрий @Compolomus Куратор тега PHP
Geo5, сервер у тебя, а клиенты уже с арбузера ходят на сервер
Geo5 @Geo5 Автор вопроса
Дмитрий, а, понял. Спасибо

Rsa97

Geo5, PHP — это серверный язык.
Когда ваш браузер загружает страницу с сервера, то сервер (Apache, Nginx, IIS) вызывает PHP. Тот выполняет код на этой странице и отдаёт результат серверу, который возвращает его браузеру.

Compolomus

Дмитрий @Compolomus Куратор тега PHP
Geo5 @Geo5 Автор вопроса
Geo5 @Geo5 Автор вопроса

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

То есть код как в HTML.
Почему если это отдельный язык нельзя просто написать без кавычек. Например:
echo «Привет»;

Geo5 @Geo5 Автор вопроса
Дмитрий, Почему я должен писать теги, а не просто скрипт?

Compolomus

Дмитрий @Compolomus Куратор тега PHP

Geo5, открывать теги надо, для того чтоб интепритатор понял, что это код пхп и его надо исполнить, а не просто печатать в арбузер

не работает php код

Всем привет, делаю простенький проект без фреймворков и всего такого. Написал код обычной формы для заполнения данных, и создал php страницу на которую эти данные будут отправляться, но при переходе на эту страницу мне просто показывается код в текстовом виде код формы

код php файла

"; echo $number; 

введите сюда описание изображения

прикрепляю еще скриншот того что будет если перейти к файлу send.php

Отслеживать
задан 5 авг 2020 в 8:49
Антон Кравцов Антон Кравцов
29 10 10 бронзовых знаков
а вы закрыли код php в конце ?> ‘; echo $_POST[‘client-number’]; ?>
5 авг 2020 в 8:55
Да, закрывал, он вот тот же текст и пишет, то есть весь код он просто пишет текстом
5 авг 2020 в 9:00

Вероятно, у Вас не включен PHP в Вашем сервере. Создайте PHP-файл с содержимым и если Вы не видите информацию о текущей конфигурации PHP, значит PHP не включен.

5 авг 2020 в 9:05

у меня проект не на сервере, я просто создал в phpstorm проект и там сделал index страницу и файл send.php то есть проект даже не на локалке а просто на компе

5 авг 2020 в 9:06

Поверьте — когда будет ошибка синтаксиса вы это поймете!) В данном случае это ошибка не кода, а отсутствия сервера, который должен обрабатывать этот самый php код.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *