PHP дахь динамик хуудас. PHP. Динамик хуудас үүсгэх Хуудсыг дүрслэх ердийн бүрэлдэхүүн хэсгийг бий болгох

Сүүлийн хичээл дээр бид аялалын загвар ямар блокуудаас бүрдэхийг олж мэдсэн тул ажилдаа орох боломжтой болно. Эхлээд хоёр хавтас үүсгэцгээе:

зургууд - энэ хавтсанд загвар зохион бүтээхэд ашигласан график файлууд байх болно. Учир нь Бидэнд хараахан дизайн боловсруулаагүй байгаа тул энэ хавтсанд нэг график файлыг буулгана уу, эс тэгвээс Joomla загварыг суулгахгүй бөгөөд хавтас хоосон байвал алдаа гаргах болно.

АНХААР: Загварын зургийн хавтсанд агуулгын график байхгүй!

css - энэ хавтас агуулагдах болно каскадын загварын хуудасны файлууд. Эхлээд, дотор нь хоосон template.css файлыг байрлуулъя, энэ нь сайтын элементүүдэд өөр өөр дизайны хэв маягийг хуваарилахад ашиглагдах болно.

Дараа нь та index.php үндсэн файлыг үүсгэж эхлэх бөгөөд энэ нь сайтын элементүүдийн харагдах байдлыг тодорхойлж, Joomla CMS-д янз бүрийн бүрэлдэхүүн хэсэг, модулиудыг аль блокт байрлуулахыг зааж өгөх болно. Файл нь PHP болон HTML-ийн хослол юм.

Би код бичихдээ зөвхөн Macromedia Dreamweaver ашигладаг. Маш сайн хөтөлбөр, би үүнийг эхлэгчдэд зөвлөж байна, учир нь... Хэрэв та код дээр ажиллаж байхдаа алдаа гаргасан бол програм таны алдааг тодруулах нь гарцаагүй.

Сайт дээрээс та Macromedia Dreamweaver-ийн зааварчилгааг олох болно. Хэрэв та вэбсайт хөгжүүлэх гэж байгаа бол загвар кодыг алдаагүй засварлахын тулд ядаж эхний түвшинд энэ програмыг эзэмшсэн байх ёстой.

Хуудасны элементүүдийн (блок) байрлалыг HTML код ашиглан хийдэг; ялангуяа бид DIV хаягуудыг ашиглах болно. Гэхдээ манай сайт Joomla хөдөлгүүр дээр ажиллах арга зам, i.e. Энэ нь динамик байх болно, дараа нь та PHP хэлийг ашиглах хэрэгтэй болно. Үүний тусламжтайгаар бид модулиудын гаралтын байрлалыг аль блокуудад байрлуулах, эдгээр байрлалыг юу гэж нэрлэх, блокууд нурах эсэхийг тодорхойлох болно. Бид гадаад файлуудын загварын хуудас, агуулгын хэл, сайтын хэмжээ хэрхэн өөрчлөгдөхийг тохируулах гэх мэтийг холбох болно.

index.php

Файлын толгой хэсэг

Файлын толгой хэсэг нь хэд хэдэн хэсгээс бүрдэнэ. PHP толгой кодын эхний хэсэг нь аюулгүй байдлын үүднээс файл руу шууд хандахгүй байх явдал юм.

< ?php
тодорхойлсон ("_JEXEC") эсвэл үхэх;
JHtml::_("behavior.framework" , үнэн );
$app = JFactory::getApplication() ;
?>
< ?php echo "< ?" ; ?> xml хувилбар = "1.0" кодчилол = " < ?php echo $энэ-> _тэмдэгтийн багц ?> "?>

DOCTYPE бол хөтөч нь энэ хуудсыг хэрхэн үзүүлэх, CSS-ийг хэрхэн тайлбарлахыг шийддэг маш чухал параметр юм.

< ! DOCTYPE html PUBLIC "- / / W3C/ / DTD XHTML 1.0 Strict/ / EN""http: // www.w3.org/ TR/ xhtml1/ DTD/ xhtml1- strict.dtd">

Дараах хэсэг нь глобал тохиргооноос суулгасан хэлийг татаж авдаг.

< html xmlns= "http:// www.w3.org/ 1999/ xhtml" xml:lang = " < ?php echo $энэ-> хэл; ?> " lang = " < ?php echo $энэ-> хэл; ?> " dir = " < ?php echo $энэ-> чиглэл; ?> " >

Дараа нь дэлхийн тохиргоонд тохируулсан толгойн нэмэлт мэдээллийг агуулсан кодын хэсэг юм. Та ямар ч вэб хуудасны эх кодыг хараад энэ мэдээллийг харж болно. Ялангуяа эдгээр нь таны аль хэдийн мэддэг мета шошгууд юм.

< head>
< jdoc:include type= "head" / >

Дараах толгойн мөрүүд нь Joomla CSS-ийн үндсэн загваруудын холбоосыг агуулна.

< link rel= "stylesheet" href= "< ?php echo $энэ-> baseurl ?> / templates/ system / css/ system .css" type = "текст /css" / >
< link rel= "stylesheet" href= "< ?php echo $энэ-> baseurl ?> / templates/ system / css/ general.css" type = "текст /css" / >

Загварын дизайны хэв маягийг ашиглахын тулд бид CSS хавтсанд байрлах template.css шаталсан загварын хүснэгтүүдийг агуулсан файл руу холбодог. Энэ файл одоохондоо хоосон байх нь хамаагүй, гол зүйл бол үүнийг холбох явдал юм, бид загвараа Joomla дээр суулгахдаа дараа нь дизайныг шийдэх болно. Энэ нь үр дүнг ажиглахад хялбар болгоно.

< link rel= "stylesheet" href= "< ?php echo $энэ-> baseurl ?> /загварууд/< ?php echo $энэ-> загвар ?> /css/template.css" type = "текст /css" / >

Дараах кодын хэсэг нь зүүн болон баруун байрлалд модуль байхгүй тохиолдолд зүүн эсвэл баруун баганыг нураах боломжийг бидэнд олгоно. Хэрэв хоёр баганыг буулгасан бол агуулга нь хуудасны өргөний 100% -ийг эзэлнэ. Хэрэв зөвхөн нэг баганыг оруулсан бол агуулга нь 80% -ийг эзэлдэг. Хоёр баганыг идэвхжүүлсэн тохиолдолд агуулга нь хуудасны өргөний 60% -ийг эзэлдэг.

< ?php
хэрэв ($ энэ-> countModules("зүүн ба баруун" ) = = 0) $contentwidth = "100" ;
хэрэв ($ энэ-> countModules("зүүн эсвэл баруун" ) = = 1) $contentwidth = "80" ;
хэрэв ($ энэ-> countModules("зүүн ба баруун" ) = = 1) $contentwidth = "60" ;
?>

Толгой хэсэг хаагдана

< / head>

< body>

"Хуудас" блок нь зөвхөн сайтын хуудасны дизайныг агуулдаг бөгөөд энэ нь 950px өргөнтэй байх болно.

< div id= "page" >

"Дээд" блок нь хуудасны хамгийн дээд хэсэгт байрлах бөгөөд "лого" ба "хэрэглэгч1" гэсэн хоёр блок агуулдаг.

< div id= "top" >

"Лого" bokeh дээр бид логоны график файлыг байрлуулж, үүнийг загварын хүснэгтэд зааж өгөх болно. Гэхдээ бид index.php файлд сайтын нэрийг автоматаар харуулахыг бичиж, нэрийг нь H1 хаяг дээр байрлуулдаг бөгөөд энэ нь хайлтын системийг оновчтой болгоход маш чухал юм.

< div id= "logo" >
< h1> < ?php echo $app - >getCfg("сайтын нэр"); ?>< / h1>
< / div>

Сайтын хайлтын модулийг харуулахын тулд ижил нэртэй блок дахь "хэрэглэгч1" байрлалыг тодорхойлъё.

< div id= "user1" >
< jdoc:include type= "modules" name= "user1" style= "xhtml" / >
< / div>
< / div> < ! - - конец блока top - - >

"хэрэглэгч2" байрлал дахь "хэрэглэгч2" блок дахь хэвтээ цэсийн модулийн гаралт. Хэрэв энэ байрлалд модуль байхгүй бол блок нурах болно.

< ?php if ($энэ-> countModules("user2" ) ) : ?>
< div id= "user2 " >
< jdoc:include type= "modules" name= "user2" style= "xhtml" / >
< / div>
< ?php endif ; ?>

Дараа нь сайтын толгойн блок ирдэг. Үүн дээр бид модулиудыг харуулах "толгой" байрлалыг тодорхойлох болно. Хэрэв энэ байрлалд модуль байхгүй бол блок нурах болно. Би энэ блокийн чадавхийг зориудаар өргөжүүлсэн бөгөөд үүнд зөвхөн толгойн зураг төдийгүй зургийн эргүүлэгчийг байрлуулах боломжтой болсон.

< ?php if ($энэ-> CountModules(" толгой") ) : ?>
< div id= "толгой">
< jdoc:include type= "modules" name= "толгой" style="xhtml" / >
< / div>
< ?php endif ; ?>

"Хэрэглэгч3" блок дээр бид модулиудыг гаргах "хэрэглэгч3" байрлалыг тодорхойлно.

Энэ байрлалд "user3" модулийн гаралт байхгүй бол блок нурах болно.

