- •Рецензенты:
- •Введение 7 Глава 1. Создание Web‑страниц, html, vbSript 9
- •Глава 2. Weв-программирование на языке php 96
- •Глава 3. Практикум по разработке сайтов и Web-программированию 155
- •Глава 1. Создание Web‑страниц, html, vbSript
- •1.1. Обзор средств и технологий создания Web‑страниц и Web-приложений
- •1.1.1. Языки описания документов
- •1.1.1.2. Динамический html.
- •1.1.1.3. Язык гипертекстовой разметки xml.
- •1.1.1.5. Язык vrml
- •1.1.1.6. Мультимедйные средства и редакторы
- •1.1.2. Языки и технологии Web-программирования
- •1.1.2.1. Клиентские приложения
- •1.1.2.2. Серверные приложения
- •1.1.2.3. Поддержка состояния
- •1.1.3. Системы управления контентами сайта (cms)
- •1.1.5. Использование поисковых возможностей Интернет
- •1.2. Основы html
- •1.2.1. Правила написания
- •1.2.2. Структура документа
- •1.2.3. Форматирование текста
- •1.2.4. Атрибуты выравнивания текста и управления цветом
- •1.2.5. Шрифты
- •1.2.6. Списки
- •1.2.7. Изображения
- •1.2.8. Таблицы
- •1.2.9. Якорь (элемент привязки документов, их частей, почты)
- •1.2.10. Фреймы
- •1.2.11. Формы, управляющие элементы
- •1.2.12. Использование компонентов ActiveX
- •1.2.13. Дополнительные теги
- •1.2.14. Листы стилей
- •1.3. Клиент и сервер
- •1.4. Создание asp‑файла
- •1.5. Основы создания сценариев
- •1.6. Управление браузером
- •1.6.1. Объект Window
- •1.6.2. Объект Frame
- •1.6.3. Объект Location
- •1.6.4. Объект Navigator
- •1.6.5. Объект History
- •1.6.6. Объект Document
- •1.6.7. Объект Links
- •1.6.8. Объект Anchors
- •1.6.9. Объект Forms
- •1.6.10. Объект Elemеnts
- •1.6.10.1. Кнопки (Button, Reset, Submit)
- •1.6.10.2. Переключатели (CheckBox, Radio)
- •1.6.10.3. Поля ввода (Text, TextArea, Password)
- •1.6.10.4. Списки выбора (Select)
- •1.7. Объекты asp
- •1.8. Работа с текстовыми файлами
- •1.9. Работа с базами данных
- •1.10. Визуальный редактор html‑документов Dreamweaver
- •1.10.1. Палитра основных объектов
- •1.10.2. Настройка Dreamweaver
- •1.10.3. Структура и размещение файлов
- •1.10.4. Создание заготовки html‑документа
- •1.10.5. Создание пустой таблицы
- •1.10.6. Форматирование ячеек таблицы
- •1.10.7. Размещение картинки
- •1.10.8. Создание меню
- •1 .10.9. Форматирование текста
- •1.10.10. Режимы работы объектов
- •1.10.11. Команды
- •1.10.12. Анимация
- •Вопросы для самопроверки и контроля
- •Глава 2. Weв-программирование на языке php
- •2.1. Основные положения
- •2.1.1. Среды разработки
- •2.1.2. Настройка php
- •2.1.3. Правила написания программы
- •2.2. Типы данных и переменные
- •2.2.1. Типы данных
- •2.2.2. Переменные
- •2.3. Выражения, операции и операторы
- •2.3.1. Выражения и операции
- •2.3.2. Операторы
- •2.4. Функции
- •2.5. Массивы
- •2.6. Объектно-ориентированное программирование
- •2.6.1. Объявление класса
- •2.6.2. Основные стандартные функции
- •2.7. Файлы
- •2.7.1. Открытие и закрытие файлов
- •2.7.2. Запись в файл
- •2.7.3. Чтение из файла
- •2.7.4. Запуск внешних программ на сервере
- •2.7.5. Работа с файловой системой
- •2.7.6. Работа с каталогами
- •2.8. Регулярные выражения и строки
- •2.8.1. Регулярные выражения
- •2.8.2. Стандартные интервальные выражения (символьные классы)
- •2.8.3. Функции поиска в стиле posix
- •2.8.4. Строковые функции
- •2.8.5. Преобразование текста в html
- •2.9. Динамическое создание страниц
- •2.9.1. Простые ссылки
- •2.9.2. Файловые компоненты (шаблоны)
- •2.10. Формы
- •2.10.1. Элементы для ввода информации.
- •2.10.2. Элементы форм, ориентированные на ввод с помощью мышки
- •2.10.3. Проблема выравнивания полей для различных браузеров и экранов дисплеев
- •2.11. Базы данных
- •2.11.1. Стандартные функции рнр для работы с MySql
- •2.11.2. Работа с сервером баз данных с различными субд через odbc
- •2.11.3. Другие субд
- •2.12. Шаблоны
- •2.12.1. Основные понятия
- •2.12.2. Схема построения шаблона
- •1) Регистрация файлов
- •2) Регистрация переменных
- •3) Обработка файла
- •4) Вывод файла
- •2.14. Безопасность
- •2.14.1. Проблемы конфигурации
- •2.14.2. Маскировка файлов данных и конфигурационных файлов
- •2.14.3. Хранение файлов за пределами корневого каталога документов
- •2.14.4. Безопасность данных
- •2.14.5. Шифрование данных
- •2.14.6. Аутентификация пользователя
- •2.15. Рекомендации
- •2.15.1. Программирование на php
- •2.15.2. Использование MySql
- •Вопросы для самопроверки и контроля
- •Глава 3. Практикум по разработке сайтов и Web-программированию
- •3.1. Разработка учебного сайта заказов на авиабилеты Приведем пример разработанного учебного сайта (рисунок 3.1.1).
- •3.2. Разработка Web-приложений на php для ведения таблиц в базе данных с субд MySql
- •3.2.1. Таблица единиц измерения
- •3.2.2. Таблица успеваемости студентов
- •3.3. Разработка Web-приложения на php для ведения таблицы единиц измерения в базе данных с субд Access
- •3.4. Разработка Web-приложения на php для поиска и вывода оценок студента из базы данных успеваемости с субд Access
- •3.5. Разработка Web-приложения на php по трудоустройству
- •3.5.1. Постановка задачи
- •3.5.2. База данных
- •3.5.3. Программа формирования и ведения резюме (Vipuskniki.Php).
- •3.5.4. Функция проверки правильности даты (proverkadati.Php)
- •3.5.5. Функция проверки номера года (proverkagoda)
- •3.5.6. Функция проверки натурального числа (proverkahisla)
- •3.5.7. Подпрограмма чтения поля с фотографией (VivodFoto.Php)
- •3.5.8. Программа ввода параметров поиска записей-резюме
- •3.5.9. Программа поиска записей-резюме (ObrabRabotodateli.Php)
- •3.5.10. Программа переноса сообщений работодателей кандидатам (ObrabRabotodateli2.Php)
- •3.6. Задачи для программирования
- •3.6.1. Формирование форм
- •3.6.2. Работа с базой данных
- •3.6.3. Дополнительные задачи
- •3.6.3.1. Циклы
- •3.6.3.2. Массивы
- •3.6.3.3. Функции
- •3.6.3.4. Формы
- •3.6.3.5.Файлы
- •3.6.3.6. Строки
- •3.6.3.7. Графика
- •3.6.3.8. Субд MySql
- •3.7. Контрольные работы
- •3.7.1. Разработка учебного сайта
- •3.7.2. Разработка учебного Web-приложения по ведению базы данных
- •Глава 4. JavaScript Введение
- •События JavaScript
- •Показать и скрыть элемент с текстом
- •Динамическая подгрузка html контента на JavaScript
- •Функция Confirm в JavaScript
- •Таймер на JavaScript
- •Анимация JavaScript
- •Калькулятор стоимости на JavaScript
- •Подсчет количества символов на JavaScript
- •4.1. Основы языка
- •Приложение 1. Ответы на вопросы для самопроверки
- •Приложение 2. Вопросы к экзамену или зачету.
- •Предметный указатель
- •Библиографический список
- •Плещёв Владимир Васильевич Разработка сайтов и Web-программирование:
- •С примерами и упражнениями
2.15. Рекомендации
2.15.1. Программирование на php
Загрузка. Пожалуйста, подождите...
Просмотров: 5983
Автор: AlexanderMS
Изменил: КазКиберГетик
85
1
2
3
4
5
(голосов: 2)
Давайте содержательные имена, которые упрощают чтение и понимание программного кода.
Поддерживайте один стиль именования переменных и функций.
Делайте идентификаторы констант в верхнем регистре.
Разбивайте код на фрагменты меньшего размера.
Документируйте свой код. В заголовках функций, действия которых могут быть не вполне очевидными, расскажите о том, что ожидается на входе и на выходе методов, а так же об их назначении. Если код настолько запутан, что вам приходится описывать то, что он делает, задумайтесь – возможно, имеет смысл переработать этот код, чтобы упростить его понимание. Развитие привычки к использованию хороших имен, а также методов и структур небольшого размера, сделает ваш код более читабельным и избавит вас от необходимости комментирования его действий. Хорошая привычка: документирование функций и классов.
Обрабатывайте ошибки. Хорошая привычка состоит в нахождении разумного баланса между достаточным объемом обработки ошибок и отказом от излишнего совершенствования своего кода, которое может никогда не закончиться. Плохая привычка: полное отсутствие обработки ошибок, например, отсутствие проверки входных параметров, значений полей. Обрабатывайте исключения как можно ближе к месту возникновения проблемы.
Не пользуйтесь операцией «копировать и вставить», которая способствует «разрастанию» схожих фрагментов кода. Нужно переписать копируемый фрагмент кода, чтобы обеспечить его повторное использование, например, написать функцию или отдельный фрагмент и вызывать его оператором включения (Include) содержимого файла. Размещение кода в одном месте существенно упрощает его последующее сопровождение, поскольку изменения необходимо производить только в одной точке.
Используйте функцию print() вместо printf() в случаях, когда выводятся неформатированные данные.
Минимизируйте число временных переменных - они должны использоваться несколько раз и повышать читабельность кода.
Минимизируйте число функций пользователя, используйте стандартные функции.
Не объединяйте код HTML (интерпретируемый на стороне клиента) и код PHP (выполняемый сервером) в один большой файл.
Не используйте устаревшие синтаксис и функции.
2.15.2. Использование MySql
Наличие флага NULL, увеличивает объем данных при хранении на диске. И нагружает индексы. Определяйте типы полей как NOT NULL.
IP-адреса лучше всего хранить как UNSIGNED INT и использовать MySQL-функции INET_ATON() и INET_NTOA().
VARCHAR имеет переменную длину в файле. Занимает столько места сколько записано данных. При UPDATE если данных стало больше - выделяется место в другом месте файла. Это создает дополнительную нагрузку и является причиной фрагментации. Используйте VARCHAR если данные обновляются редко, либо используется сложная кодировка, например UTF-8. Идеально для хранения неизменяемых данных.
CHAR имеет фиксированную длину в файле. Фрагментация ему не страшна. CHAR полезен когда нужно хранить короткие строки приблизительно одинаковой длины. Частое обновление не ведет к фрагментации. Старайтесь использовать CHAR, сортировка по такому полю производится быстрее.
Используйте TIMESTAMP, он занимает на диске меньше места.
Не используйте JOIN между CHAR/VARCHAR и ENUM.
Применять значения по умолчанию (DEFAULT). При вызове запроса INSERT в таблицу будут записываться только те поля, значения которых отличаются от DEFAULT.
Используйте настолько малые типы INT, насколько это возможно.
Если у вас нет записей с переменной длиной (ни одного поля с типом VARCHAR, BLOB или TEXT), то таблица сохраняется в формате
постоянной длиной записи. Это несколько расходует память, но намного повышает скорость работы.
При использовании нескольких последовательных INSERT запросов, лучше все данные указать в одном INSERT, чем делать несколько INSERT.
При загрузке данных в таблицу лучше использовать LOAD DATA INFILE, чем INSERT, такой метод в 20 раз быстрее.
Если ожидается много запросов INSERT или UPDATE, работающих одновременно, то для большей скорости рекомендуется приметь LOCK TABLES.
Время от времени нужно дефрагметировать таблицы. Это делается утилитой isamchk с опциями - evi.
Все индексы хранятся в двоичном дереве. В строковых типах автоматически происходит сжатие начальных и конечных пробелов. Рекомендует всегда указывать индексы при создании таблиц для полей сортировок, группировок и поиcка записей.
В условиях WHERE задавайте вместо функций переменные и/или константы.
Используйте EXPLAIN для ваших запросов SELECT.
Используйте LIMIT 1, если нужно получить уникальную строку в запросе SELECT.
Не используйте ORDER BY RAND().
Старайтесь не использовать SELECT *.
Рекомендуется использование в каждой таблице поля id, для которого установлены свойства PRIMARY KEY, AUTO_INCREMENT, и оно имеет тип из семейства INT. Предпочтительно – UNSIGNED. Даже в вашей таблице есть поле с уникальным именем пользователя, не делайте его основным ключом. Поля с типом VARCHAR медленно работают в качестве основных ключей. Также структура вашей базы данных будет лучше, если в ней внутри использовать ссылки на записи на основании id.
Используйте ENUM вместо VARCHAR. Столбцы типа ENUM очень компактные и быстрые. Они хранятся в базе данных как и TINYINT, но еще они могут содержать строчные значения.
Изучите предложения PROCEDURE ANALYSE(). Она позволяет MySQL анализировать структуру столбцов и действительных данных в вашей таблице и на основании анализа выдавать "предложения". Это действует только если в вашей таблице есть реальные данные, так как их наличие играет существенную роль при принятии решений.
Выбирайте правильный механизм хранения данных. Есть два основных механизма хранения
1) MyISAM отлично подходит для приложений с большой нагрузкой по чтению, но он не очень хорошо масштабируется при наличии большого количества записей - вся таблица будет заблокирована и ни один процесс не сможет ничего прочитать пока запрос не завершится. MyISAM быстро выполняет вычисления для запросов типа SELECT COUNT(*).
2) InnoDB является более сложным механизмом хранения данных, и он может быть более медленным, чем MyISAM для большинства маленьких приложений. Но он поддерживает блокирование строк, что лучше для масштабирования таблиц. Также он поддерживает некоторые дополнительные особенности, такие как транзакции.
Не рекомендуется использовать без консультации с системным администратором функции постоянного соединения mysql_pconnect().
Если запрос оставляется вручную, то все числовые параметры должны быть приведены к нужному типу, а все остальные параметры должны быть обработаны функцией mysql_real_escape_string() и заключены в кавычки или в апосторофы и в них должны быть экранированы слешами спецсимволы.
Пример. $z=”SELECT * FROM table WHERE name = 'Д\'Артаньян'”
Распространенной ошибкой является применение фунции stripslashes при получении данных из базы.
Однако для простоты и надёжности можно и с числами работать, как со строками (проскольку mysql всё равно преобразует их к нужному типу). Таким образом, любые данные, вставляемые в запрос, рекомендуется прослешивать и заключать в кавычки.
Имена полей и таблиц рекомендуется заключать в обратные одинарные кавычки - "`" (клавиша с этим символом находится на стандартной клавиатуре слева от клавиши "1") Ведь имя поля может совпадать с ключевыми словами mysql, но если мы используем обратную кавычку, то MySQL поймёт всё правильно.
Пример. SELECT * FROM `table` WHERE `date` = '2006-04-04'
Обратные кавычки слешами не экранируются.
