При работе с пользовательским вводом есть одно правило:
Никогда не доверяйте данным, получаемым извне.
Всё, что пользователь может изменить, неправильно написать или не ввести - он однажды изменит, напишет или не введет. Намеренно или случайно - это уже другой вопрос. Но в любом случае, все вводимые данные должны проверяться и перепроверяться. Однажды написанная процедура проверки данных избавит вас от множества проблем и лишней работы по установке и отладке.
$_COOKIES
В массив $_COOKIES автоматически помещаются все cookies, которые получены от браузера. Механизм cookies мы подробно рассмотрим в соответствующем уроке. А пока вам достаточно запомнить, что есть глобальный массив, из которого в любое время можно узнать какие cookies установлены на стороне клиента.
$_REQUEST
Массив $_REQUEST объединяет три массива: $_POST, $_GET, $_COOKIES. В ранних версиях PHP сюда же входил массив $_FILES, но из соображений безопасности и производительности его исключили.
Пользоваться массивом $_REQUEST очень удобно в случаях, когда нет разницы, каким методом был сделан запрос.
Например, при постраничном выводе данных номер страницы можно передавать через URL ("index.php?page=3") методом GET, а можно через элемент формы методом POST. И в том и в другом случае переменная page попадёт в массив $_REQUEST.
$_SESSION
Предназначение массива $_SESSION - хранение всех переменных сессии текущего пользователя. Мы подробно рассмотрим механизм сессий в соответствующем уроке.
Глобальные массивы очень удобны в работе, но злоупортеблять ими не стоит, особенно массивом $_SESSION. Если переменной нужна только в локальной области видимости - не надо её делать глобальной. Слишком большое количество "лишних" переменных сильно снижает быстродействие и эффективность скрипта.
Задания к работе
1. Создать линейный массив из 20 целых чисел, значения которых вычисляются по формуле $ a []=$ i *3+ N, здесь N -- это номер студента по журналу; $ i -- индекс элемента массива. Вывести полученный массив на печать с использованием функции print _ r;
2. Создать линейный массив из 30 целых чисел с индексами, соответствующими четным числам, начиная с 2. Значения элементов массива вычисляются по формуле $ a [$ i ]=$ i /2 + N; здесь N -- это номер студента по журналу; $ i -- индекс элемента массива. Вывести массив в виде таблицы. При выводе в ячейки таблицы используйте выравнивание содержимого по центру ячейки. Таблицу сделать с границей.
3. Создать с использованием оператора Array массив, соответствующий расшифровке цветов радуги с помощью ключевой фразы «Каждый охотник желает знать, где сидит фазан». Значениями должны стать слова фразы, ключами должны стать соответствующие цвета.
4. Напишите PHP-скрипт, в котором создается одномерный массив, содержащий 6 элементов со следующими ключами
5. Создайте ассоциативный массив из 5 элементов, ключами в массиве являются фамилии людей, значениями -- номера их телефонов. Напишите скрипт, который по фамилии, переданной в качестве параметра, выводит на экран номер телефона данного человека.
6. Создать массив $ sessia, заполнив его данными для 5 студентов. Количество сданных экзаменов должно колебаться от 1 до 5. Напишите скрипт, который позволяет получить по фамилии студента количество сданных им экзаменов и их список с оценками. Фамилию студента передавать в скрипт как параметр через протокол GET.
7. Расширить обработку в задании 6. В качестве параметров у вас могут передаваться либо фамилия студента, либо название дисциплины. Для первого случая обработка остается такая же, как в задании 6. При передаче в качестве параметра названия дисциплины требуется вывести список всех студентов, которые сдали данную дисциплину с указанием оценки, которую студент получил на экзамене.
8. Для каждой группы задан перечень экзаменов, вынесенных на сессию. Список задан в виде массива, ключом которого является номер группы, а значением -- массив предметов, вынесенных для данной группы на сессию.
9. Задан массив «Сессия» для 4 студентов, каждый из которых сдавал не менее 3 экзаменов.
10. Задано расписание занятий на текущую неделю для конкретной аудитории. Считаем, что в качестве аудитории выбрана аудитория на одну группу, поэтому на каждой паре в ней могут проходить занятия только для конкретной группы. Допустим, это расписание может быть представлено в виде сложного массива.
11. Создать с использованием оператора Array массив, соответствующий расшифровке цветов радуги с помощью ключевой фразы «Каждый охотник желает знать, где сидит фазан». Значениями должны стать слова фразы, ключами должны стать соответствующие цвета.
12. Напишите PHP-скрипт, в котором создается одномерный массив, содержащий 6 элементов со следующими ключами
Практическое занятие №13
Тема: Правила работы с базой данных Мysql
Цель работы: создать базу данных и применять во всех областях трудовой деятельности.
Указание к работе: MySQL на сегодняшний день является одним из наиболее востребованных и распространенных для управления базой данных для применения в сети. Он редко используется для больших объемов информации, однако отлично подходит для сайтов самого различного размера и направленности.
Продолжим разговор о СУБД MySQL. MySQL - это реляционная система управления базами данных. То есть данные в ее базах хранятся в виде логически связанных между собой таблиц, доступ к которым осуществляется с помощью языка запросов SQL .
MySQL - свободно распространяемая система, т.е. платить за ее применение не нужно.
Кроме того, это достаточно быстрая, надежная и, главное, простая в использовании СУБД, вполне подходящая для не слишком глобальных проектов.
Работать с MySQL можно не только в текстовом режиме, но и в графическом. Существует очень популярный визуальный интерфейс (кстати, написанный на PHP) для работы с этой СУБД. Называется он PhpMyAdmin.
Этот интерфейс позволяет значительно упростить работу с базами данных в MySQL .
В текстовом режиме работа с базой данных выглядит просто как ввод команд в командную строку , а результаты выборок возвращаются в виде своеобразных таблиц, поля в которых налезают друг на друга, если данные не помещаются на экран (рис 10.3).
PhpMyAdmin позволяет пользоваться всеми достоинствами браузера, включая прокрутку изображения, если оно не умещается на экран. Многие из базовых SQL -функций работы с данными в PhpMyAdmin сведены к интуитивно понятным интерфейсам и действиям, напоминающим переход по ссылкам в Internet. Но, тем не менее, стоит все же поработать и в текстовом режиме.
Рис. 10.3. Работа с MySQL в командной строке. Результат обработки команды show databases
Перед тем как переходить к детальному изучению языка SQL, несколько слов об установке MySQL и подготовке к работе. Если вы не собираетесь заниматься администрированием сервера, то информация, приведенная ниже, пригодится вам только для общего развития. Итак, устанавливается MySQL очень просто - автоматически, пару раз нажмите OK, и все.
После этого вы можете зайти в директорию, где лежат файлы типа mysql.exe, mysqld.exe и т.п. (у нас под Windows XP это c:\mysql\bin ) Последний файл запускает Mysql-сервер.
В некоторых системах сервер запускается в виде сервиса. После запуска сервера следует запустить mysql-клиент, запустив программуmysql.exe. Здесь даже пароля не спросят. Более того, если вы наберете
shell> mysql.exe -u root
или
shell>mysql -u root mysql
то получите все права администратора mysql сервера. Кстати, выполнять эти команды надо, находясь в той директории, где лежат файлыmysql.exe.
Для начала, не вдаваясь в подробности команд, исправим эти два недочета (отсутствие пароля у администратора и возможность входа анонимным пользователям):
shell> mysql -u root mysql
mysql> UPDATE user SET Password=PASSWORD('new_password')
WHERE user='root';
mysql> DELETE FROM user WHERE user='';
mysql> FLUSH PRIVILEGES;
Все данные о пользователях MySQL хранит в таблице user в специальной базе данных mysql, доступ к которой имеет толькоадминистратор сервера. Поэтому, чтобы изменить какой-либо пароль, нужно изменить эту таблицу.
Пароль задается с помощью функцииPASSWORD, которая кодирует введенные данные.
Кроме изменения пароля администратора, нужно еще удалить всех пользователей, не имеющих логина (команда DELETE ). Команда Flush Privileges заставляет вступить в действие изменения, произошедшие в системной базе данных (mysql).
Теперь создадим базу данных, с которой будем работать (мы все еще работаем как администратор сервера):
mysql>create database book;
Как можно заметить, все команды в MySQL заканчиваются точкой с запятой. Если вы забыли поставить этот знак, то выдается приглашение его поставить до тех пор, пока это не будет сделано:
mysql> show tables
->
->
Теперь последнее действие - создадим простого пользователя, предоставим ему доступ к созданной базе данных, и начнем работать.
mysql> GRANT ALL PRIVILEGES ON book.* TO nina@localhost
IDENTIFIED BY '123';
Команда GRANT наделяет пользователя nina, зашедшего на сервер с этой же машины (c localhost) и идентифицируемого паролем "123", определенными правами (в данном случае всеми) на все таблицы базы данных book.
Теперь мы можем выйти и зайти как пользователь nina с соответствующим паролем:
shell>mysql -u nina -p
Enter password: ***
Welcome to the MySQL monitor!...
mysql>
Если вы собираетесь пользоваться базой данных на чужом сервере, то его администратор проделает все описанные выше действия за вас, т.е. все настроит и создаст пользователя и базу данных.
В следующей главе описаны команды языка SQL, которые пригодятся для работы с данными, хранящимися в СУБД MySQL.
1. Язык SQL
Итак, мы в общих чертах познакомились с основными понятиями теории баз данных, установили и настроили для работы MySQL. Теперь самое время научиться манипулировать данными, хранящимися в базах данных.
Для этого нам понадобится SQL - структурированный языкзапросов. Этот язык дает возможность создавать, редактировать и удалять информацию, хранящуюся в базах данных, создавать новые базы данных и многое другое. SQL является стандартом ANSI (Американский национальный институт стандартов) и ISO (Международная организация по стандартизации).
Первый международный стандарт языка SQL был принят в 1989 г., его часто называют SQL/89. Среди недостатков этого стандарта выделяют в первую очередь то, что многие важные свойства он устанавливал как определяемые в реализации.
Отсюда произошло множество расхождений в реализациях языка разными производителями. Кроме того, высказывались претензии по поводу отсутствия в этом стандарте упоминаний о практических аспектах языка, таких как его встраивание в язык программирования Си.
Следующий международный стандарт языка SQL был принят в конце 1992 г. И стал называться SQL/92. Он получился гораздо более точным и полным, чем SQL/89, хотя и не был лишен недостатков.
В настоящее время большинство систем почти полностью реализуют этот стандарт. Однако, как известно, прогресс не остановишь, и в 1999 году появился новый стандарт SQL:1999, также известный какSQL3. SQL3 характеризуется как "объектно-ориентированный SQL " и является основой нескольких объектно-реляционных систем управления базами данных (например, ORACLE8 компании Oracle, Universal Server компании Informix и DB2 Universal Database компании IBM).
Этот стандарт является не просто слиянием SQL-92 и объектной технологии. Он содержит ряд расширений традиционного SQL, а сам документ составлен таким образом, чтобы добиться более эффективной работы в области стандартизации в будущем.
Если говорить о MySQL, то она соответствует начальному уровню SQL92, содержит несколько расширений этого стандарта и стремится к полной поддержке стандарта ANSI SQL99, но без ущерба для скорости и качества кода.
Далее, говоря об основах языка SQL, будем придерживаться его реализации в СУБД MySQL.
Задания к работе
1. Создать базу данных ателье мод
2. Создать базу данных медицинского центра.
3. Создать базу данных пресслужбы.
4. Создать базу данных факультета.
5. Создать базу данных «Фотостудии».
6. Создать базу данных отделения социальной защиты.
7. Создать базу данных компании «1000» дверей.
8. Создать базу данных фирмы «Лукойл».
9. Создать базу данных фирмы «Связной».
10. Создать базу данных библиотеки.
11. Создать базу данных рекламного агентства.
12. Создать базу данных оптового склада.
Практическое задание №14
Тема: Использование операций select, insert, update, delete
Цель работы: изучить структуру операций select, insert, update, delete, научиться работать и сортировать элементы.