АУСистем хийцгээе. Хичээл 5

Өмнөх хичээлүүд бид манай АУСистемийн цөм болох Article классыг бичсэн. Одоо сайтын хэрэглэгчийн талын скриптийг бичих болно. Юуны өмнө хэрэглэгчийн талын программыг агуулах index.php нэртэй файл үүсгэнэ. Энэ файл нь хэрэглэгчийн хөтөч дээр хуудсыг үзүүлэх юм. Файлыг сайтын үндсэн хавтаст хадгалан өгөөд доорх кодыг оруулна.

<?php

require( "config.php" );
$action = isset( $_GET['action'] ) ? $_GET['action'] : "";

switch ( $action ) {
  case 'archive':
    archive();
    break;
  case 'viewArticle':
    viewArticle();
    break;
  default:
    homepage();
}

function archive() {
  $results = array();
  $data = Article::getList();
  $results['articles'] = $data['results'];
  $results['totalRows'] = $data['totalRows'];
  $results['pageTitle'] = "Мэдээний архив | Сонин мэдээ";
  require( TEMPLATE_PATH . "/archive.php" );
}

function viewArticle() {
  if ( !isset($_GET["articleId"]) || !$_GET["articleId"] ) {
    homepage();
    return;
  }

  $results = array();
  $results['article'] = Article::getById( (int)$_GET["articleId"] );
  $results['pageTitle'] = $results['article']->title . " | Сонин мэдээ";
  require( TEMPLATE_PATH . "/viewArticle.php" );
}

function homepage() {
  $results = array();
  $data = Article::getList( HOMEPAGE_NUM_ARTICLES );
  $results['articles'] = $data['results'];
  $results['totalRows'] = $data['totalRows'];
  $results['pageTitle'] = "Сонин мэдээ";
  require( TEMPLATE_PATH . "/homepage.php" );
}

?>

Программын кодыг дэлгэрүүлэн авч үзье.

1. Тохиргооны файлыг оруулан ирнэ.
Программын эхний мөрөөр config.php файлыг оруулан ирснээр программын бүх тохиргоонуудыг скрипт ашиглах боломжийг бүрдүүлнэ. Энд бид include() биш require() функцийг ашигласан. Учир нь require() функц оруулан ирэх файл байхгүй тохиолдолд алдаа өгдөг.

2. action параметрийн утгыг авах.
$_GET['action'] параметрийн утгыг скриптэд ашиглах үүднээс түүнийг $action хувьсагчид авна. Гэхдээ эхлээд isset() функцийг ашиглан $_GET['action'] элемент утгатай байгааг шалгах хэрэгтэй. Хэрвээ утга тодорхойлогдоогүй байвал $action хувьсагчид хоосон мөр ("") утга олгоно. Форм, куки, хайлтын форм зэрэг хэрэглэгчээс ирүүлсэн утгуудыг хэрэглэхээсээ өмнө тодорхойлогдсон эсэхийг шалгаж байх нь программчлалын сайн дадал. Энэ нь системийн аюулгүй байдал талаасаа ч тэр программын ажиллагааны үед "undefined index" гэсэн сануулга гарахаас урьдчилан сэргийлдэг.  

3. Гүйцэтгэх ажиллагааг тодорхойлох.
Архив, материалыг үзүүлэх гээд цаашдын үйлдлийг тодорхойлохын тулд URL -ээр дамжин ирсэн action парамерийг switch блок шалгана. Хэрвээ URLaction параметр байхгүй бол нүүр хуудсыг гаргана.

  • archive() функц.
    Функц Article классын getList() аргыг ашиглан өгөгдлийн санд байгаа бүх материалыг үзүүлнэ. Функц getList() аргын үр дүн ба хуудасны гарчгийг $results ассоциатив массивт хадгалсанаар темплейт түүнийг хуудаст гаргах боломжтой болно. Төгсгөлд нь хуудсыг үзүүлэх хэвийг /темплейтийг/ оруулан ирнэ. Бид хэвийн талаар сүүлд үзэх болно.
  • viewArticle() функц
    Энэ функц хуудаст нэг материалыг үзүүлнэ. Функц URL -ийн articleId параметрийг аваад түүнийг тодорхойлогдсон эсэхийг шалгаад утгатай бол материалын обьектыг авахын тулд Article классын getById() аргыг дуудна. Аргаас буцаах үр дүнг үзүүлэх хэвд /темплейт/ ашиглахаар $results массивт хадгална. Хэрвээ материалын ID буюу articleId параметр байхгүй бол функц нүүр хуудсыг үзүүлнэ. Параметрийг шууд дамжуулахын тулд articleId -г (int) төрөлд хөрвүүлж байгаад анхаарна уу. Энэ нь кодод тооноос өөр утга дамжуулахаас сэргийлнэ.
  • homepage() функц.
    Кодын сүүлийн функц homepage() тохиргооны файлд тоог нь заан өгсөн сайтын нүүр хуудаст үзүүлэх материалын жагсаалтыг үзүүлнэ. Тохиргооны файлд HOMEPAGE_NUM_ARTICLES тогтмолын утгыг 5 гэж өгснийг санаж байгаа байх. Функц нь getList() аргад буцаах материалын тоог хязгаарлан өгсөн HOMEPAGE_NUM_ARTICLES параметрийг дамжуулж байгаагаараа л archive() функцээс ялгагдана.

