Mysql сортировка по двум полям. Сортировка данных в SQL (ORDER BY). Сортировка выбранных данных

PHP (P HP: H ypertext P reprocessor , задумчивый препроцессор

Гипертекста ) - скриптовый язык программирования, oриентированный на web.

B 1 yрокe познакомимся с основным синтаксисом, а так же напишем свой первый скрипт.

Основы синтаксиса:

-
- начало и конец скрипта
оператор присваивания - =

Вывод текстовой информации - echo (может выводить html-код)

While(условие цикла){действие} - цикл
- if(условие){действие выполняемое при неверности условия}else{действие выполняемое при неверности условия} - условие
-

Урок 1. Создание первого скрипта

Как вы видите скрипт состоит из одной строчки.

Что бы выполнить скрипт необходимо соответствующее ПО, для пользователей Windows я рекомендую Denwer (http://denwer.ru)
После установки Denwera создаем в каталоге hosts папку Script.test, в которой в свою очередь создаем папку

WWW. В папке WWW создаем файл index.php? в который переносим содержимое нашего файла.

После сохранения файла перезапустите Denwer. Затем в строке браузера наберите script.test

И вауля! Мы видем надпись Hello World!

Как ненадо писать Hello World:

Hello World Не пишется так

Так:

Ну уж точно не так:

Завершение.

На этом наш урок подошел к концу, ну а в завершении небольшая подборка полезных ссылок:
denwer.ru - сайт откуда можно скачать Denwer
ru.wikipedia.org/wiki/PHP - Что такое PHP
http;//php.net - самоучитель по PHP

Теги: PHP

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит

Представляю Вашему вниманию вольный перевод статьи 30+ PHP Best Practices for Beginners

PHP является самым распространенным языком программирования для Интернета. Вот тридцать лучших советов для начинающих, которые помогут твердо усвоить основы.

1. Подружитесь с руководством по PHP

Если вы начинающий в PHP, то пришло время ознакомиться с удивительным руководством по PHP . Руководство по PHP невероятно полное и имеет действительно полезные комментарии к каждой статье. Прежде чем задавать вопросы или пробовать решить вопрос самому, обращайтесь прямиком к руководству. Есть большая вероятность, что ответ на ваш вопрос уже содержится в статьях на сайте PHP.net.

2. Включите вывод ошибок

6. Используйте отступы и пробелы для удобочитаемости

Если вы не используете отступы и пробелы в коде, результат выглядит как искусство Jackson Pollack (американский художник, идеолог и лидер абстрактного экспрессионизма, оказавший значительное влияние на искусство второй половины XX века). Убедитесь, что ваш код читаемый и в нем легко найти нужный кусок кода, потому что скорей всего вам придется его дорабатывать в будущем. IDE и продвинутые текстовые редакторы могут добавлять отступы автоматически.

7. Делайте код "ступенчатым"

Это означает ничто иное как отделение разных компонентов кода в отдельные части. Это позволит легко изменять код в будущем.

8. Всегда используйте

Зачастую программисты пытаются использовать сокращенную форму объявления PHP скриптов. Вот несколько примеров:

<% echo "Hello world"; %>

Хотя это и сокращает запись на несколько символов, все эти методы остаются для совместимости и неофициальны. Придерживайтесь стандартного это будет гарантировать поддержку во всех будущих версиях.

9. Используйте осмысленные имена, в соответствии соглашением об именовании

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

10. Комментарии, Комментарии, Комментарии

Отдельно от использования отступов и разделения кода, вы так же можете использовать комментарии для описания своего кода. Позже вы скажете себе спасибо, когда понадобится вернуться и найти что-то в коде, или когда вы не можете вспомнить что делает определенная функция. Это так же пригодится всем кто будет просматривать ваш код.

11. Установите MAMP/WAMP

MySQL это самый популярный сервер баз данных, используемый с PHP (если не единственный). Если вы хотите организовать локальную среду разработки для тестирования своих PHP приложение, присмотритесь к MAMP (Mac) или WAMP (Windows). Установка MySQL на ваш компьютер может оказаться довольно утомительным процессом, а оба этих пакета уже содержат MySQL. Чисто и просто.

12. Ограничивайте свои скрипты

Хорошей практикой является установка ограничения времени выполнения ваших PHP скриптов. Бывают случаи когда происходит сбой в работе скрипта, и если это случается, вы, возможно захотите использовать ограничение времени выполнения скрипта , что позволит предотвратить ошибки связанные с бесконечными циклами и таймаутом подключения к базе данных. set_time_limit позволяет установить ограничение на время выполнения скрипта в секундах (по-умолчанию это значение равно 30). После превышения этого времени, генерируется фатальная ошибка.

13. Используйте объекты (или ООП)

14. Различайте двойные и одиночные кавычки

Наиболее эффективно использовать одиночные кавычки в строках, где не нужно парсить "escaped" символы и другое, что может содержаться в двойных кавычках. Используйте одиночные кавычки везде где только можно

Замечание: На самом деле это не совсем так. Тесты показывают, что если строка не содержит переменных, то двойные кавычки дают выигрыш в производительности.

15. Не выкладывайте phpinfo() в вашей корневой директории сервера

(выводит информацию об интерпретаторе PHP) это замечательная штука. Создайте простой PHP файл с таким содержанием

и положите его куда-нибудь на сервер, вы сможете увидеть исчерпывающую информацию о вашем сервере. Однако многие начинающие помещают файл, содержащий phpinfo(), в корневую директорию веб-сервера. Это действительно не безопасно, увидевший информацию о сервере может, потенциально, навредить ему. Убедитесь, что phpinfo() находится в надежном месте, а лучше удалите его.

16. Никогда не доверяйте пользователям

Если в вашем приложении есть поля для ввода информации пользователем, то вы должны допускать, что пользователь попытается ввести опасный код. (Это не значит, что все пользователи злоумышленники. Просто лучше так думать.) Для того чтобы избежать попыток взлома, всегда пробуйте инициализировать свои переменные следующими строками.

17. Храните пароли в зашифрованном виде

Многие начинающие PHP программисты хранят важные данные в базе данных, такие как пароли, в открытом виде. Посмотрим как использовать MD5 для шифрования паролей перед тем как записать их в базу данных.

Echo md5("myPassword"); // выведет -

Замечание: Имейте ввиду, что MD5 хеши уже научились взламывать. Они добавляют безопасности, однако атакующий может расшифровать хэш с помощью "радужных таблиц". Для повышения безопасности добавляйте "соль" (salt). "Соль" добавляет дополнительные символы к пользовательской строке.

18. Используйте инструменты визуального отображения базы данных

Если у вас возникают трудности с выполнением и изменением данных в PHP при работе с базой данных, попробуйте использовать визуальные средства. Пользователи MySQL могут использовать DBDesigner и MySQL Workbench для отображения данных в базе.

19. Используйте буферизованный вывод

Буферизованный вывод это простой способ повысить производительность выших PHP скриптов. Без буферизованного вывода ваши скрипты отображают HTML код частями. Добавляя буферизованный вывод, PHP сохраняет HTML код как переменную и выводит его в браузер одним куском.

Для включения буферизации вывода просто добавьте ob_start() в начале файла.

Замечание: Считается хорошим тоном добавлять функцию ob_end_flush(); в конец документа. P.S. Хотите сжать HTML? Просто замените ob_start(); на ob_start("ob_gzhandler");

За дополнительной информацией обратитесь сюда

untitled

20. Защищайте скрипты от SQL-инъекций

Если вы не используете экранирование символов в сроках с SQL-запросами, то ваше приложение подвержено SQL-инъекциям. Вы можете избежать этого используя mysql_real_escape_string , или подготовленные (заранее компилированные) запросы.

Пример использования mysql_real_escape_string:

$username = mysql_real_escape_string($GET["username"]);

и подготовленной строки:

$id = $_GET["id"]; $statement = $connection->prepare("SELECT * FROM tbl_members WHERE id = ?"); $statement->bind_param("i", $id); $statement->execute();

Используя подготовленные конструкции мы предотвращаем прямую запись пользовательских данных в запрос. Вместо этого мы используем, метод "bind_param" для связывания значений с переменными в запросе. Более безопасно, быстрее, особенно при выполнении нескольких операторов CRUD (create read update delete - "Создание чтение обновление удаление" - прим.) за раз.

21. Используйте ORM

Если вы пишите объектно-ориентированный код в PHP, можете использовать объектно-реляционное отображение (ORM). ORM позволяет преобразовывать данные между реляционной базой данных и объектно-ориентированным языком программирования. Если коротко: ORM позволяет работать с базой данных так же как и с классами и объектами в PHP.

Одна из многих ORM-библиотек для PHP Propel , а так же ORM присутствует в PHP-фрейворках, например в CakePHP .

22. Кэшируйте страницы, использующие базу данных

Кэширование страниц, использующих базу данных снижает нагрузку и повышает производительность скрипта. Это позволяет создавать и использовать статические файлы с помощью функции ob_start(). Пример с Snipe.net :

// начало скрипта $cachefile = "cache/".basename($_SERVER["SCRIPT_URI"]); $cachetime = 120 * 60; // 2 часа // используем кэш, если значение меньше $cachetime if (file_exists($cachefile) && (time() - $cachetime < filemtime($cachefile))) { include($cachefile); echo ""; exit; } ob_start(); // начало буферизованного вывода // ваш скрипт и HTML должен быть здесь // конец скрипта $fp = fopen($cachefile, "w"); // открываем файл кэша для записи fwrite($fp, ob_get_contents()); // сохраняем содержимое буферизованного вывода в файл fclose($fp); // закрываем файл ob_end_flush(); // отправляем данные браузеру

Эта часть кода использует кэшированную версию страницы, если страница не "старше" 2х часов.

23. Используйте системы кэширования

Если вы хотите использовать более надежную систему кэширования нежели приведенный скрипт выше, используйте следующие PHP-скрипты.

  • Netbeans есть возможность профилирования PHP.

    27. Стандарты кодирования

    После того как вы освоитесь в PHP, можно переходить к изучению стандартов кодирования. Существуют различия между стандартами (Zend , Pear), выберите свой и придерживайтесь ему всегда.

    28. Держите функции вне циклов

    Вы убиваете производительность, когда помещаете функции в цикл. Чем длительнее цикл, тем больше время выполнения вы получаете. Если хотите сократить время выполнения - выносите функции из циклов.

    Замечание: Используя эту логику, попробуйте вынести как можно больше операций из цикла. Подумайте, действительно ли вам необходимо создавать переменную при каждой итерации цикла? Нужно ли вызывать функцию каждый раз? Конечно же нет:)

    29. Не плодите переменные

    Некоторые люди, для наглядности кода, копируют значения предопределенных переменных в переменные с короткими именами. Это ведет к избыточности и потенциально удваивает расход памяти вашим скриптом. Вот примеры плохого и хорошего использования переменных:

    $description = strip_tags($_POST["description"]); echo $description;

    Echo strip_tags($_POST["description"]);

    Замечание: Говоря на счет удвоения расхода памяти, на самом деле заблуждение. PHP реализует управление памятью на основе подхода "копирование при записи". Это означает, что вы можете присвоить одно значение нескольким переменным и не беспокоится, что данные будут дублироваться в памяти. Можно поспорить, что "хороший" пример удачный пример хорошего кода, однако он точно не быстрее.

    30. Обновляйтесь до последней версии PHP

    Хотя это и кажется разумным, многие не обновляют PHP, хотя и следовало бы. PHP 5 более производителен по сравнению с PHP 4. Проверьте ваш сервер и убедитесь, что у вас установлена последняя версия.

    31. Уменьшайте количество запросов в базе данных

    Чем меньше запросов к базе данных тем больше производительность PHP-скрипта. Такие утилиты как Stace (Unix) и Process Explorer (Windows) позволят найти избыточные процессы и устранить их.

    32. Не бойтесь спрашивать

    Только люди пытаются скрыть факт своего не знания в определенной области. Никто не хочет показаться глупым! Но как мы можем учиться не спрашивая? Чувствуйте себя свободнее используя форумы и IRC StackOverflow , спрашивайте у бывалых PHP разработчиков. На сайте PHP есть страница