< ?php if ($энэ-> countModules("user3" ) ) : ?>
< div id= "user3" >
< jdoc:include type= "modules" name= "user3" style= "xhtml" / >
< / div>
< ?php endif ; ?>

Зүүн баганын блок нээгдэх бөгөөд хэрэв "зүүн" байрлалд модуль байхгүй бол нурах болно.

< ?php if ($энэ-> countModules("зүүн" ) ) : ?>
< div id= "left" >
< jdoc:include type= "modules" name= "left" style= "xhtml" / >
< / div>
< ?php endif ; ?>

Хамгийн чухал агуулгын блок нээгддэг бөгөөд энэ нь оруулсан баганын тооноос хамааран хуудасны өргөний 100%, 80% ба 60% -ийг эзэлдэг.

< div id= "content< ?php echo $contentwidth ; ?> " >

Бүрэлдэхүүн хэсгүүдэд мессежийг харуулах

< jdoc:include type= "message" / >

Агуулгын агуулгыг гаргах.

< jdoc:include type= "component" style= "xhtml" / >
< / div> < ! - - конец блока контента- - >

Баруун баганын блок нээгдэх бөгөөд хэрэв "баруун" байрлалд модуль байхгүй бол нурах болно.

< ?php if ($энэ-> countModules("баруун" ) ) : ?>
< div id= "rigth" >
< jdoc:include type= "modules" name= "right" style= "xhtml" / >
< / div>
< ?php endif ; ?>

Зохиогчийн эрхийн мэдээлэл бүхий "HTML код" модулийг харуулах зориулалттай "хөл" блокийн гаралт. Та мөн доод хэвтээ цэс эсвэл контент танилцуулах модулийг энд байрлуулж болно. Энэ "хөл" байрлалд нэгээс олон модуль гарч ирвэл блок нурах болно

< ?php if ($энэ-> countModules("footer") ) : ?>
< div id= "footer" >
< jdoc:include type= "modules" name= "footer" style= "xhtml" / >
< / div>
< ?php endif ; ?>

Сайтын хуудасны блок "хуудас", бие болон бүх код хаалттай байна.

< / div> < ! - - конец блока page- - >
< / body> < ! - - конец блока body - - >
< / html> < ! - - конец кода- - >

Бид бүрэн index.php файлыг үүсгэсэн. Одоо та ямар тушаалуудыг ашиглаж, загвар блокуудыг ямар дарааллаар харуулахыг мэдэж байна.

АНХААРУУЛГА: Загварын кодыг joomla админ самбараас уншихын тулд index.php файлыг AkelPad засварлагч дээр нээж, UTF-8 кодчилолд хадгалах ба BOM-ийн чагтыг арилгасан байх ёстой. Хэрэв та файлтай ажиллахдаа Macromedia Dreamweaver программыг ашигласан бол дээд цэснээс "Засварлах"> "Хуудасны шинж чанарууд"-ыг сонгоод Юникод (utf-8) кодчилол бүхий баримт бичгийг сонгоод "Юникод гарын үсгийг идэвхжүүлэх (BOM)" гэснийг арилгах хэрэгтэй. )”. Гэсэн хэдий ч, би Joomla админ самбараас кодыг засварлахыг зөвлөдөггүй, хэрэв та ямар нэг зүйл будилвал - Macromedia Dreamweaver програмаас ялгаатай нь буцах арга байхгүй бөгөөд та хийсэн өөрчлөлтийг үргэлж буцаах боломжтой.

Блокуудын дизайныг template.css дээр тайлбарлах болно. Гэхдээ бид Joomla 3 (joomla 2.5) дээр загварыг суулгасны дараа загварын хүснэгтүүдийг тохируулах бөгөөд үүний тулд бид үүсгэх хэрэгтэй.

Компьютерийн тухай аливаа номонд олон уншигчид шууд сонирхолгүй бүх зүйлийг эргэлзэж, үнэхээр хэрэгтэй зүйл рүү шилждэг. хүсэж байнамэдэх. Би хувьдаа ийм л зүйл хийдэг. Гэсэн хэдий ч үүнд буруу зүйл байхгүй - эхнээс нь дуустал унших шаардлагатай техникийн ном ховор байдаг. Эсвэл энэ нь таны хийсэн зүйл байж магадгүй - эхний найман бүлгийг алгасаад хамгийн сонирхолтой гарчигтай байсан тул энэ бүлгийг сонгосон уу? Ажил дээрээ өөр төсөл шатаж байхад хэн нарийн ширийн зүйлд цаг үрэхийг хүсэх вэ?

Аз болоход, ийм яаруу байдал нь таныг PHP ашиглан сайт бүтээх, вэбтэй харилцахад зориулагдсан номын хоёрдугаар хэсгийн материалыг зохих ёсоор эзэмшихэд саад болохгүй. Энэ бүлэгт та вэб хуудасны агуулгыг хэрхэн хялбархан өөрчлөх, холбоосууд болон төрөл бүрийн стандарт функцуудыг ашиглан вэбээр аялах талаар сурах болно. Дараагийн бүлэгт танилцуулсан материалыг нөхөх болно - энэ нь HTML хэлбэрээр хэрэглэгчтэй харилцах арга хэрэгслийг нарийвчлан авч үзэх болно.11-р бүлэгт мэдээллийн сантай интерфейсийн зохион байгуулалтыг тайлбарласан болно. Хоёрдахь хэсгийн үлдсэн бүлгүүдэд PHP дээр вэб програмчлалын чухал бус талуудыг авч үзэх болно.

Гэсэн хэдий ч 1-р хэсэг дэх материалыг санаж байх хэрэгтэй зайлшгүй шаардлагатай PHP-ийн ердийн мэдлэгийн хувьд. Та 1-р хэсгийг аль хэдийн уншсан гэж үзэж байгаа тул жишээнүүдэд өмнө дурдсан олон ойлголтыг ашиглах болно. Тиймээс, хэрэв та номынхоо зарим хэсгийг гүйлгэж үзвэл өмнөх бүлгүүд рүү үе үе буцаж, гүйцэх хэрэгтэй болно.

Энгийн холбоосууд

<а href = "date.php">

$link = "DATE.php";

хэвлэх"<а href = \"$link\">Өнөөдрийн огноог харах
\n"

