PHP

**PHP** (ინგლ. PHP: Hypertext Preprocessor) — პროგრამირების ენა, რომელიც თავისი ოპერატორებით PHP კოდს, ბრაუზერში გარდაქმნის HTML და XHTML კოდად. ბრაუზერის მისამართების პანელში საიტის გამოძახებისას სახელწოდების ბოლოს php დაბოლოება ნიშნავს იმას, რომ მოცემული საიტი შექმნილია PHP კოდით. ბრაუზერში გვერდის ვებ-კოდების მოთხოვნისას, არ გამოჩნდება PHP კოდი, გამოჩნდება მხოლოდ HTML კოდი. ეს ტექნოლოგია პროგრამირებაში ახალი არაა და იგი ჯერ კიდევ PERL -ში გამოიყენებოდა, რომლისაგანაც წარმოიშვა PHP. 1994 წელს რასმუს ლერდორფმა, რომელსაც სურდა ხსენებული ხერხის განხორციელება ბრაუზერში, შექმნა პირველი ვერსია, რომელიც ამავე წელს გამოაქვეყნა, სახელწოდებით Personal Homepage Tools. პირველი ვერსია მალე გადამუშავდა და მას ოფიციალურად დაერქვა PHP.

## შესავალი PHP-ში 
არცთუ დიდი ხნის წინ Web-კვანძებიდან მომხმარებელს ადგილზე
ძირითადად სტატიკური HTML-ფაილები გადმოეცემოდა, რომელთაც იგი
ბროუზერის მეშვეობით მხოლოდ კითხულობდა. დღეს კი WEB-სივრცეში
უმეტესწილად დინამიკური Web-ფურცლები ანუ DHTML-ფაილები
გადაიგზავნება. მათი აწყობა ხდება Web-კვანძების სერვერზე
განთავსებული WEB-პროგრამების გაშვებით, რასაც მომხმარებელი
ახორციელებს საკუთარი კომპიუტერიდან სისტემასთან დიალოგში.
ინტერნეტში პროგრამების შექმნისათვის დღეს ყველაზე
პოპულარული WEB-დაპროგრამების ენა არის PHP4. იგი
განსაკუთრებით აადვილებს სერვერებზე განლაგებულ მონაცემთა
ბაზებთან ურთიერთობას.
დასაწყისში PHP შეიქმნა, როგორც მაკროსების
კრებული, მარტივი სახის პირადი WEB-ფურცლების ფორმირებისთვის.
შემდეგ კი იგი იქცა სრულფასოვან დაპროგრამების ენად, რომელზეც
დაწერილი კონსტრუქციები ჩაიდგმება სერვერზე მოთავსებულ HTML-
ტექსტებში. WEB-ფურცლის გამოძახებისას PHP-ის პრეპროცესორის მიერ
ადგილზე ხდება ამ კონსტრუქციების (პროგრამული ფრაგმენტების)
დამუშავება და HTML-ის არსებულ ფრაგმენტებს შორის ჩაემატება
შესაბამისი ინფორმაცია, მაგალითად, ბაზიდან ამოღებული მონაცემები,
სერვერზე კონსტრუირებული გრაფიკული გამოსახულებები და სხვ.
PHP-ის ვერსია - PHP4(5) - მისაერთებელი მოდულის სახით
კომპილირდება დღეისათვის ყველაზე პოპულარულ WEB-სერვერ-პროგრამა
Apache-სთვის. სერვერზე PHP-პროგრამები უმეტესწილად ურთიერთობენ
MysQL მონაცემთა ბაზასთან (რომელიც უფასოდ ვრცელდება). ასე რომ,
APACHE, MySQL და PHP ტრიადას დღევანდელ დღეს კონკურენტი არ ჰყავს.
თუმცა, ცხადია, PHP-ს მუშაობა შეუძლია სხვა WEB-გარემოში და სხვა
ბაზებთანაც.
საერთოდ, PHP-პროგრამებს ინტერპრეტატორი ამუშავებს, მაგრამ
შესაძლებელია მათი კომპილირებაც (თუმცა ეს შესაძლებლობა მხოლოდ
კომერციული დამატების სახით არსებობს), რაც კიდევ უფრო ამაღლებს
სისტემის მწარმოებლურობას.
CGI-სთან შედარებით PHP-ს ის მნიშვნელოვანი უპირატესობა
გააჩნია, რომ მისი ინტერპრეტატორი ფუნქციონირებს სერვერთან მჭიდრო
ინტეგრაციის პირობებში საჭირო არ არის თითოეული პროგრამის
შესრულებისას სისტემის ხელახლა გაშვება, რაც მნიშვნელოვნად
ამაღლებს მუშაობის სისწრაფეს.
PHP-ს რიგი სხვა ღირსებებიც გააჩნია:
• პროდუქტის ღიაობა;
• პროგრამების დაწერის გაადვილება HTML-ტექსტისა და თვით
პროგრამული ნაწილის განცალკევების გამო;
• პროგრამების ერთი ოპერაციული სისტემიდან სხვაში გადატანის
სიმარტივე;
• პროგრამების შესრულების საკმარისი სისწრაფე.
## დაყენება 
PHP-ს უფასოდ ჩამოტვირთავთ მისი ოფიციალური საიტი კვანძიდან. მისამართზე შესაძლებელია პროდუქტის
შესახებ უახლესი, ამომწურავი ინფორმაციის მიღება.
შევისწავლოთ, როგორ ხდება PHP-ის დაყენება APACHE WEB სერვერთან სამუშაოდ, კომპიუტერის მართვისას ლინუქსი ოპერაციული სისტემის მიერ. (საერთოდ, შესაძლებელია APACHE-სთან უკვე მიერთებული
PHP-ის ვარიანტის მოძიებაც, მაგრამ როცა ამ პროცესს თვითონ
ვახორციელებთ, არჩევანი უფრო ფართო ხდება ამ შემთხვევაში
პარამეტრებს ენიჭება მნიშვნელობებს).
სისტემაში PHP-ის დაყენების უფლება მხოლოდ ადმინისტრატორს
(სუპერმომხმარებელს) აქვს. PHP-ის, როგორც APACHE-სთვის მოდულის,
კომპილირება ორი გზით შეიძლება განხორციელდეს:
* პირველი გულისხმობს Apache-ის ხელახლა კომპილაციას მასთან
* PHP-ის სტატიკურად მიერთებით (ლინკირებით);
* მეორე გზა ითვალისწინებს მხოლოდ PHP-ის კომპილაციას,
ოღონდ მანამდე უნდა განხორციელდეს APACHE-ის კომპილაცია
DSO რეჟიმში  (Dynamic shared object - საერთო სარგებლობის
დინამიური ობიექტს აღნიშნავს). სწორედ, ამ რეჟიმით
ვისარგებლებთ PHP-ის კომპილირებისას. ეს გზა PHP-ის
დაყენების უფრო მარტივი ხერხია და ჩვენც მას განვიხილავთ.
იმის შესამოწმებლად, უზრუნველყოფს თუ არა Apache აღნიშნულ
რეჟიმში მოდულების მიერთებას, საჭიროა შესრულებაზე გავუშვათ httpd
ფაილი -1 ალმით:
 /www/bin/httpd -1