1. Подружитесь со справочником по PHP

Если вы новичок в PHP, значит, пришло время познакомиться с внушающим почтение справочником PHP. Справочник по PHP невероятно исчерпывающий и содержит действительно полезные комментарии к каждой статье. Перед тем, как задавать вопросы или пытаться самостоятельно разрешить проблему, сэкономьте время и просто возьмите курс на справочник. Ответы на ваши вопросы уже удобно разместились в полезной статье на сайте PHP.net.
В данном случае мы Вам рекомендуем поискать самостоятельно справочники на русском языке, лучше php для начинающих. Будем рады, если Вы дадите ссылке на полезные справочники в комментариях к статье (Просто учитывайте, что это перевод статьи).

2. Включите отчет об ошибках

6. Делайте отступы и используйте пробелы в коде для читаемости

Если вы не используете отступы и пробелы в коде, то результат выглядит, как картина Джексона Поллака (Jackson Pollack). Обеспечьте читаемость своего кода и нормальный поиск, потому что почти наверняка в будущем вы будете делать в нем изменения. IDE и современные текстовые редакторы могут автоматически делать отступы в коде.

7. Делайте код многоуровневым

Разделение на уровни ваших приложений – это ничто иное, как разделение различных компонентов кода на части. В будущем это даст вам возможность легко изменять код.