Холбоос кодын хашилтын (") өмнө яагаад урвуу ташуу зураас (\) байгааг та гайхаж байгаа байх? PHP хэл дээрх хашилтууд нь тусгай тэмдэгтүүд бөгөөд мөрийг зааглагч болгон ашигладаг. Иймээс ишлэлүүд нь тэмдэгт мөрт байх ёстой. .

Хэрэв хашилтаас зугтах шаардлага таныг бухимдуулж байвал php.ini файл дээрээ magic_quotes_gpc горимыг идэвхжүүлээрэй. Үр дүн нь бүх хасах тэмдэг, ишлэл, урвуу зураас болон хоосон тэмдэгтүүд юм. текст дотроос автоматаар гарч ирдэг!

Өгөгдсөн жишээг хөгжүүлцгээе. Хөтөч дээрх холбоосуудын жагсаалтыг хурдан харуулахын тулд та массив ашиглаж болно:

// Хэсгийн массив үүсгэх

$contents - array("сургалт", "нийтлэл", "скрипт", "холбоо барих");

// Массивын элемент бүрийг давтаж, дараалан харуулна

төлөө ($i = 0; $i< sizeof($contents; $i++)

хэвлэх" ".$contents[$i]."
\n";

// - төгсгөлийн тэмдэглэгээний тусгай тэмдэглэгээ;

Файлын бүрэлдэхүүн хэсгүүд (загварууд)

Бид миний дуртай PHP функцуудын нэг дээр ирлээ. Загвар (вэб програмчлалтай холбоотой) нь таны хэд хэдэн хуудсанд ашиглах вэб баримт бичгийн нэг хэсэг юм. PHP функцууд шиг загварууд нь хуудасны агуулга болон програмын кодыг шаардлагагүй хуулах/хуулахаас хамгаалдаг. Сайтын цар хүрээ нэмэгдэхийн хэрээр загваруудын ач холбогдол нэмэгддэг, учир нь тэдгээр нь бүх сайтын түвшинд хялбар бөгөөд хурдан өөрчлөлт хийх боломжийг олгодог. Энэ хэсэгт энгийн загваруудыг ашиглах үед нээгддэг зарим боломжуудыг тайлбарлах болно.

Ихэвчлэн контент/кодын нийтлэг хэсгүүдийг (жишээ нь загвар) тусдаа файлд хадгалдаг. Вэб баримт бичгийг бүтээхдээ та эдгээр файлуудыг хуудасны зохих газруудад "оруулна". PHP дээр үүнд хоёр функц байдаг: include() болон require().

оруулах() ба шаардах()

РНР-ийн хамгийн гайхалтай талуудын нэг бол загвар, програмчлалын сангуудыг бүтээж, дараа нь шинэ скриптэд оруулах чадвар юм. Номын санг ашиглах нь өөр өөр вэбсайтуудын нийтлэг функцийг ашиглахад цаг хугацаа, хүчин чармайлтыг хэмнэдэг. Уншигчидтай

бусад хэлээр (C, C++ эсвэл Java гэх мэт) програмчлалын туршлагатай байх ба функцийн номын сангийн тухай ойлголт, функцийг өргөтгөх программд ашиглах талаар сайн мэддэг.

Скриптэд нэг буюу хэд хэдэн файл оруулах нь стандарт PHP-ийн require() болон include() функцуудыг ашиглан хийгддэг. Дараагийн хэсэгт харуулснаар эдгээр функц бүр нь тодорхой нөхцөл байдалд хамаарна.

Функцүүд

PHP-д PHP скриптэд файл оруулах дөрвөн функц байдаг:

  • оруулах();
  • оруулах_нэг удаа();
  • шаардах();
  • шаарддаг_нэг удаа().

Нэрний ижил төстэй байдлыг үл харгалзан эдгээр функцууд нь янз бүрийн асуудлыг шийддэг.

include() функц нь файлын агуулгыг скриптэд оруулна. include() функцийн синтакс нь:

оруулах(файлын файл]

include() функц нь нэг сонирхолтой онцлогтой - үүнийг нөхцөлт байдлаар гүйцэтгэх боломжтой. Жишээлбэл, хэрэв функцийн дуудлага if командын блокт орсон бол. тэгвэл i f нөхцөл үнэн бол л файл програмд ​​орно. Хэрэв includeO функцийг нөхцөлт тушаалд ашигладаг бол энэ нь ёстойбуржгар хаалт эсвэл өөр хязгаарлагчаар хаагдсан байна. Жагсаалт 9.1 ба 9.2-ын синтаксийн ялгааг харьцуул.

Жагсаалт 9.1. include()-ийн буруу хэрэглээ

хэрэв (зарим_нөхцөлтэй)

оруулах("text91a.txt"); өөр

оруулах("text91b.txt");

Жагсаалт 9.2. include()-ийн зөв хэрэглээ

хэрэв (зарим_нөхцөлтэй):

оруулах("text91a.txt");

оруулах("text91b.txt");

Оруулсан файлын бүх PHP код Заавал PHP шошгонд оршдог. PHP командыг файлд хадгалахад л зөв боловсруулагдана гэж битгий бодоорой:

Үүний оронд та тушаалыг зохих шошгон дээр боох хэрэгтэй бөгөөд үүнийг дараах жишээнээс харж болно.

"энэ нь буруу оруулах файл" гэж хэвлэх;

include_once() функц нь include() функцтэй ижил үйлдлийг гүйцэтгэдэг: нэг тохиолдолд файлыг програмд ​​оруулахаас өмнө аль хэдийн орсон эсэхийг шалгадаг. Хэрэв файл аль хэдийн орсон бол include_once() дуудлагыг үл тоомсорлож, хэрэв байхгүй бол стандарт файлын оруулга хийгдэнэ. Бусад бүх талаараа include_once() нь include()-ээс ялгаатай биш юм. include_once() функцийн синтакс нь:

оруулах_нэг удаа(файлын файл)

Ерөнхийдөө require() функц нь include()-той төстэй - энэ нь мөн require() дуудлагын байрлаж буй файлын загварыг агуулдаг. require() функцийн синтакс нь:

шаардах (файлын файл)

Гэхдээ require() болон include() функцуудын хооронд нэг чухал ялгаа бий. require()-аар заасан файл нь скрипт дэх require()-ын байршлаас үл хамааран скриптэд орсон байна. Жишээлбэл, хэрэв та if блок дотор requi re() гэж дуудвал нөхцөл худал бол файл скриптэд орсон хэвээр байх болно!

Ихэнх тохиолдолд сайтад ашигладаг хувьсагч болон бусад мэдээлэл бүхий файл үүсгэж, шаардлагатай бол оруулах нь тохиромжтой байдаг. Хэдийгээр энэ файлын нэр дур зоргоороо байдаг ч би үүнийг ихэвчлэн init.tpl ("initializaion.template" гэсэн үгийн товчлол) гэж нэрлэдэг. Жагсаалт 9.3 нь маш энгийн init.tpl файл ямар байдгийг харуулж байна. Жагсаалт 9.4-д init.tpl-ийн агуулгыг скриптэд require() оруулсан болно.

Жагсаалт 9.3. Эхлүүлэх файлын жишээ

$site_title = "PHP жор";!}

$contact_email = " [имэйлээр хамгаалагдсан]";

$contact_name = "WJ Gilmore";

Жагсаалт 9.4. init.tpl файлыг ашиглах

<? print $site_title; ?>

\"mai1 to:$contact_email\">$холбоо барих_нэр."; ?>

"URL fopen wrappers" горимыг идэвхжүүлсэн тохиолдолд require() руу залгах үед URL дамжуулахыг зөвшөөрнө (энэ горим нь анхдагчаар идэвхжсэн).

Сайтын хэмжээ ихсэх тусам зарим файлууд скриптэд хэд хэдэн удаа орсон байж магадгүй юм. Заримдаа энэ нь асуудал үүсгэдэггүй, гэхдээ зарим тохиолдолд файлыг оруулаад өөрчлөгдсөн хувьсагчдын утгыг дахин тохируулахад хүргэдэг. Хэрэв оруулах файл нь функцуудыг тодорхойлдог бол нэрлэх зөрчил гарч болзошгүй. Үүнийг хэлснээр бид дараагийн функц руу очно - require_once().

require_once() функц нь файлыг скриптэд зөвхөн нэг удаа оруулахыг баталгаажуулдаг. requi re_once() дуудагдсаны дараа ижил файлыг оруулах бүх оролдлогыг үл тоомсорлодог. require_once() функцийн синтакс нь:

Таны вэб програмын хэмжээ нэмэгдэж эхлэх тусам та файл оруулах функцийг илүү олон удаа ашиглаж эхлэх болно. Кодын илүүдлийг багасгахын тулд эдгээр функцууд энэ номын жишээн дээр байнга гарч ирдэг. Эхний жишээнүүдийг үндсэн загваруудыг бүтээх зарчмуудын талаар дараагийн хэсэгт авч үзнэ.

Барилгын бүрэлдэхүүн хэсгүүд

Ердийн вэб хуудасны бүтцийг тодорхойлохдоо би ихэвчлэн толгой, их бие, хөл гэсэн гурван хэсэгт хуваадаг. Дүрмээр бол ихэнх зөв зохион байгуулалттай вэбсайтууд бараг өөрчлөгдөөгүй толгойтой байдаг; үндсэн хэсэг нь сайтын хүссэн контентыг харуулдаг тул байнга өөрчлөгддөг; Эцэст нь, хөл хэсэг нь зохиогчийн эрхийн мэдээлэл, навигацийн холбоосыг агуулдаг. Толгой хэсэг шиг хөл нь ихэвчлэн өөрчлөгдөөгүй хэвээр байна. Битгий буруугаар ойлгоорой - би таны бүтээлч хүсэл тэмүүллийг дарах гэсэнгүй. Эдгээр зарчмуудыг дагаж мөрддөггүй олон гайхалтай вэбсайтуудыг би харсан. Би зүгээр л цаашдын ажлын эхлэл болох ерөнхий бүтцийг гаргахыг хичээж байна.

Гарчиг

Толгой файл (Жагсаалт 9.5-д байгаа шиг) миний PHP-ийг дэмждэг бараг бүх вэбсайтад гарч ирдэг. Энэ файлыг агуулж байна

гарчиг, холбоо барих мэдээлэл, зарим HTML хуудасны кодын бүрэлдэхүүн хэсэг гэх мэт сайтын хэмжээний мэдээлэл.

Жагсаалт 9.5. Толгой файлын жишээ

// Файл: header.tpl

// Зорилго: PhpRecipes вэбсайтын толгой файл.

$site_name = "PHPRRecipes";

$site_email = " [имэйлээр хамгаалагдсан]";

$site_path = "http://localhost/phprecipes";

<? print $site_name; ?>

// Одоогийн огноо, цагийг хэвлэх

хэвлэх огноо("F d, h:i a");

Ихэнх тохиолдолд зочдод оруулсан файлд хандах хандалтыг хязгаарладаг, ялангуяа эдгээр файлууд нь нууц мэдээлэл (жишээ нь, нууц үг) агуулсан бол. Apache дээр та http.conf эсвэл htaccess файлуудыг засварлаж тодорхой файлуудыг үзэхээс сэргийлж чадна. Дараах жишээ нь .tpl өргөтгөлтэй бүх файлыг үзэхээс хэрхэн сэргийлэхийг харуулж байна:

Захиалга зөвшөөрөх, татгалзах

127.0.0.1-ээс зөвшөөрнө

PHP болон вэб сайтын аюулгүй байдлын асуудлыг 16-р бүлэгт дэлгэрэнгүй авч үзсэн.

Ажиллаж байгаа гарчиг

Хөл хэсэг нь ихэвчлэн сайтын хуудасны доод хэсэгт байрлах мэдээлэл юм - холбоо барих мэдээлэл, холбоос, зохиогчийн эрхийн мэдээлэл. Энэ мэдээллийг тусдаа файлд байрлуулж, толгой хэсгийн нэгэн адил загвар болгон оруулж болно. Шинэ он гарахтай зэрэгцэн та зохиогчийн эрхийн мэдээллийг өөрчилж, "Зохиогчийн эрх © 2000-2001" хэлбэрт оруулах хэрэгтэй гэж бодъё. Хоёр сонголт бий: Зул сарын баярыг хэдэн зуун статик хуудсыг засварлахад зориул. эсвэлЖагсаалт 9.6-д үзүүлсэн шиг загварыг ашиглана уу. Нэг энгийн өөрчлөлт хийснээр та амралтынхаа хэвшилд эргэн орох боломжтой.

Жагсаалт 9.6.Хөлийн файлын жишээ (footer.tpl)

холбоо барих |

таны нууцлал

Хөлийн файлд $site_email глобал хувьсагчийг ашиглаж байгааг анхаарна уу. Энэ хувьсагчийн утга нь хуудасны хэмжээнд байгаа бөгөөд header.tpl болон footer.tpl файлуудыг эцсийн хуудсанд оруулна гэж бид үзэж байна. Мөн Нууцлалын холбоос дээр $site_path байгааг анхаарна уу. Би загварууддаа бүх холбоосын бүрэн замыг үргэлж оруулдаг - хэрэв холбоосын URL нь зөвхөн privacy.php байсан бол хөлийн файл нь тодорхой директор руу хатуу кодлогдсон байх болно.

Гол хэсэг

Хуудасны үндсэн хэсэг нь толгой ба хөлийн агуулгыг агуулдаг. Үндсэндээ энэ нь сайтын зочдын сонирхсон мэдээллийг агуулсан гол хэсэг юм. Толгой хэсэг нь гайхалтай харагдаж байна, хөл хэсэгт хэрэгтэй мэдээлэл агуулагддаг, гэхдээ энэ нь хуудасны үндсэн хэсэгт хэрэглэгчид дахин дахин сайт руу буцаж ирдэг. Хэдийгээр би хуудасны тодорхой бүтцийн талаар зөвлөгөө өгөх боломжгүй ч Жагсаалт 9.7-д байгаа загварууд нь хуудасны удирдлагыг ихээхэн хялбаршуулдаг.

Жагсаалт 9.7. Хуудасны үндсэн хэсгийн жишээ (index_body.tpl)

/tutorials.php">сургалт

нийтлэлүүд

скриптүүд

холбоо барих

PHPRecipes-д тавтай морилно уу. PHP скриптүүд, хичээлүүд,

болон тансаг хоол хийх тухай мэдээлэл!

Бүгд хамтдаа: толгой, хөл, бие

Алдарт "А-баг" цуврал киноны хурандаа "Ганнибал" Смитийн (Жорж Пеппард) "Бүх зүйл байрандаа ороход би дуртай" гэсэн мөр миний сэтгэл санааг хамгийн сайн дүгнэж болох юм. Би өөр өөр загварууд нийлж бүрэн вэб баримт бичгийг бүрдүүлэхэд ижил төстэй зүйл тохиолдож байна. Header.tpl, index_body.tpl, footer.tpl гэсэн гурван баримт бичгийн хэсгийг нэгтгэснээр та Жагсаалт 9.8-д үзүүлсэн шиг энгийн хуудсыг хурдан бүтээх боломжтой.

Жагсаалт 9.8. Хэд хэдэн файл оруулан index.php хуудас бүтээх

// Файл: index.php

// Очих газар: PHPRecipes нүүр хуудас

// Гарчиг хэвлэх

оруулах("header.tpl");

// Үндсэн хэсгийг гаргана

оруулах("index_body.tpl");

// Хөлийн хэсгийг харуулах

оруулах("footer.tpl");

Тэгэхээр яаж? Гурван энгийн тушаал, танд бэлэн хуудас байна. Эцсийн хуудасны текстийг Жагсаалт 9.9-д үзүүлэв.

Жагсаалт 9.9. Жагсаалт 9.8 (index.php) дээр бүтээгдсэн HTML хуудас

PHPRRecipes

8-р сарын 23, 15:17

хичээлүүд

нийтлэл

скриптүүд

холбоо барих

PHP скриптүүд, зааварчилгааны эхлэл болох PHPRecipes-д тавтай морилно уу.

болон тансаг хоол хийх зөвлөмж, жор!

Зохиогчийн эрх 2000 PHPRecipes. Бүх эрх хуулиар хамгаалагдсан.

холбоо барих |

таны хувийн нууц

Зураг дээр. Зураг 9.1-д үүссэн хуудас нь хөтөч дээр хэрхэн харагдахыг харуулж байна. Хэдийгээр би хүснэгтийн хүрээг ихэвчлэн ашигладаггүй ч энэ удаад хуудасны гурван хэсгийг зураг дээр илүү тод харуулахын тулд зурсан.

Цагаан будаа. 9.1. Жагсаалт 9.8-д оруулсан хуудасны харагдах байдал

Загвар оновчлол

Хоёрдахь хувилбарт (миний бодлоор, илүү тохиромжтой) загварууд нь тусдаа файлд байрладаг функц хэлбэрээр бүтээгдсэн болно. Энэ нь таны загварт нэмэлт бүтцийг бий болгодог. Би энэ файлыг эхлүүлэх файл гэж нэрлээд бусад хэрэгтэй мэдээллийг дотор нь хадгалдаг. Бид харьцангуй урт толгой ба хөлийн жишээнүүдийг аль хэдийн авч үзсэн тул 9.10 ба 9.11 жагсаалтуудыг шинэ санааг харуулахын тулд бага зэрэг богиносгосон.

Жагсаалт 9.10. Сайтын оновчтой загвар (site_init.tpl)

// Файл: site_init.tpl

// Зорилго: PhpRecipes эхлүүлэх файл

$site_name = "PHPRRecipes";

$site_email = " [имэйлээр хамгаалагдсан]";

$site_path = "http://localhost/phprecipes/";

функц show_header($site_name) (

<? print $site_name: ?>

Энэ бол толгой хэсэг

функцийг хөл хэсгийг харуулах()

Энэ бол хөл хэсэг юм

Жагсаалт 9.11. Эхлүүлэх файлыг ашиглаж байна

// Эхлүүлэх файлыг оруулна

оруулах("site_init.tpl");

// Гарчиг хэвлэх

гарчгийг харуулах($сайт_нэр);

// Биеийн агуулга Энэ бол биеийн зарим мэдээлэл юм

// Хөл хэсгийг харуулах Show_footer();

Төсөл: хуудас үүсгэгч

Хэдийгээр миний үүсгэсэн вэбсайтуудын ихэнх нь мэдээллийн сангаас уншсан мэдээлэлд үндэслэн үндсэн хуудасны агуулгыг үүсгэсэн ч бараг өөрчлөгдөөгүй цөөн хэдэн хуудас үргэлж байдаг. Ялангуяа тэд хөгжүүлэлтийн баг, холбоо барих мэдээлэл, зар сурталчилгаа гэх мэт мэдээллийг харуулах боломжтой. Би ихэвчлэн энэ "статик" мэдээллийг тусдаа хавтсанд хадгалдаг бөгөөд хүсэлт ирэхэд PHP скрипт ашиглан ачаалдаг. Мэдээжийн хэрэг, танд асуулт байна - хэрэв энэ нь статик мэдээлэл бол PHP скрипт юунд зориулагдсан вэ? Яагаад ердийн HTML хуудсыг ачаалж болохгүй гэж? PHP-ийн давуу тал нь та загваруудыг ашиглаж, шаардлагатай бол статик хэсгүүдийг оруулах боломжтой юм.

<а href = "/static.php?content=$content">Хуудасны статик нэр

Статик хуудас үүсгэж эхэлцгээе. Энгийн болгох үүднээс би сайтын мэдээлэл (Жагсаалт 9.12), зар сурталчилгаа (Жагсаалт 9.13), холбоо барих мэдээлэл (Жагсаалт 9.14) агуулсан гурван хуудсаар хязгаарлах болно.

Жагсаалт 9.12. Сайтын тухай мэдээлэл (about.html)

PHPRecipes-ийн тухай

Ямар програмист бүхэл шөнийн хөтөлбөрийг тансаг жигнэмэгтэй холихгүй вэ? Энд PHPRecipes дээр. Манай кодлогчдын аль нэг нь HTML хэлийг амттай таваг Портобелло мөөг, тэр ч байтугай Фондютэй холихгүй бол бараг л шөнө өнгөрдөггүй. Тиймээс бид танд хүргэхээр шийдлээ. Бидний хамгийн дуртай зүйлсийн хамгийн шилдэг нь: PHP болон хоол!

Тийм шүү, уншигчид, заавар, скрипт, суфле гэх мэт. 0nly PHPRecipes дээр.

Зар сурталчилгааны мэдээлэл

Тэд хамгийн сүүлийн үеийн PHP арга техникийг сурах гэж ирсэн эсэхээс үл хамааран, эсвэл хэрхэн яаж хийхээ судлах гэж ирсэн

Тахианы махыг жигнэхийн тулд манай уншигчид шийдвэр гаргагчид гэдэгт итгэлтэй байж болно. Тэд бол Аж үйлдвэр

компани нь юу худалдаж авах талаар шийдвэр гаргадаг мэргэжилтнүүд.

Зар сурталчилгааны мэдээлэл авахыг хүсвэл холбогдоно уу

">[имэйлээр хамгаалагдсан].

Жагсаалт 9.14. Холбоо барих мэдээлэл (contact.html)

Бидэнтэй холбоо барина уу

Кодлох зөвлөгөө байна уу?

Чихэртэй саравчны төгс амтлагчийг мэдэх үү?

Бидэнд мэдэгдээрэй! хаягаар багтай холбогдоно уу [имэйлээр хамгаалагдсан].

Хүссэн статик мэдээллийг харуулах static.php хуудсыг бүтээх ажлыг үргэлжлүүлье. Энэ файл (Жагсаалт 9.15-ыг үзнэ үү) манай сайтын хуудасны бүрэлдэхүүн хэсгүүд болон site_init.tpl эхлүүлэх файлыг агуулна.

Жагсаалт 9.15. Статик хуудасны ерөнхий гаралт (static.php)

// Файл: static.php

// Зорилго: хүссэн статик хуудсыг харуулах.

// АНХААРУУЛГА: энэ нь файлыг "site_init.tpl" гэж тооцож, ингээд л болоо.

// статик файлууд нэг директорт байна.

// Ачаалах функцууд болон хувьсагчид орно("site_init.tpl"):

// show_header($site_name) толгойг харуулах;

// Хүссэн агуулгыг гаргана include("$content.html"):

// Хөл хэсгийг харуулах хөлийг харуулах();

Одоо үндсэн хувилбарыг бүтээхэд бүх зүйл бэлэн болсон. Зүгээр л хуудсандаа оруулаарай

<а href = "static.php?content=about">Статик хуудасны нэр

Зар сурталчилгааны мэдээлэл

Бидэнтэй холбоо барина уу

Хэрэв та эдгээр холбоосуудын аль нэг дээр дарвал таны хөтөч static.php-д суулгагдсан харгалзах статик хуудсыг ачаалах болно!

Үр дүн

Энэ бүлэгт та PHP-ийг үүсгэсэн үндсэн ажил болох вэб хуудсыг динамикаар бүтээхтэй танилцсан. Дараахь асуудлыг авч хэлэлцэв.

  • URL боловсруулах;
  • динамик контентыг бий болгох;
  • үндсэн загваруудыг оруулах, бүтээх.

Энэ бүлэг нь хуудас үүсгэгчээр төгсдөг бөгөөд энэ нь статик хуудсуудыг загвар болгон ачаалж, олон тооны статик HTML хуудсыг дэмжихэд хялбар болгодог програм юм.

Дараагийн бүлэгт PHP-г HTML маягтуудтай хослуулан ашиглан сайтынхаа харилцан үйлчлэлийг ихээхэн сайжруулахад чиглэнэ. Тэгээд дараа нь - мэдээллийн сантай харилцах! Танд сурах сонирхолтой зүйл их байна.

Өмнөх хичээлүүдээс бид GET аргыг ашиглан зарим параметрүүдийг URL руу шууд дамжуулж болохыг олж мэдсэн. Гэсэн хэдий ч, маягтгүйгээр үүнийг хийхэд бидэнд юу ч саад болохгүй, зүгээр л URL дээр жагсаах болно.

Бид параметрүүдийг URL-ээр дамжуулж болно. Мөн бид эдгээр параметрүүдийг скрипт дээр шууд авах боломжтой. Тэгэхээр URL дахь параметрүүдээс хамааран хэрэглэгчдэд өөр өөр хуудсыг харуулахад юу саад болж байна вэ?

Динамик хуудас үүсгэх

Хэрэглэгчдэд өөр өөр хуудсыг харуулахын тулд та контент бэлтгэх хэрэгтэй. Үүнийг олон хэмжээст массив дотор хэвтүүлье:

"Динамик хуудас үүсгэх", "контент" => "Динамик хуудасны тухай өгүүллийн текст." ], [ "title" => "Хэрхэн зулзага барих вэ", "контент" => "Мурын зулзагын тухай нийтлэлийн текст." ] ]; ?>