გამოდის მოდულების სია. თუ მასში ფიგურირებს mod_so.c,
დავასკვნით, რომ DSO რეჟიმში მუშაობა შესაძლებელია (წინააღმდეგ
შემთხვევაში მოგვიწევს Apache-ის ხელახლა კომპილირება).
PHP4-ის ჩამოტვირთვის შედეგად განკარგულებაში გვეძლევა გზიპ
უტილიტით შეკუმშული Php-4.0.4pll.tar.gz დისტრიბუტიული ფაილი.
მისი გაშლა შემდეგი ბრძანებით ხდება:
 tar -xvzf php-4.0.4pll.tar.gz
გადავდივართ PHP-დისტრიბუტივის კატალოგში:
 pd../php-4.0
შესრულებაზე ვუშვებთ აღნიშნულ კატალოგში არსებულ ცონფიგურე
პროგრამას პარამეტრებისათვის ყველაზე უფრო მიღებული
მნიშვნელობების მინიჭებით:

```
./configure --enable-track-vars \
--with-gd \
--with-mysql \
--with-apxs=/www/bin/apxs
```

ბოლო მნიშვნელობა იმ კატალოგზე მიუთითებს, რომელშიც Apache
Web-სერვერია დაყენებული, myspl ბაზისთვის კი იგულისხმება, რომ იგი
დუმილით გათვალისწინებულ კატალოგშია დაყენებული. მაგრამ თუკი ეს
ასე არ არის, საჭიროა ამ განსხვავებული კატალოგის შესახებ
ინფორმაციის გათვალისწინებაც:

```
--with-mysql=/path/to/dir
```

configure პროგრამის შესრულების შემდეგ ვუშვებთ მაკე უტილიტას.
კომპიუტერზე დაყენებული უნდა იყოს C ენის კომპილატორი.

## Apache სერვერი 
Apache-სერვერის კატალოგის conf-ქვეკატალოგში მოვძებნით
httpd.conf ფაილს და დავუმატებთ მას შემდეგ სტრიქონებს:

```
AddType application / x-httpd-php .php
AddType application / x-httpd-php-source .phps
```

ეს ნიშნავს, რომ PHP-ინტერპრეტატორი .php გაფართოების ფაილებს
დაამუშავებს როგორც პროგრამებს, ხოლო .phps გაფართოების მქონეთ _
როგორც გაფერადებულ HTML-ტექსტს.
php.ini ფაილის მეშვეობით კი შესაძლებელია PHP-ის პარამეტრების
შეცვლა უკვე მისი კომპილირების და დაყენების შემდეგ. UNIX ამ ფაილს
ინახავს /usr/local/lib ბ კატალოგში, ხოლო ვინდოუს ოპერაციული სისტემა -
ვინდოუს-ში.
შესაძლებელია ამ ფაილის მიმდინარე კატალოგში განთავსებაც.
მაშინ მას ექნება ლოკალური მოქმედების არეალი. ჯერჯერობით კი ჩვენ
ვკმაყოფილდებით ამ ფაილის პარამეტრებისთვის მინიჭებული სტანდარტული მნიშვნელობებით.
php.ini ფაილში შეიძლება მნიშვნელობის განსაზღვრა შემდეგი
დირექტივისთვისაც: short_open_tag=On (True,Yes), რაც უზრუნველყოფს
php-ბლოკების გაფორმებას  სახით. ამ შესაძლებ-
ლობისGგამორთვა ხორციელდება დირექტივისთვის Off (False,No
მნიშვნელობის მინიჭებით.
თუ ჭებ-ფურცლების ფორმირებისათვის XML-ენასაც ვიყენებთ, მაშინ
ამ ე.წ. მოკლე ტეგების გამოყენება ზემოთ აღნიშნული ხერხითვე უნდა
ავკრძალოთ და ვისარგებლოთ მხოლოდ სტანდარტული ტეგებით:

## Hello World 
პირველი პროგრამა PHP-ზე
ბლოკონტ-ტექსტში აკრიფეთ შემდეგი ტექსტი:

ფაილი დაიმახსოვროთ first.php სახელით.
თუ სერვერზე არ ვმუშაობთ, მოგვიხდება FTP-სერვისით ფაილის
მასზე გადაგზავნა (კოპირება). შემდეგ კი ამ ფაილს შეიძლება მიმართოთ ბრაუზერიდან. ეკრანზე აისახება წარწერა:
Hello web! მაგრამ თუკი სერვერზე PHP დაყენებული არ არის, ანდა ფაილის
გაფართოება არასწორად იქნა განსაზღვრული, მაშინ მოსალოდნელია
ეკრანზე გამოვიდეს შემდეგი ტექსტი:

print()  წარმოადგენს ფუნქციას თქვენ მიერ დაწერილ უმარტივეს
პროგრამაში. თუ მას ეკრანზე სტრიქონი გამოჰყავს, მაშინ ეს სტრიქონი
ბრჭყალებში უნდა ჩაისვას (დასაშვებია ერთმაგი ბრჭყალებიც).
იცით, რომ ფუნქციის არგუმენტები ფრჩხილებში უნდა მოთავსდეს.
პრინტ ფუნქცია კი ამ მხრივ გამონაკლისია - დასაშვებია მის მიერ
გამოსაყვანი ინფორმაცია ფრჩხილებში არ მოაქციოთ.
print() ფუნქციის ანალოგიური ფუნქციაა echo() რომელიც გამოიყენება ზუსტად print() ფუნქციის მსგავსად მაგრამ  ერთადერთი განსხვავება ამ ორ ფუნქციას შორის არის ტექსტის მონიტორზე გამოტანის სისწრაფე.ამ მხრივ echo() ფუნქცია print() ფუნქციაზე წინაა,თუმცა სისწრაფეში განსხვავება არც თუ ისე დიდია,მეტიც,მისი შემჩნევა ძალზედ რთულია ამიტომაც echo() ფუნქცია შეიძლება ითქვას რომ print() ფუნქციის სრული ანალოგია.
PHP-ინსტრუქციები წერტილ-მძიმით უნდა დაბოლოვდეს. გამონაკლისს
შეიძლება წარმოადგენდეს ბლოკში ბოლო ინსტრუქცია, თუმცა ეს
რეკომენდებული არ არის (საეჭვო შემთხვევებში შეიძლება ასეთმა
გადაწყვეტილებამ ინტერპრეტატორი შეცდომაში შეიყვანოს).
ისევე, როგორც ჯავასკრიფტი-ის სცენარები, PHP-ინსტრუქციების
ბლოკებიც შეიძლება უშუალოდ HTML-ტექსტში განლაგდეს:
ლისტინგი 1

 HTML-ის და PHP-ის კავშირი! 

.
ასევე შესაძლებელია php ფაილში HTML კოდის ჩაწერაც, მაგრამ მისი პირდაპირი ჩაწერა php ფაილში გამოიწვევს შეცდომას

html
?>

ასეთი ჩანაწერი შეცდომაა, რადგან php ფაილში HTML კოდი საჭიროა print ან echo ბრძანებაში მოექცეს, რათა იგი ბრაუზერმა სწორად და გასაგებად აღიქვას.
ზემოთ მოცემული მაგალითის სწორი ვარიანტი იქნება ასეთი სახის:

html";
?>

HTML კოდები უნდა ჩაიწეროს ჩვეულებრივი ტექსტის მსგავსად print ბრძანებაში

## ცვლადები 
ცვლადები
PHP-ში ცვლადის სახელი $ სიმბოლოთი იწყება! მომდევნო
პოზიციებზე კი შეიძლება გამოიყენოთ ლათინური სიმბოლოები, ციფრები
და ხაზგასმის ნიშანი. სხვა სიმბოლოების, მათ შორის ხარვეზის
(ცარიელი არის) გამოყენება არ დაიშვება. მოვიყვანოთ ცვლადების
სწორად დასახელების მაგალითები:

```
$ a
$ a_b_c
$ b555
```

ცვლადებს ენიჭებათ მნიშვნელობები. მნიშვნელობები და
შესაბამისად ცვლადებიც სხვადასხვა ტიპის შეიძლება იყოს. კერძოდ,
ცვლადებში დასაშვებია შევინახოთ: რიცხვები, სიმბოლოთა სტრიქონები,
ობიექტები, მასივები, ლოგიკური მნიშვნელობები...
როგორც წესი, ცვლადის შექმნა და მისთვის მნიშვნელობის მინიჭება
ერთსა და იმავე ინსტრუქციაში ხდება, მაგალითად:

```
$num1 = 8;
$name = “ანდრია”;
```

ინსტრუქციებში მნიშვნელობამინიჭებული ცვლადის გამოყენება,
ფაქტობრივად, ამ მნიშვნელობის გამოყენებაა. მაგალითად, გამოსახულება
 print $num1;
ეკრანზე გამოიყვანს იმავე ინფორმაციას (8), რასაც - გამოსახულება
 print 8;
აგრეთვე შესაძლებელია ცვლადების შეერთება რათა კოდი არ გადაიტვირთოს ზედმეტი echo ან print ბრძანებებით.
ცვლადების შესაერთებლად გამოიყენება "." წერტილი.
მაგალითად:

მოცემულ მაგალითში $saxeli და $asaki ორივე მხრიდან წერტილითაა გამოყოფილი ტექსტისგან რადგან მათ ორივე მხრიდან უერთდებათ ტექსტი ამიტომაც ასეთ შემთხვევებში საჭიროა ცვლადების ორივე მხრიდან გამოყოფა,ხოლო თუ სტრიქონი სრულდება არა ტექსტით არამედ ცვლადით ამ შემთხვევაში ცვლადი ტექსტისგან მხოლოდ ერთი წერტილით(რომელიც ექნება იმ მხრიდან რომელი მხრიდანაც უერთდება ტექსტი) გამოიყოფა რადგან მას აღარ  მოსდევს ტექსტი

## მუშაობა HTML ფორმებთან
### ტექსტური ფორმები
PHP-ს შესწავლისას მნიშვნელოვანია HTML  ფორმებთან მუშაობის პრინციპების შესწავლა.
HTML ფორმები PHP-ს გარეშე არანაირ შედეგს არ იძლევა,საჭიროა შესწავლა იმისა თუ როგორ შეიძლება გამოყენებულ იქნეს HTML ფორმები PHP ენით.

მაგალითი 1:

სახელი:
ტექსტი:

მოცემული მაგალითი არის უმარტივესი HTML ფორმა და მისი განხილვა საჭირო არარის თუმცა ყურადღება უნდა მიექცეს input ველების სახელწოდებებს ანუ name ატრიბუტის მნიშვნელობებს.
მოცემული HTML კოდს სჭირდება PHP ფაილი რომელსაც ფორმებიდან მიღებული მონაცემები გაეგზავნება და დამუშავდება სურვილისამებრ.
ახლა უნდა შეიქმნას PHP ფაილი სახელწოდებით send.php შემდეგი შიგთავსით:

თქვენი ტექსტია ".$text;
?>

მაგალითად,თუ პირველ ფორმაში(სახელი) შეყვანილია "გოგა" და მეორეში(ტექსტი) -"სალამი",მაშინ მონიტორზე გამოვა ტექსტი:

```
გამარჯობა გოგა
თქვენი ტექსტია სალამი
```

$_POST არის მარტივად რომ ვთქვათ ფუნქცია PHP-ში რომელიც იღებს HTML ფორმიდან POST მეთოდით გაგზავნილ მონაცემებს.
POST მეთოდის გარდა ასევე არსებობს GET მეთოდი რომელსაც აქვს მონაცემების ზომის ლიმიტი და მას არ შეუძლია გადასცეს ნებისმიერი სიგრძის მონაცემი PHP ფაილს და ამავე დროს GET მეთოდით გაგზავნილი მონაცემები ბრაუზერის მისამართის ველში აისახება,ხოლო POST მეთოდის გამოყენებას არცერთი ზემოთ ხსენებული მოვლენა არ ახლავს თან.
გარდა ამისა არსებობს მესამე მეთოდიც რომელსაც $_REQUEST ასეთი სახით იყენებენ და მას შეუძლია HTML ფორმიდან მიიღოს როგორც POST ასევე GET მეთოდით გადაცემული მონაცემები მაგრამ მისი როგორც მეთოდოს გამოყენება ასეთი სახით

არ შეიძლება რადგან იგი მხოლოდ მონაცემების მისაღებად გამოიყენება . REQUEST მეთოდი ზუსტად ისეთივე პრინციპით გამოიყენება როგორითაც POST და GET მეთოდები.

შენიშვნა! HTML ფორმაში  ტეგის method ატრიბუტის მნიშვნელობა უნდა ემთხვეოდეს მონაცემების მიღების მეთოდს, გარდა იმ შემთხვევისა როდესაც მონაცემების მიღება ხდება REQUEST მეთოდით.

## რესურსები ინტერნეტში 
* *PHP-ს დაყენების სახელმძღვანელო*
* „PHP-ს გადმოსაწერი ბმული“
* „MySQL მონაცემთა ბაზის გადმოსაწერი ბმული“ 
* „Apache სერვერის გადმოსაწერი ბმული“
* *ფუნქციების და ფილტრების სია*

## სქოლიო
კატეგორია:პროგრამირების ენები
კატეგორია:აკრონიმები
კატეგორია:ვებ-პროგრამირება