8. Всегда используйте

Часто программисты пытаются использовать сокращения в операторах PHP. Вот как это обычно делается:

<% echo "Hello world"; %>

echo "Hello world" ;

<% echo "Hello world" ; %>

Хотя это действительно экономит несколько символов, все эти методы являются устаревшими и неофициальными. Придерживайтесь стандартного , так как это гарантированно будет поддерживаться всеми будущими версиями.

9. Используйте содержательные, последовательные названия

Именование – не только для вашего собственного удовольствия. Нет ничего хуже, чем продираться сквозь бессмысленные условные обозначения другого программиста. Помогите самому себе и другим, используя для своих классов и свойств имена, имеющие смысл.

10. Комментируйте, комментируйте, комментируйте

Кроме использования пробелов и отступов для разделения кода, вам также придется использовать встроенные комментарии, чтобы снабжать примечаниями свой код. Позже вы поблагодарите сами себя, когда придется возвращаться и искать что-либо в коде, или если вы просто не помните того, что делала определенная функция. Это также полезно для тех, кому нужно просмотреть ваш код.

11. Установите MAMP/WAMP

MySQL — самый популярный вид базы данных, используемый с PHP (хотя и не единственный). Если нужно настроить локальное окружение для разработки и тестирования ваших PHP-приложений на компьютере, предусмотрите установку MAMP (Mac) или WAMP (Windows). Установка MySQL на ваш собственный компьютер может стать утомительным процессом, а оба этих программных пакета содержат MySQL. Ловко и просто.