Санамж:

  • Php кодыг сайн ойлгохын тулд сайтын Php хэл хэсгийн хичээлүүдийг үзэн ерөнхий ойлголтыг авах хэрэгтэй.
  • Программын кодыг өөрөө гараараа бичин өгөх нь хэлийн бичлэгийг сурахад их тустай байдаг.

Мэдээлэл таалагдсан бол найзуудтайгаа хуваалцаарай.

  Нээгдсэн тоо: 3838 Нийтийн

Php хэлийг ашиглан веб сайт хийх ажил шинээр эхэлж байгаа хүмүүст ойлгомж муутай санагдах нь элбэг тохиолдоно. C# NET, Visual Studio зэрэг дээд түвшингийн хэлний фреймворк ашиглан хэрэглэгчийн компьютерт суулган ажилладаг программ зохиож байсан хүмүүст веб сайт боловсруулах ажил эхлээд их төвөгтэй мэт санагдана. Учир нь Php, MySql ашиглан сайт хийхийн тулд та сервер болон хэрэглэгчийн талын бүх зүйлээ өөрөө хийх хэрэгтэй болдог. Ийм хэмжээний ажлыг кодлон веб сайт боловсруулна гэвэл мэдээжээр их хугацаа орох нь ойлгомжтой. Тэгвэл сайтыг хэрхэн хурдан боловсруулах вэ? гэсэн асуулт гарч ирдэг. Энд л Php фреймворк, Агуулгын удирдах систем буюу CMS (Content management system) гэсэн ойлголт гарч ирдэг.

  Нээгдсэн тоо: 2754 Төлбөртэй

Веб сайтад хэрэглэгчийн оруулсан мэдээллийн зөв эсэхийг шалгах ажил олон гардаг. Ийм асуудлыг мөрийн функцуудээр шийдвэрлэх нь нилээд хүндрэлтэй ажил болно. Тэгэхлээр ийм төрлийн ажиллагаанд хамгийн үр дүнтэй шийдэл нь тогтмол илэрхийлэл буюу (regular expression) ашиглах явдал юм. Эхэндээ тогтмол илэрхийлэл нь танд их ойлгомжгүй мэт санагдаж болох боловч маш бага хэмжээний мэдлэгийн хүрээнд олон хүнд асуудлуудлыг шийдвэрлэж болно.

Тогтмол илэрхийлэл.

Тогтмол илэрхийлэл гэдэг нь текстэн мөр юм. Тусгай тэмдэгтүүдээр үүсгэсэн хэвээр (шаблон) мөр дотор хэвэнд тохирох хэсгийг хайдаг. PHP –д POSIX, PCRE гэсэн хоёр төрлийн тогтмол илэрхийллийг ашигладаг. Бид хичээлээр POSIX төрлийг авч үзнэ. Тогтмол илэрхийллийг хэрхэн үүсгэдэг талаар үзэхийн өмнө хэвийн (шаблон) тухай ойлголттой танилцъя.
Хэв гэдэг ойлголт нь зөвхөн програмчлалын хэлэнд байдаг ойлголт биш. Жишээ нь бид php суулгасан директорт ороод хайлт хийх (F3) товчийг дараад php гэж бичээд хайлт хийхэд нэрэнд нь php гэсэн үг орсон бүх файлуудыг гаргаж ирдэг. Энд бид хэв (шаблон) үүсгэж өгсөн гэсэн үг. Одоо хайлтын нөхцлөө нарийвчилъя. Хэрвээ бид хайлт хийхдээ php? бичиж өгвөл энэ нь хайж байгаа файлын нэр нь php гэж эхлээд араас нь дурын тэмдэгтүүд байж болохыг заасан хэв болж байгаа болно. Ерөнхийдээ ийм зарчмаар PHP -д хэвийг үүсгэж өгдөг.

  Нээгдсэн тоо: 3907 Төлбөртэй