URL дахь динамик параметрийг id гэж нэрлэх бөгөөд бид үүнийг $_GET["id"] дээр барих болно. Бид массивын элемент бүрт id талбар нэмж болох боловч дараа нь бид бүх элементүүдийг давтаж, хүссэн id-тэй дэд массивыг хайх хэрэгтэй болно. Тиймээс үндсэн массивын товчлууруудыг id болгон ашиглах нь илүү хялбар байдаг.

Энгийнээр хэлбэл, бид ID-г аваад $articles массиваас тухайн түлхүүр бүхий нийтлэлийг олохыг оролддог. Энэ нь дараах байдалтай харагдаж байна.

Цэсийн гаралтыг тоймлон зурж, id зөв эсэхийг шалгах л үлдлээ. Энэ нь жинхэнэ PHP чиглүүлэгч болж хувирав!

"Нүүр хуудас", "контент" => "Манай сайтын тухай нийтлэлийн текст" ], [ "гарчиг" => "Динамик хуудас үүсгэх", "контент" => "Динамик хуудасны тухай нийтлэлийн текст." ], [ "title" => "Хэрхэн зулзага барих вэ", "контент" => "Мурын зулзагын тухай нийтлэлийн текст." ] ]; # Хэрэв id тэнцсэн бол өгүүллийг $article, хэрэв id-тэй нийтлэл байхгүй бол null гэж бичнэ үү if(isset($_GET["id"])) $current_article = $articles[$_GET["id"]] ?? null; # Хэрэв id дамжуулагдаагүй бол энэ нь үндсэн хуудас бөгөөд бид id = 0 гэсэн хуудсыг харуулах боломжтой, өөрөөр хэлбэл $current_article = $articles; ?> $ нийтлэл): ?> ">

