Новые книги

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

Здесь вы найдете минимум теории и максимум практической информации – кейсы, примеры, пошаговые алгоритмы работы, четкие рекомендации о том, как продвигать ваш бизнес в социальных сетях: готовить и проводить эффективные SMM-кампании, оценивать их результаты, увеличивать продажи с помощью SMM-стратегий.

Большую практическую ценность представляет рассказ автора об особенностях продвижения в отечественном интернет-пространстве, где ведущей социальной сетью является «ВКонтакте», а поведение пользователей Twitter и Facebook отличаются рядом характерных черт.

Для руководителей и менеджеров компаний, маркетологов и рекламистов.
The Windows Driver Model has two separate but equally important aspects. First, the core model describes the standard structure for device drivers. Second, Microsoft provides a series of bus and class drivers for common types of devices.

The core WDM model describes how device drivers are installed and started, and how they should service user requests and interact with hardware. A WDM device driver must fit into the Plug and Play (PnP) system that lets users plug in devices that can be configured in software.

Microsoft provides a series of system drivers that have all the basic functionality needed to service many standard types of device. The first type of system driver supports different types of bus, such as the Universal Serial Bus (USB), IEEE 1394 (FireWire) and Audio port devices. Other class drivers implement standard Windows facilities such as Human Input Devices (HID) and kernel streaming. Finally, the Still Image Architecture (STI) provides a framework for handling still images, scanners, etc.

These system class drivers can make it significantly easier to write some types of device driver. For example, the USB system drivers handle all the low-level communications across this bus. A well defined interface is made available to other drivers. This makes it fairly straightforward to issue requests to the USB bus.

PHP и HTML



Учебник РНР
Назад Вперёд

Глава 51. PHP и HTML

PHP и HTML тесно связаны: PHP генерирует HTML, а HTML содержит информацию , которая высылается  в PHP.

1. Какое кодирование/декодирование я должен выполнять при передаче значения в HTМL-форме? А через URL?
2. Я пытаюсь использовать тэг <input type="image">, но переменные $foo.x и $foo.y недоступны. Где они?
3. Как мне создать массивы в HTML-тэге <form>?
4. Как мне получит все результаты из HTML-тэга множественного выбора select?

1. Какое кодирование/декодирование я должен выполнять при передаче значения в HTМL-форме? А через URL?

Есть несколько этапов, когда кодировка имеет важное значение. Предположим, у вас имеется переменная string $data, содержащая строку, которую вы хотите передать некодированным способом. Тогда необходимые шаги:

  • HTML-интерпретация. Чтобы специфицировать произвольную строку, вы обязаны заключить её в двойные кавычки, а htmlspecialchars - всё значение.

  • URL: URL состоит из нескольких частей. Если вы хотите, чтобы ваши данные интерпретировались как один элемент, вы обязаны кодировать их с помощью urlencode().

Пример 51-1. Элемент hidden HTML-формы
<?php
    echo "<input type=hidden value=\"" . htmlspecialchars($data) . "\">\n";
?>

Примечание: неверным будет urlencode() $data, поскольку за urlencode() данных отвечает браузер. Все популярные браузеры делают это корректно. Заметьте, что это делается независимо от метода (GET или POST). Вы увидите это только при методе GET, поскольку POST-запросы обычно скрыты/hidden.

Пример 51-2. Данные, редактируемые пользователем
<?php
    echo "<textarea name=mydata>\n";
    echo htmlspecialchars($data)."\n";
    echo "</textarea>";
?>

Примечание: эти данные будут выведены в браузере так, как задумано, поскольку браузер будет интерпретировать заменённые (escaped) html-символы.

При отправке, через GET или POST, данные будут url-кодированы браузером для передачи и непосредственно url-декодированы в PHP. Поэтому в результате вам ничего не нужно urlencodе/urldecodе самостоятельно, всё необходимое выполняется автоматически.

Пример 51-3. В URL
<?php
    echo "<a href=\"" . htmlspecialchars("/nextpage.php?stage=23&data=" .
        urlencode($data)) . "\">\n";
?>

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

Примечание: вы должны htmlspecialchars() весь URL, поскольку URL появляется как значение HTML-атрибута. В этом случае браузер сначала де- htmlspecialchars() значение, а затем передаёт URL. PHP поймёт URL корректно, так как вы urlencoded() данные.

Вы увидите, что символ & в URL будет заменён на &amp;. Хотя большинство браузеров исправят ситуацию, если вы забудете сделать это, это не всегда возможно. Поэтому, даже если даже ваш URL не является динамическим, вы должны htmlspecialchars() URL.

2. Я пытаюсь использовать тэг <input type="image">, но переменные $foo.x и $foo.y недоступны. Где они?

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

<input type="image" src="image.gif" name="foo">

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

Поскольку $foo.x и $foo.y являются неверными именами переменных в PHP, они автоматически конвертируются в $foo_x и $foo_y. То есть, точки заменяются на символы подчёркивания.

3. Как мне создать массивы в HTML-тэге <form>?

Чтобы получить результат вашей <form>, отправленный как массив в ваш PHP-скрипт, вы именуете элементы <input>, <select> или <textarea> таким образом:

<input name="MyArray[]">
<input name="MyArray[]">
<input name="MyArray[]">
<input name="MyArray[]">

Обратите внимание на квадратные скобки после имён переменных, это то, что делает их массивом. Вы можете группировать элементы в разные массивы, присвоив одно имя разным элементам:

<input name="MyArray[]">
<input name="MyArray[]">
<input name="MyOtherArray[]">
<input name="MyOtherArray[]">

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

<input name="AnotherArray[]">
<input name="AnotherArray[]">
<input name="AnotherArray[email]">
<input name="AnotherArray[phone]">

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

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

См. также Функции массива и Переменные за пределами PHP.

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

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

<select name="var" multiple>

Каждая выбранная опция дойдёт до обработчика акции как:

var=option1
var=option2
var=option3

Каждая опция будет перезаписывать содержимое предыдущей переменной $var. Решением будет использование "массива элемента form" РНР. Нужно использовать следующее:

<select name="var[]" multiple>

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

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

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

НазадОглавление Вперёд
Использование PHP ВверхPHP и COM