Как сделать сайт на PHP самостоятельно?


Пример создания сайта на PHP

Работая программистом-разработчиком, достаточно часто, передо мной стоит задача разработки и создания сайта визитки. И как правило его содержание включает в себя 10-15 страниц. Конечно для создания простого сайта можно использовать CMS Joomla или просто сделать сайт на WordPress, но зачем стрелять по комарам из пистолета?

сайт на php

Как создать сайт на PHP

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

В первую очередь, при разработке сайта на PHP, основной акцент должен ставиться именно на безопасность. К безопасности скриптов можно отнести:

1.  Инициализация переменных;

2.  Проверка параметров передаваемых пользователем;

3.  Права файлов сценариев;

4.  И еще много, много чего другого.

Но так, как эта статья посвящена созданию простого сайта на PHP, то здесь будут приводится самые основы безопасности сценариев.

Безопасность PHP

Безопасность PHP сценариев

Как уже многим известно, структура сайта обычно состоит из основной части, заголовка (хэдера) и подвала (футера). Для начала мы создадим два файла  footer.htm и  top.htm  это и будут наши подключаемые заголовок и подвал, а потом поместим их в папку templ. Для их подключения создадим файл option.php с таким содержанием:

<?php
$pagetop = './templ/top.htm';
$pagefooter = './templ/footer.htm';
?>

Дальше нам необходимо создать два скрипта, которые будут подключать наши .htm файлы к основному сценарию index.php. Назовем их maketop.php и makefooter.php. У них будет одинаковый функционал, а именно они будут инклудить переменные из option.php. Примерно вот таким образом:


<?
//содержимое файла maketop.php, загружаем заголовок
include($pagetop);
?>


<?
//содержимое файла makefooter.php, подгружаем подвал
include($pagefooter);
?>

А теперь подключим эти файлы к общему скрипту index.php. А вот и простой пример, как это можно сделать:

<?php
include("options.php");
include("maketop.php");
include("makefooter.php");
?>

Вот у нас и получился простой движок сайта визитки на PHP. Но с точки зрения безопасности он написан не правильно. Ведь ничто не помешает хакеру обратиться к файлу maketop.php напрямую, через строку браузера. Следующий пример подключает и выводит на экран файл локальной конфигурации веб-сервера .htaccess а можно посмотреть и другие, не менее интересные файлы:)

  http://localhost/my-server/makefooter.php?pagefooter=.htaccess

 

Здесь злоумышленник может использовать метод Get, который позволяет обращаться к файлам на сервере через адресную строку браузера. Для того, что-бы защитить свой сценарий от взлома необходимо запретить изменение переменных. В нашем случае необходимо запретить прямой вызов промежуточных файлов, которые могут содержать код PHP. Ну а сделать это можно следующим образом. Для этого необходимо в коде шаблона, в самом начале веб-страницы объявить константу равную единице, и теперь наш файл index.php будет выглядеть так:


<?php
define ('PRO', 1);
include("options.php");
include("maketop.php");
include("makefooter.php");
?>

А в каждом промежуточном скрипте, а именно maketop.php и makefooter.php необходимо сделать проверку, на наличие этой константы, т. е. если она не существует (её нет), значит файл не подключается из шаблона, а вызывается напрямую через строку URL. Для этого в скрипты maketop.php и makefooter.php необходимо добавить код:


<?
//добавляем условие в maketop.php, если константа не существует,
if(!defined('PRO'))
//прерываем выполнение скрипта и выводим сообщение:)
die ('не надо ломать мой сайт!');
//загружаем заголовок
include($pagetop);
?>

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