Алдаа 404: Хуудас олдсонгүй

Одоо та хуудасны тоо нь PHP файлаас илүү массивын элементийн тооноос хамаардаг динамик сайтуудыг үүсгэж болно. :) Хэрэв сайт нь өөр өөр төрлийн хуудастай байх ёстой, тухайлбал, нийтлэл, бүтээгдэхүүн, та хуудасны төрлийг хоёр дахь параметр болгон дамжуулж болно: site.ru?type=article&id=5 .

Мэдээжийн хэрэг, энэ систем төгс биш юм. Хэсэг хугацааны дараа та ердийн CNC (илүү тохиромжтой URL-ууд, жишээ нь site.ru/articles/5/) хийж, нийтлэлийг файл эсвэл мэдээллийн санд хэрхэн хадгалах талаар сурах болно.

Аливаа нарийн төвөгтэй, ирээдүйтэй, өргөжүүлэх боломжтой, үр дүнтэй вэбсайт үүсгэхийн тулд та энгийн зүйлээс эхлэх хэрэгтэй. Энэ үйл явц нь амаргүй, PHP болон MySQL-ийн тодорхой суурь мэдлэг шаарддаг боловч хэрэв та үүнийг цэг болгон авч үзвэл шинэ сайт үүсгэхэд хэрэг болохуйц "ажлын төлөвлөгөө"-г үүсгэж болно. Төслийн “цөм” болон суурийг бэлтгэе. Эхлээд энэ нь ердийн нэрийн хуудасны вэбсайт байх боловч дараа нь функцийг нэмснээр үүнийг юу ч болгон хувиргаж болно. Ингээд эхэлцгээе.

1. Мэдээллийн санг бэлтгэх. MySQL мэдээллийн санд эхний хүснэгтийг үүсгэ

Шинэ мэдээллийн сан үүсгэх, жишээ нь "mysite". Би хувьдаа UTF-8 кодчилолтой ажиллаж дассан тул би шууд захиалгаа өгөх болно: сайт дээрх бүх текст файлууд, мэдээллийн сан, хүснэгт, хүснэгтийн талбарууд ижил кодчилолд байгаа эсэхийг шалгаарай.
Бид шинэ мэдээллийн санд хүснэгт үүсгэдэг. Үүнийг "хуудас" гэж нэрлэе. Энэ хүснэгт нь ирээдүйн сайтын статик хуудсууд болон тэдгээрийн талаарх мэдээллийг хадгалах болно. Хүснэгт нь дараах талбаруудыг агуулсан байх ёстой.

  • page_id - хуудасны танигч (SMALLINT, үндсэн түлхүүр, автомат_өсөлт);
  • page_alias - CNC хаягийн шугамын хуудасны бусад нэр (VARCHAR, 255);
  • page_title - хөтчийн цонхон дээрх хуудасны гарчиг (VARCHAR, 255);
  • page_meta_d - мета тайлбарын шошгоны хуудасны мета тайлбар (VARCHAR, 255);
  • page_meta_k - мета түлхүүр үгсийн тагийн мета түлхүүр үгс (VARCHAR, 255);
  • page_h1 - хуудасны гарчиг (VARCHAR, 255);
  • page_s_desc - материалын товч тайлбар, жишээлбэл, хэрэв сайтын материал нь блог (TEXT) хэлбэртэй байвал;
  • page_content - сайтын төв баганад харагдах хуудасны үндсэн текст (TEXT);
  • page_publish - "Y" -ийг агуулна - хэрэв хуудас нийтлэгдсэн бол "N" - нуугдсан бол (CHAR, анхдагч "Y").

Хүснэгтийг үүсгэсний дараа бид сайтын үндсэн хуудасны утгыг оруулна. Би үндсэн хуудасны "page_alias" талбарт "home" гэсэн утгыг оруулахыг санал болгож байна. Мета шошго нь бүхэл бүтэн сайтын сэдэвтэй тохирч байна. Үүнтэй адилаар та бусад хуудсуудыг үүсгэж болно, жишээлбэл, "тухай" гэсэн хочтой "Компанийн тухай" болон өөрийн мета шошго, эсвэл "Харилцагчид" гэх мэт "Харилцагч" гэх мэт.

2. Сайтын тохиргооны файл үүсгэх

Энэ үе шатанд хоосон байх ёстой сайтын үндсэн хавтсанд бид "cfg" хавтас үүсгэж, .htaccess ашиглан "бүгдээс татгалзах" зааврын тусламжтайгаар хандалтыг хаадаг. Дараах агуулга бүхий core.php файл үүсгэнэ үү:

// MYSQL
анги MyDB
{
var $dblogin = "root"; // ТАНЫ МЭДЭЭЛЛИЙН САНДАА НЭВТРЭХ
var $dbpass = ""; // МЭДЭЭЛЛИЙН САН ДЭЭР ТАНЫ НУУЦ ҮГ
var $db = "mysite"; // САЙТЫН МЭДЭЭЛЛИЙН САНГИЙН НЭР
var $dbhost="localhost";

Var $link;
var $query;
var $err;
var $үр дүн;
var $data;
var $fetch;

Холбох функц () (
$this->link = mysql_connect($this->dbhost, $this->dblogin, $this->dbpass);
mysql_select_db($this->db);
mysql_query("НЭРИЙГ ТОХИРУУЛАХ utf8");
}

Хаах функц () (
mysql_close($this->холбоос);
}

Функц ажиллуулах($query) (
$ this->query = $query;
$this->үр дүн = mysql_query($this->query, $this->link);
$ this->err = mysql_error();
}
функцийн мөр () (
$this->data = mysql_fetch_assoc($this->үр дүн);
}
функцийг татах() (
байхад ($this->data = mysql_fetch_assoc($this->үр дүн)) (
$this->fetch = $this->data;
$this->татаж авах;
}
}
функцийг зогсоох() (
тохируулаагүй($this->өгөгдөл);
тохируулаагүй($this->үр дүн);
тохируулаагүй($this->татаж авах);
тохируулаагүй($this->алдаа);
тохируулаагүй($this->асуулга);
}
}

Энэ файл одоогоор зөвхөн өгөгдлийн сангийн холболтын энгийн ангиллыг агуулж байгаа боловч ирээдүйд та сайтын кодын хаанаас ч хандах боломжтой янз бүрийн ашигтай функцуудыг нэмж болно. Өгөгдлийн сангийн нэвтрэх болон нууц үгээ өөрчлөхөө бүү мартаарай.

Хэрэв та Windows орчинд ажиллаж байгаа бол би ашиглахыг зөвлөж байна. Энэхүү засварлагч нь мөрийн дугаарлалттай бөгөөд текстийг нэг кодчилолоос нөгөө рүү хялбархан хөрвүүлдэг. АНХААР! Хэрэв та UTF-8 кодчилол дээр ажилладаг бол файлуудыг BOMгүйгээр UTF-8 болгон хөрвүүлээрэй - энэ нь ирээдүйд асуудал гарахаас зайлсхийхэд тусална.

3. index.php үүсгэх - сайтын үндсэн хянагч

Тохиргооны файл үүсгэгдсэн. Одоо сайтын үндсэн хавтсанд бид index.php-г үүсгэж байна - энэ нь сайтын үндсэн скрипт, нэг төрлийн "үндсэн хянагч" байх болно. index.php файлын агуулга:

тодорхойлох("INDEX", ""); // ҮНДСЭН УДИРДЛАГЧИЙН ТОРГОНЫГ ТОХИРУУЛАХ

Нэг удаа шаардах($_СЕРВЕР."/cfg/core.php"); // ЦӨМИЙГ ХОЛБОЖ БАЙНА

// DB-Д ХОЛБОГДОХ
$db = шинэ MyDB();
$db->холбох();

// ҮНДСЭН УДИРДЛАГЧ
солих ($_GET) (
тохиолдол "хуудас":
оруулах($_СЕРВЕР."/com/page.php");
завсарлага;
анхдагч:
оруулах($_СЕРВЕР."/com/home.php");
завсарлага;
}

Include($_SERVER."/template.php");
$db->хаах();

$_GET хувьсагч нь хүсэлт гаргахад аль сайтын бүрэлдэхүүнийг ачаалахыг үндсэн хянагчдаа хэлж өгнө. Одоогоор манай сайт зөвхөн "хуудас" ба "үндсэн хуудас" гэсэн хоёр бүрэлдэхүүн хэсэгтэй (зарчмын хувьд та ердийн хуудсыг харуулах нэг бүрэлдэхүүн хэсэгтэй байж болно, гэхдээ сайтын үндсэн хуудасны харагдах байдал нь ердийн цэсийн хуудаснаас ялгаатай байдаг) . Үндсэн контроллерын логик нь дараах байдалтай байна: шаардлагатай бүрэлдэхүүн хэсгийн нэрийг URL мөрөөс ($option хувьсагчийн утга) гаргаж авсан бөгөөд түүний утгаас хамааран бүрэлдэхүүн хэсгийн файл өөрөө багтсан болно. /com хавтас). Бүрэлдэхүүн хэсэг файл нь шаардлагатай бүх ажлыг хийж, өгөгдлийн сангаас өгөгдлийг гаргаж аваад дизайны загварт шилжүүлэхийн тулд хувьсагчдад бичдэг. Төгсгөлд нь сайтын дизайны файл холбогдсон бөгөөд үүнд бүрэлдэхүүн хэсгүүдэд задлагдсан бүх хувьсагч, өгөгдлийг шилжүүлдэг. Энэ нь ажиллахаас хамаагүй илүү төвөгтэй сонсогдож байна.

4. Ердийн хуудасны гаралтын бүрэлдэхүүн хэсгийг үүсгэ

Сайтын үндсэн хэсэгт "com" хавтас үүсгэнэ үү - бүрэлдэхүүн файлууд үүнд хадгалагдах болно. Сайтын бүрэлдэхүүн хэсэг нь миний ойлголтоор сайтын өөр өөр хэсгүүдэд өгөгдөл боловсруулдаг файл юм. Жишээлбэл, ердийн хуудасны бүрэлдэхүүн хэсэг нь мэдээллийн сангаас материалын гарчиг, тайлбар, текстийг авч $title, $meta_d, $meta_k, $content гэх мэт хувьсагчдад бичдэг. Дараа нь энэ өгөгдлийг дизайны загварт шилжүүлдэг ( Та бүрэлдэхүүн хэсэг тус бүрдээ өөрийн загварын загвар үүсгэж болно ) ба хэрэглэгчдэд HTML хуудас хэлбэрээр харагдана. Жишээлбэл, ирээдүйд бий болох каталогийн бүрэлдэхүүн хэсэг нь бараг ижил зүйлийг хийх болно, гэхдээ бүтээгдэхүүний талаархи мэдээлэлтэй бөгөөд энэ нь өөрийн гэсэн онцлогтой, хүснэгтийн бусад талбаруудтай. Тиймээс сайтын функциональ хэсэг бүрийн хувьд тусдаа бүрэлдэхүүн хэсэг үүсгэх нь зүйтэй. MVC (Model-View-Controller) схемд бүрэлдэхүүн хэсэг нь загварын үүрэг гүйцэтгэдэг.

"com" хавтсанд "page.php" файл үүсгэнэ үү. Файлын агуулга дараах байдалтай байна.

/* Хуудасны бүрэлдэхүүн */
$алиас = $_GET;
$query = "СОНГОХ * ХААНА page_alias="".$alias."" БОЛОН page_publish="Y" ХЯЗГААР 1";
$db->ажиллуулах($query);
$db->мөр();
// БҮРДЭЛИЙН ХУВЬСАГЧИД
$id = $db->өгөгдөл;
$алиас = $db->өгөгдөл;
$ гарчиг = $ db-> өгөгдөл;
$h1 = $db->өгөгдөл;
$meta_d = $db->дата;
$meta_k = $db->өгөгдөл;
$s_desc = $db->дата;
$component = $db->өгөгдөл;
//ХЭРЭВ ХУУДАС БАЙХГҮЙ БОЛ
хэрэв (!$id) (
толгой("HTTP/1.1 404 олдсонгүй");
$component = "АЛДАА 404! Энэ хуудас байхгүй";
}
$db->stop();

5. Үндсэн хуудсыг харуулах бүрэлдэхүүн хэсгийг үүсгэ

Манай мэдээллийн сангийн үндсэн хуудас нь "гэр" гэсэн нууц нэрээр хадгалагддаг бөгөөд одоогоор түүний бүтэц нь ердийн сайтын хуудсуудаас ялгаатай биш - энэ бол зүгээр л нийтлэл юм. Гэсэн хэдий ч бид түүнд зориулж тусдаа бүрэлдэхүүн хэсгийг бий болгох болно - ирээдүйд.


“com” хавтас дахь “home.php” бүрэлдэхүүн хэсгийн агуулга нь мэдээллийн сангийн асуулгын мөр болон бүрэлдэхүүн хэсгийн нэрийг эс тооцвол ердийн хуудасны бүрэлдэхүүн хэсгийн агуулгатай бараг ижил байна. Асуулгын мөр одоо иймэрхүү харагдаж байна:

$query = "СОНГОХ * WX_pages ХААНА page_alias="home" LIMIT 1";

6. Сайтыг бүхэлд нь дизайны загвар гаргах

Сайтын үндсэн хэсэгт бид template.php файл үүсгэдэг. Нэг ёсондоо энэ нь HTML+CSS форматтай, зөвхөн зөв газартаа PHP хувьсагчтай байх ердийн вэб дизайны загвар юм. Гарчгийн шошго хооронд оруулна уу, сайтын төв баганад оруулга байнаТиймээс бид бүхэл бүтэн загварт бүрэлдэхүүн хэсгүүдэд зарлагдсан шаардлагатай хувьсагчдыг байрлуулдаг.