12. Установите лимиты своим скриптам

Установка лимита времени на PHP-скрипты – очень ответственная вещь. Бывают моменты, когда скрипты выходят из строя, и когда это произойдет, вам придется использовать свойство set_time_limit (установить лимит времени), чтобы избежать бесконечно повторяющихся циклов и истечения таймаутов времени соединения с базой данных. Set_time_limit устанавливает лимит времени на максимальное количество секунд, за которое выполняется скрипт (по умолчанию 30). По истечении этого времени возбуждается неустранимая ошибка.

13. Используйте объекты (или ООП)

Объектно-ориентированное программирование (ООП) использует объекты, чтобы представлять компоненты приложения. ООП – это не только способ разбить свой код на отдельные логические секции, оно также снижает количество повторений кода и делает намного более легким его модифицирование в будущем.

14. Поймите разницу между одинарными и двойными кавычками

Использование одинарных кавычек в строках более эффективно, так как парсеру (синтаксическому анализатору) не приходится просеивать код в поиске специальных символов (прим. перев. escape-последовательностей) и прочих вещей, что позволяют двойные кавычки. Там, где это возможно, старайтесь всегда использовать одинарные кавычки.

Возражение: Собственно, это не обязательно верно. Тесты Benchmark показывают, что при тестировании строк без переменных существуют определенные преимущества быстродействия при использовании двойных кавычек.

15. Не ставьте phpinfo() в свой Webroot

Phpinfo – чудесная вещь. Просто создав PHP-файл, в котором есть:

и пристроив его где-нибудь на сервере, вы сможете незамедлительно узнавать все об окружении своего сервера. Тем не менее, множество новичков поместит файл, содержащий phpinfo() в webroot сервера. Это чрезвычайно небезопасная практика, и если чей-то пытливый ум получит доступ, он может потенциально сглазить ваш сервер. Убедитесь, что phpinfo() находится в безопасном месте, а в качестве дополнительной меры удалите его, как только закончите.

