Материал: Web-дизайн. лабораторный практикум. Суворов А.П., Проценко В.Н

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Чтобы обратиться к элементу данного, также надо указать ключи в квадратных скобках. Например, обратимся к первому элементу в первом массиве. Так как ключ первого массива - "apple", а ключ первого элемента в первом массиве - число 0 (так как мы явным образом не указали ключи):

echo $phones["apple"][0];

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

echo $phones["nokia"][1];

Допустим, вложенные массивы также представляют ассоциативные массивы:

<?php $technics = array(

"phones" => array("apple" => "iPhone5", "samsumg" => "Samsung Galaxy III", "nokia" => "Nokia N9"),

"tablets" => array("lenovo" => "Lenovo IdeaTab A3500", "samsung" => "Samsung Galaxy Tab 4", "apple" => "Apple iPad Air"));

foreach ($technics as $tovar => $items)

{

echo "<h3>$tovar</h3>"; echo "<ul>";

foreach ($items as $key => $value)

{

echo "<li>$key : $value</li>";

}

echo "</ul>";

}

//присвоим одному из элементов другое значение $technics["phones"]["nokia"] = "Nokia Lumnia 930";

//выведем это значение

echo $technics["phones"]["nokia"]; ?>

1.8.Передача параметров. Работа с формами

1.8.1.Обработка форм

Одним из основных способов передачи данных веб-сайту является обработка форм. Формы представляют специальные элементы разметки HTML, которые содержат в себе различные элементы ввода - текстовые поля, кнопки и т.д. И с помощью данных форм мы можем ввести некоторые данные и отправить их на сервер. А сервер уже обрабатывает эти данные.

Создание форм состоит из следующих аспектов:

95

Создание элемента <form><form> в разметке HTML

Добавление в этот элемент одно или несколько поле ввода

Установка метода передачи данных: GET или POST

Установка адреса, на который будут отправляться введенные данные Итак, создадим новую форму. Для этого определим новый файл form.php, в которое поместим следующее содержимое:

<!DOCTYPE html> <html>

<head>

<meta charset="utf-8"> </head>

<body>

<h3>Вход на сайт</h3>

<form action="login.php" method="POST">

Логин: <input type="text" name="login" /><br><br> Пароль: <input type="text" name="password" /><br><br> <input type="submit" value="Войти">

</form>

</body>

</html>

Атрибут action="login.php" элемента form указывает,

что

данные формы

будет обрабатывать скрипт login.php, который

будет

находиться с

файлом form.php в одной папке. А атрибут method="POST" указывает, что в качестве метода передачи данных будет применяться метод POST.

Теперь создадим файл login.php, который будет иметь следующее содержание:

<?php

$login = "Не известно"; $password = "Не известно";

if(isset($_POST['login'])) $login = $_POST['login'];

if (isset($_POST['password'])) $password = $_POST['password'];

echo "Ваш логин: $login <br> Ваш пароль: $password"; ?>

Чтобы

получить

данные

формы,

используется

глобальная

переменная $_POST.

Она представляет ассоциативный массив данных,

переданных с помощью метода POST. Используя ключи, мы можем получить отправленные значения. Ключами в этом массиве являются значения атрибутов name у полей ввода формы.

Так, так как атрибут name поля ввода логина имеет значение login (<input

96

type="text" name="login" />), то в массиве $_POST значение этого поля будет представлять ключ "login": $_POST['login']

И поскольку возможны ситуации, когда поле ввода будет не установлено, например, при прямом переходе к скрипту: http://localhost:8080/login.php. В этом случае желательно перед обработкой данных проверять их наличие с помощью функции isset(). И если переменная установлена, то функция isset() возвратит значение true.

Теперь мы можем обратиться к форме:

И по нажатию кнопки введенные данные методом POST будут отправлены скрипту login.php:

Необязательно отправлять данные формы другому скрипту, можно данные формы обработать в том же файле формы. Для этого изменим файл form.php следующим образом:

<!DOCTYPE html> <html>

<head>

97

<meta charset="utf-8"> </head>

<body>

<div>

<?php

if(isset($_POST['login']) && isset($_POST['password'])){

$login=$_POST['login']; $password = $_POST['password'];

echo "Ваш логин: $login <br> Ваш пароль: $password";

}

?>

</div>

<h3>Вход на сайт</h3> <form method="POST">

Логин: <input type="text" name="login" /><br><br> Пароль: <input type="text" name="password" /><br><br> <input type="submit" value="Отправить">

</form>

</body>

</html>

Безопасность данных

Большое значение в PHP имеет организация безопасности данных. Рассмотрим несколько простых механизмов, которые могут повысить безопасность нашего веб-сайта.

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

"<script>alert(hi);</script>", а в поле для пароля текст "<h2>пароль</h2>":

98

После отправки данных в html разметку будет внедрен код javascript, который выводит окно с сообщением.

Чтобы избежать подобных проблем с безопасностью, следует применять функцию htmlentities():

if(isset($_POST['login']) && isset($_POST['password'])){

$login=htmlentities($_POST['login']); $password = htmlentities($_POST['password']);

echo "Ваш логин: $login <br> Ваш пароль: $password";

}

И даже после ввода кода html или javascript все теги будут экранированы, и мы получим следующий вывод:

Еще одна функция - функция strip_tags() позволяет полностью исключить теги html:

99

Источник: https://studfile.net/preview/16568571/