Чтобы обратиться к элементу данного, также надо указать ключи в квадратных скобках. Например, обратимся к первому элементу в первом массиве. Так как ключ первого массива - "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