16. Никогда, никогда не доверяйте своим пользователям

Если в приложении есть места для входа пользователей, вы всегда должны предполагать, что кто-то попробует ввести сомнительный код. (Мы не подразумеваем, что ваши пользователи — плохие люди. Это просто здравый смысл.) Отличный способ уберечь свой сайт от хакеров – всегда инициализировать свои переменные для защиты сайта от XSS-атак. На PHP.net есть пример должным образом закрытой формы с инициализированными переменными:

if (correct_user ($_POST [ "user" ] , $_POST [ "password" ] ) {

$login = true ;

if ($login ) {

forward_to_secure_environment () ;

17. Храните пароли зашифрованными

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

echo md5("myPassword"); // renders -

echo md5 ("myPassword" ) ; // renders -

Возражение: Тем не менее, помните, что хэши MD5 уже давно скомпрометированы. Безусловно, они скорее безопасны, чем нет, но с помощью гигантской “спектральной таблицы” хакеры могут восстановить ваш хэш. Для обеспечения еще большей безопасности обдумайте возможность добавления «соли» (помех в виде «белого шума»). «Соль» – это обычно дополнительный набор символов, которые вы присоединяете к пользовательской строке.

18. Используйте инструменты визуализации баз данных

Если вам кажется сложным планировать и изменять базы данных для своих PHP-приложений, можно было бы рассмотреть возможность использования инструмента визуализации баз данных. Пользователи MySQL могут работать с DBDesigner и MySQL Workbench для визуального дизайна своих баз данных.

19. Используйте буферизацию вывода

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

Для активирования функции буферизации вывода просто добавьте ob_start() как здесь в начале файла.

Возражение: Хотя это и не требуется, обычно считается хорошей практикой просто взять и прикрепить функцию “ob_end_flush();” к концу документа. P.S. Хотите также сжать HTML? Просто смените “ob_start();”на “ob_start(‘ob_gzhandler’)”;

XHTML

untitled

untitled

20. Оберегайте свой скрипт от атаки SQL-injection

Если вы не отделяете (escape) символы, использующиеся в строках SQL, ваш код уязвим для атаки SQL-injection. Избежать этого можно, используя либо функцию mysql_real_escape_string (прим. перев. для отделения символов), либо подготовленные операторы SQL (prepared statements).

Вот пример mysql_real_escape_string в действии:

$username = mysql_real_escape_string($GET["username"]);

$username = mysql_real_escape_string ($GET [ "username" ] ) ;

И подготовленного оператора:

21. Попробуйте ORM

Если вы пишете объектно-ориентированный PHP, то можете использовать OR-mapping (ORM). ORM позволяет вам преобразовывать данные между реляционными базами данных и языками объектно-ориентированного программирования. Короче говоря, ORM дает возможность работать с базами данных таким же образом, каким вы работаете с классами и объектами в PHP.

Для PHP есть множество ORM-библиотек, таких как Propel, а также ORM встроен в фреймворки PHP, такие, как CakePHP.

22. Кэшируйте страницы, управляемые базой данных

Кэширование PHP-страниц, управляемых базой данных – отличная идея для улучшения скорости загрузки и производительности своего скрипта. В действительности не так уж трудно создать и извлечь статические файлы содержимого при помощи нашего доброго друга ob_start(). Вот пример, взятый со Snipe.net:

// TOP of your script $cachefile = "cache/".basename($_SERVER["SCRIPT_URI"]); $cachetime = 120 * 60; // 2 hours // Serve from the cache if it is younger than $cachetime if (file_exists($cachefile) && (time() - $cachetime < filemtime($cachefile))) { include($cachefile); echo ""; exit; } ob_start(); // start the output buffer // Your normal PHP script and HTML content here // BOTTOM of your script $fp = fopen($cachefile, "w"); // open the cache file for writing fwrite($fp, ob_get_contents()); // save the contents of output buffer to the file fclose($fp); // close the file ob_end_flush(); // Send the output to the browser

// TOP of your script

$cachefile = "cache/" . basename ($_SERVER [ "SCRIPT_URI" ] ) ;

$cachetime = 120 * 60 ; // 2 hours

// Serve from the cache if it is younger than $cachetime

if (file_exists ($cachefile ) && (time () - $cachetime < filemtime ($cachefile ) ) ) {

include ($cachefile ) ;