Үндсэн хавтас нь дизайны элементүүдэд зориулсан "css" болон "images" хавтастай байх ёстой. /css/style.css файлд - та өөрийн үзэмжээр хэв маягийг өөрчлөх боломжтой.

7. Холбоос болон .htaccess файлыг цэвэрлэ

Цэвэр холбоос үүсгэхийн тулд би mod_rewrite-г бүрэлдэхүүн хэсэг бүрийн дүрмийн шууд зааварчилгааг ашигладаг, учир нь би хянагч өөрөө ашиглан хаягийн талбарыг задлан шинжлэх нь шаардлагагүй ажиллагаа гэж үздэг. Энэ үе шатанд байгаа .htaccess-ийн агуулга нь:


RewriteEngine асаалттай
RewriteBase /

RewriteCond %(REQUEST_FILENAME) !-d
RewriteCond %(REQUEST_FILENAME) !-f

# ХОРИГЛОСОН ФАЙЛ
RewriteRule .htaccess - [F]
RewriteRule template.php - [F]

# ДҮРЭМ_өөрчлөн бичих
RewriteRule хуудас/(+)([\/](0,1))\.htm$ index.php?option=page&alias=$1 [L]

Ирээдүйд бид хайлтын бүрэлдэхүүн хэсэг, каталог, нийтлэлийн блог гэх мэт дүрмийг нэмж оруулах болно. Ганцхан зүйл бий: “mysite.com/index.php?option=pages&alias=about” гэх мэт холбоосыг “mysite.com/pages/about.htm” гэх мэт холбоос болгон хувиргах нь маш сайхан харагдаж байна. Аюулгүй байдлын үүднээс хөгжүүлж буй $_GET массиваас зайлсхийхийг хичээгээрэй, үүнд найдах хэрэггүй. Үүнд зөвхөн үндсэн хянагч ($option хувьсагч) болон бүрэлдэхүүн хэсгийн ($alias хувьсагч) параметрүүдийг хадгалахыг зөвлөж байна.

Мөн сайтын хавтас бүрт "зайлшгүй тохиолдолд" хоосон index.html файл үүсгээрэй - энэ нь хаягийн мөрөнд директор руу нэвтрэх үед юу ч харагдахгүй байх шаардлагатай.

Сэдвүүд: php, mysql, сайтын хөдөлгүүр, хянагч, сайт үүсгэх, mvc

2017-01-10


Php ашиглан динамик вэбсайт үүсгэх

Сайн байна уу эрхэм зочин!

Өнөөдөр бид үндсэн хуудаснаас PHP програмчлалын хэлийг ашиглан динамик хуудсыг үүсгэх бөгөөд дараа нь хэрэглэгчийн хүсэлт болгон сервер дээр үүсгэгдэх болно.

Тиймээс, сайтын бүтцийг өөрчилж, ижил төстэй хуудсуудаар дүүргэснээр бид динамик сайттай болох бөгөөд энэ нь ирээдүйд техникийн дэмжлэг, хөгжлийг статик хувилбартай харьцуулахад ихээхэн хялбарчлах болно.

  • Яагаад танд динамик вэбсайт хэрэгтэй байна вэ?
  • Статик сайтыг динамик сайт руу хэрхэн хөрвүүлэх вэ
  • Бид динамик сайтын блокуудыг үүсгэдэг
  • Вэб хуудсыг статикаас динамик руу хөрвүүлэх
  • Сайтын эх файлууд

Яагаад танд динамик вэбсайт хэрэгтэй байна вэ?

Динамик вэб сайт яагаад хэрэгтэй вэ гэдгийг алхам алхмаар зааварчилгааны эхэнд локал вэб сервер суулгах хэрэгцээг тайлбарласан "Денверийн орон нутгийн вэб серверийг суулгах" өгүүллийн эхэнд авч үзсэн. Тиймээс бид буцаж очоод энэ асуултыг сэргээж болно.

Түүнчлэн, хэрэв та статик болон динамик сайтуудын давуу болон сул талуудыг цаашид авч үзэхийг хүсвэл "Puzzleweb.ru" онлайн лавлахын сайтуудын төрлүүд гэсэн хэсгийг маш товч, гэхдээ нэгэн зэрэг уншихыг зөвлөж байна. сайтын янз бүрийн сонголтуудын талаар тодорхой тайлбарласан цаг хугацаа.

дэлгэцийн зураг 12

Үнэхээр бүрэн хэмжээний интернетийн нөөцийг авахын тулд энэ алхамыг алгасаж, статик сайтын сонголттой үлдэх боломжгүй гэдгийг бид нэмж хэлж болно.

Тиймээс бид динамик сайт үүсгэх хэрэгцээний талаархи онолын хэлэлцүүлэгт цаашид орохгүй, харин үүнийг хэрхэн хийх вэ гэсэн асуултыг авч үзэх болно.

Статик сайтыг динамик сайт руу хэрхэн хөрвүүлэх вэ

Таны мэдэж байгаагаар динамик болон статик сайтын үндсэн ялгаа нь статик сайтад бэлэн вэб хуудсууд сервер дээр хэвтэж, хэрэглэгчийн хөтөч рүү илгээгдэхийг хүлээж байдаг. Түүнээс гадна, хэрэв хуудсууд нь бага зэрэг ялгаатай байвал ялгаа нь зөвхөн нэг хэллэг эсвэл бүр нэг үгээр байвал эдгээр нь тусдаа хуудас хэвээр байх болно.

Динамик хувилбарт хуудсууд нь хүссэн мэдээллээс хамааран хэрэглэгчийн хүсэлт бүрээр сервер дээр үүсгэгддэг.

Энгийнээр хэлэхэд, үүнийг барилгын багцтай харьцуулж болох бөгөөд хязгаарлагдмал тооны элементүүдээс олон тооны янз бүрийн хэлбэрийг хийж болно. Түүнээс гадна, хэрэв та элементүүдийн аль нэгэнд ямар нэгэн өөрчлөлт хийвэл энэ нь энэ элементийг багтаасан бүтцэд тусгагдах болно.

Үүний үндсэн дээр бид үүсгэсэн үндсэн хуудаснаасаа тодорхой элементүүдээс бүрдэх (бидний тохиолдолд эдгээр нь файлууд байх болно) бүтээгч гэх мэт зүйлийг хийх бөгөөд үүнээс вэб хуудсуудыг хэрэглэгчийн хүсэлтийн дагуу дараа нь угсарна.

Үүний тулд хийх үйлдлүүдийг тайлбарлахын тулд бид нийтлэл дэх сайт үүсгэх үе шатуудын аль нэгэнд олж авсан үндсэн хуудасны хүрээний HTML кодыг ашиглах болно.

  1. "utf-8" >

    <span><b>Хуудасны гарчиг</b> </span>

    "Тодорхойлолт"агуулга = "Хуудасны агуулгын товч тайлбар" >

  2. "боодол" >

    Малгай

    Эргүүлэгч

    Үндсэн агуулга

    Хажуугийн самбар

    Подвал

HTML кодоос харахад контейнер , вэб хуудасны харагдах хэсгийг байрлуулахад зориулагдсан бөгөөд дараах үндсэн блокуудыг агуулна.

  • Малгай;
  • Эргүүлэгч;
  • Үндсэн агуулга;
  • Хажуугийн самбар;
  • Подвал.

Гэсэн хэдий ч, та таван блокийн дөрөв нь нийтлэг байдаг бөгөөд хуудас бүрт зөвхөн нэг "Үндсэн агуулга" блок өөр байх болно гэдгийг анхаарах хэрэгтэй.

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

Одоо, энэ үе шатанд эдгээр файлуудын зөвхөн тав нь байх болно. Гэхдээ ирээдүйд сайтад хуудас эсвэл нэмэлт функц нэмэгдэхэд шаардлагатай бол шинэ файлууд холбогдох болно.

Сайтын бүтцийн энэхүү бүтээн байгуулалт нь ирээдүйд бүх хуудасны HTML кодыг солих эсвэл нэмэх тохиолдолд тэдгээрийг өөрчлөх ердийн ажил хийх шаардлагагүй болно. Ийм тохиолдолд зөвхөн тодорхой файлд өөрчлөлт оруулахад хангалттай бөгөөд солих процедурыг бүхэлд нь дуусгах болно. Таны харж байгаагаар давуу тал бий.

Гэхдээ үүнийг хийхийн тулд бидэнд PHP хэл хэрэгтэй бөгөөд үүний тусламжтайгаар вэб хуудсууд эдгээр сонгосон блокуудад нэвтэрч, агуулгыг нь өөрсөддөө шилжүүлэх боломжтой болно.

Хэрэв хэн нэгэн РНР хэлтэй хэзээ ч харьцаж байгаагүй бол PHP нь вэбсайт хөгжүүлэх хамгийн чухал хэрэгслүүдийн нэг тул үүнийг илүү сайн мэдэхийг зөвлөж байна. Үүнийг Оросын интернетээс их хэмжээгээр олж болох янз бүрийн лавлах ном зохиолыг ашиглан хийж болно.

Сонголтын хувьд аль хэдийн дурдсан "Puzzleweb.ru" лавлах ном бөгөөд түүний нэг хэсэг нь PHP-ийн сэдэвт зориулагдсан болно. PHP-ийн талаар илүү гүнзгий судлахын тулд та "php.ru" вэбсайт дээр байрлуулсан энэ хэлэнд тусгайлан зориулсан тусгай лавлах номыг ашиглаж болно. "https://php.ru/manual/control-structures.intro.html" холбоосыг ашиглан та түүний "Танилцуулга" хуудас руу орох боломжтой бөгөөд эндээс сонирхсон лавлахын аль ч хэсгийг хялбархан сонгох боломжтой.