Cookie гэж юу болох, түүнийг үүсгэх, унших, устгах талаар Cookie-тэй ажиллах хичээлд үзсэн. Энэ хичээлээр Php -гийн Cookie ойлголтын талаар арай дэлгэрүүлэн авч үзье. Сервер хэрэглэгчээс POST эсхүл GET аргын алингаар нь ч бай өгөгдөл хүлээн авсан байлаа ч тэр хэрэглэгчийн талаар юу ч мэдэхгүй. Өөрөөр хэлбэл сервер өгөгдөл хүлээн аваад боловсруулаад үр дүнг бидэнд буцаана. Бид серверт шинээр эсхүл дахин шаардлагыг илгээхэд тэр бидний талаар юуг ч санахгүй тул таныг шинэ хэрэглэгч эсхүл үгүй гэдгийг мэддэггүй. Энэ нь хэн нэгэн сохор хөгжимчин гудамжинд тоглолт хийгээд зогсож байхад өнгөрч яваа хүн түүний хандивын хайрцагт мөнгө хийгээд дараа нь буцахдаа дахин хийхтэй төстэй зүйл. Хөгжимчин мөнгө хийсэн хүн түрүүнд нь өгсөн хүн үү эсхүл өөр хүн байв уу гэдгийг мэдэхгүй шүү дээ.

  Нээгдсэн тоо: 2712 Төлбөртэй

Файлтай ажиллах

Файл нь мэдээлэл хадгалагч дээрх нэр бүхий хэсэг. Файлтай ажиллахын тулд эхлээд түүнийг нээх хэрэгтэй. Энэ зорилгод ихэнхдээ fopen() функцыг ашигладаг. Функц нь нээх файлын нэр болон нээлтийн горимыг заасан тусгай тэмдэгтүүдийг оролтын параметр болгон авна. Эхний параметрын хувьд хэрвээ заагдсан нэртэй файл байхгүй бол функц нь алдаа өгнө. Функцээс source төрлийн утгатай файлын дискрипторийг (файлыг нээхэд олгогдсон дугаар) буцаана. Файлыг нээх ажиллагаа бүтэлгүй болсон тохиолдолд FALSE утгыг буцаана. Хоёрдугаар параметр нь файл нээх горимыг заах бөгөөд доорх утгуудыг авна.

Цэсийг нээх хаах ажиллагааг хариуцах компонентийг боловсруулсан тул энэ хичээлээр програмийн удирдах цэсийг…

Нээгдсэн тоо : 6

 

Математикийн үйлдлүүдэд нэг ба тэг тоонууд онцгой шинжүүдтэй. Үржих үйлдэлд нэг ба тэг

Нээгдсэн тоо : 10

 

Давталт (Iterator) паттерн нийлмэл обьектын бүх элементүүдэд тэдгээрийн дотоод бүтцийг задлахгүйгээр хандах абстракт интерфейсийг тодорхойлдог. C# хэл дээр…

Нээгдсэн тоо : 13

 

Тодорхой нөхцөлд жишээ нь тоог тэгд хуваах гэх мэт тохиолдолд систем өөрөө онцгой нөхцлийн генерацийг хийдэг. Гэхдээ C#

Нээгдсэн тоо : 15

 

Програмийг удирдах цэсийг нээх болон хаах ажиллагааг хариуцах компонентийг боловсруулъя. Үүний тулд төслийн components хавтаст Navigation хавтасыг үүсгээд…

Нээгдсэн тоо : 17

 

Арифметикийн үндсэн 4 үйлдлийн нэг бол үржих. Нэмэх , хасах үйлдлийн талаар…

Нээгдсэн тоо : 14

 

Шаблоны арга (Template Method) хэв дэд классуудад алгоритмын бүтцийг өөрчлөхгүйгээр зарим алхамуудыг дахин тодорхойлох боломж олгосон ерөнхий алгоритмыг…

Нээгдсэн тоо : 17

 

Гурвалжны медиантай холбоотой бодлогууд шалгалт шүүлэгт ихээр орж ирдэг. Иймээс гурвалжны медиан, түүний шинжүүдийг бүрэн мэддэг байх хэрэгтэй.

Нээгдсэн тоо : 23

 

Бүх онцгой нөхцлүүдийн суурь бол Exception төрөл. Төрөлд онцгой нөхцлийн талаарх мэдээллийг авч болох хэдэн шинжийг тодорхойлсон байдаг.…

Нээгдсэн тоо : 23

 
Энэ долоо хоногт

илэрхийллийг хялбарчил

Нээгдсэн тоо : 996

 

ABCD трапецийн бага диагонал BD=6 бөгөөд суурьтай перпендикуляр. Трапецийн AD=3, DC=12 бол B, D мохоо өнцгийн нийлбэрийг ол.

Нээгдсэн тоо : 2220

 

Геометрийн шалгалтанд сурагчид шалгалтын асуултуудаас нэг асуулт ирнэ. Сурагч "Дотоод өнцөг" сэдвийн асуултуудад хариулах магадлал 0,35 харин "Багтаасан тойрог" сэдвийн асуултуудад хариулах ммагадлал 0,2 байжээ. Шалгалтын асуултуудад энэ хоёр сэдэвт хоёуланд зэрэг хамаарах асуулт байхгүй бол сурагчид энэ хоёр сэдвийн аль нэгэнд нь хамааралтай асуулт ирэх магадлалыг ол.

Нээгдсэн тоо : 550