Гэхдээ одоо динамик вэб сайт хийж, HTML хуудастай файлуудыг холбох боломжийг олгохын тулд зөвхөн нэг хэлний зааврыг ашиглахад хангалттай (PHP-д аливаа скрипт нь дараалсан заавраас бүрддэг). Энэ нь файлуудыг холбох дөрвөн боломжит зааврын нэг байж болно:

  • оруулах;
  • шаардах;
  • нэг удаа оруулах;
  • нэг удаа шаардах.

Тэдгээрийн онцлогийг энд тайлбарлах нь утгагүй юм, учир нь үүнийг лавлах номонд нарийвчлан тайлбарласан болно, жишээлбэл, "http://www.puzzleweb.ru/php/26_inc_files.php" холбоосыг ашиглан та үүнийг сайн ойлгож чадна.

Сайт үүсгэхдээ бид "нэг удаа_шаардлагатай" зааврыг ашиглах болно, би энэ сонголтыг ихэвчлэн ашигладаг, миний хувьд энэ нь хамгийн тохиромжтой.

За, одоо бид юу хийхээ шийдсэн тул практик үйлдлүүд рүү шилжье.

Бид динамик сайтын блокуудыг үүсгэдэг

Дараа нь вэб хуудасны угсралтад оролцох блокуудыг үүсгэхийн тулд эхлээд тэдгээрийг үүсгэх хэрэгтэй. Үүнийг бид нийтлэл дэх "index.html" сайтын анхны файлыг үүсгэсэнтэй адил Notepad++ текст засварлагч дээр хийдэг. Вэб хуудас үүсгэж, дотоод вэб сервер дээр байршуулах. Зөвхөн энэ тохиолдолд өргөтгөлийг "html" биш "php" гэж зааж өгөх ёстой. Энэ тохиолдолд та ирээдүйд хуудсан дээр янз бүрийн ойлгомжгүй тэмдэгтүүд гарч ирэхээс зайлсхийхийн тулд кодчилолд анхаарлаа хандуулах хэрэгтэй.

Бид тусад нь шинээр үүсгэсэн "блок" хавтсанд файлуудыг үүсгэх болно. Бүх хуудсанд нийтлэг байдаг файлуудын хувьд бид холбогдох блокуудын нэрийг харгалзан нэр өгөх болно. Мөн "үндсэн" блокийн хувьд бид сайтын хуудас бүрийн тодорхой нэрийг зааж өгөх болно.

Тиймээс үндсэн хуудасны хувьд бид "block_glavnaya" нэртэй файлыг "үндсэн" блок руу холбох болно. Үлдсэн хэсэгт нь: "толгой", "хэсэг", "хажуу", "хөл хэсэг".

Файл үүсгэхдээ энэ процедурыг хялбарчлахын тулд тэдгээрийг "Файл" цэсийг ашиглан хуулж, "Хадгалах" гэж хадгалахдаа шинэ файлын нэрийг зааж өгч болно.

Ерөнхийдөө файл үүсгэх нь стандарт журам тул ямар ч бэрхшээл гарах ёсгүй. Эцсийн эцэст энэ нь иймэрхүү харагдах ёстой.


Дараа нь бид блок бүрийн агуулгыг хуулж, зохих файл руу шилжүүлнэ. "header.php"-г жишээ болгон ашиглаад үүнийг илүү дэлгэрэнгүй авч үзье.

1. Notepad++ засварлагч дээр “index.html” файлыг нээж, “толгой” блокийн хүссэн хэсгийг сонгоод хулганы баруун, зүүн товчийг ээлжлэн дараад санах ой руу хуулна.

Энд бид цэсээс бусад блокийн бүх агуулгыг хуулж байгааг тэмдэглэх нь зүйтэй. Учир нь тагийн шинж чанарт идэвхтэй цэсийн товчлуурыг тусгах хэрэгтэй

  • хуудас бүрийн хувьд ангийн ангилалд утга оноох шаардлагатай "идэвхтэй". "Хөл" блок дахь ижил төстэй фрагментэд мөн адил хамаарна.

    Цаашид бид "толгой" болон "хөл" блок дахь эдгээр цэсийн хэсгүүдийг тус тусад нь файл болгон зөөх болно, гэхдээ одоохондоо бид асуудлыг хүндрүүлж, нэг газар үлдээхгүй.

    "Толгой" блокийн фрагментийг санах ойд хэрхэн сонгож, хуулахыг доорх дэлгэцийн агшинд үзүүлэв.



    3. Эцэст нь Notepad++ дээрх файлын агуулгыг зүүн тийш шилжүүлэхийн тулд "Shift" товчийг удаан дарж "Tab" дээр хэд хэдэн удаа дарах хэрэгтэй. Үүний үр дүнд бид үүсгэсэн “header.php” файлыг дараах хэлбэрээр авах болно.


    Бид бусад файлуудын хувьд ижил зүйлийг хийх болно. Доорх дэлгэцийн агшинд шаардлагатай бүх алхмуудыг хийсний дараа тэдгээрийн агуулга хэрхэн харагдахыг харуулав.


    Зураг.6 Файл "section.php"


    Зураг 7 "block_glavnaya.php" файл


    Зураг 8 "side.php" файл


    Зураг.9 "footer.php" файл

    Тиймээс бид динамик хуудас үүсгэх бүх файлыг хүлээн авсан бөгөөд одоо түүний HTML код руу шууд очиж болно.

    Вэб хуудсыг статикаас динамик руу хөрвүүлэх

    Манай үндсэн хуудсанд өмнөх хэсэгт үүсгэсэн файлуудыг ачаалахын тулд эхлээд "index" файлын өргөтгөлийг "html"-ээс "php" болгож өөрчлөх хэрэгтэй бөгөөд дараа нь Notepad++ засварлагч дээр дахин нээх хэрэгтэй. дараах өөрчлөлтүүдийг хийнэ үү.

    • Өмнө нь шинээр үүсгэсэн файлууд руу шилжүүлсэн блокуудын агуулгыг устгана уу.
    • Чөлөөт зайд PHP дээр "нэг удаа шаардах" зааврыг бичиж, харгалзах файлуудын замыг зааж өгнө.
    • Цэсийн шошгонд
    • , хуудсуудын замыг заадаг, үндсэн хуудасны хувьд өргөтгөлийг "html"-ээс "php" болгон сольж, бусад нь шинээр үүсгэсэн хуудасны нэрийг зааж өгнө.
    • Гарчиг хэсэгт "Гэр" гэж бичнэ үү.

    Эдгээр үйлдлүүдийг хийж дууссаны дараа манай үндсэн хуудас иймэрхүү харагдах ёстой.


    Дээрх дэлгэцийн зургаас та бүх PHP зааварчилгааг нээх хаягаар тодруулсан болохыг харж болно. Энэ тэмдэглэгээ нь PHP дээр бичигдсэн кодыг боловсруулах, хэзээ эхлэх, зогсоохыг зааж өгөхөд хэрэглэгддэг. Тиймээс ирээдүйд бүх PHP кодуудыг энэ тэмдэглэгээгээр тодруулах болно.

    Шинэ хуудаснуудын нэрийг зорилгыг нь харгалзан хийсэн тул сайтын бүтэц, кодыг илүү сайн ойлгодог болохыг та тэмдэглэж болно.

    Энд бидний бүх өөрчлөлтүүд дууссан. Одоо, хэрэв бид хөтөч дээр үндсэн хуудсыг дахин нээх юм бол сайтын өмнөх хувилбарт ямар нэгэн өөрчлөлт харагдахгүй, өмнөх шигээ нээгдэх ёстой. Гэхдээ үр дүн нь буруу болбол дээрх үйлдлүүдээс алдааг хайх хэрэгтэй.

    Одоо хөтчөө шинэчилж, үндсэн хуудсыг нээхийг оролдъё.


    Таны харж байгаагаар манай тохиолдолд үндсэн хуудас ямар ч асуудалгүйгээр нээгдэв. Гэхдээ сайтын өмнөх ажлаас ялгаатай нь уг хуудас нь хүсэлтийг боловсруулахдаа сервер дээр үүссэний үр дүнд ийм дүр төрхийг олж авсан.

    Ийнхүү манай сайт анхны динамик хуудастай боллоо. Үүнтэй ижил төстэй бусад хуудсуудыг нэмсний дараа энэ сайтыг бүх үр дагавартай динамик гэж нэрлэж болно, жишээлбэл. Энэ нь динамик сайтуудад хамаарах бүх давуу талуудтай байх болно. Ирээдүйд бид үүнийг янз бүрийн функцээр дүүргэх үед үүнийг шалгах боломжтой болно.

    Үүний тусламжтайгаар бид вэбсайт хөгжүүлэх чухал үе шатыг дуусгаж, дараагийн өгүүллээр бид түүнд зориулж шинэ динамик хуудас үүсгэх болно. Сайтын хамгийн сүүлийн хувилбарын эх кодыг ердийнх шигээ нийтлэлийн төгсгөлд байгаа линкээс татаж авах боломжтой.

    Сайтын эх файлууд

    Энэ нийтлэлд оруулсан шинэчлэлт бүхий сайтын эх файлуудыг хавсралтаас татаж авах боломжтой нэмэлт материал.