PHP პირველი ნაბიჯები (ნაწილი 4 – კონსტანტები)

წინა ნაწილში განვიხილეთ ცვლადები. ცვლადისაგან განსხვავებით კონსტანტა (მუდმივა) არის იდენტიფიკატორი რომელიც ცვლადის საპირისპიროდ მოქმედებს. თუკი ცვლადს შეიძლება ეცვლებოდეს მნიშნველობა კონსტანტის მნიშვნელობა არ შეიძლება შეიცვალოს.

php-ში კონსტანტისთვის მნიშვნელობის მინიჭება ხდება “define()” ფუნქციით ან “const” საკვანძო სიტყვით.

მოცემული მაგალითების გასატესტად შეგიძლიათ ისარგებლოთ ონლაინ კომპილატორ/რედაქტორებითაც:


http://sandbox.onlinephpfunctions.com/

http://www.writephponline.com/

https://ideone.com/

 

 

define()-ის სინტაქსი:

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

 

name

კონსტანტის დასახელება.

 

value

კონსტანტის მნიშვნელობა. PHP 5-ში, მნიშვნელობა უნდა იყოს სკალარული (integer, float, string, boolean, ან NULL). PHP 7-ში მასივებიც არის ნებადართული.

 

case_insensitive

თუ დავწერთ TRUE, კონსტანტი არ იქნება დამოკიდებული იმაზე დასახელებაში სიმბოლოები მთავრულით იქნება დაწერილი თუ ნუსხურით. ავტომატურად case_insensative მითითებულია FALSE რაც ნიშნავს CONSTANT და Constant სხვადასხვა იდენტიფიკატორებია.

 

ფუნქცია აბრუნებს TRUE წარმატების დროს ან FALSE შეცდომის დროს.

მაგალითად:

define("PET","Panda");

კონსტანტა PET-ს მიანიჭებს მნიშვნელობას Panda-ს. კონსტანტის დასახელება უნდა იყოს მოქცეული ბრჭყალებში  ” ან ‘ სიმბოლოებში;

შემდეგ კონსტანტის მნიშვნელობის გამოტანა შეგვეძლება ბრძანებით:

echo PET;

როდესაც კონსტანტას ვიძახებთ მაშინ კონსტანტას დასახელება უნდა იყოს ბრჭყალების ” და ‘ სიმბოლოების გარეშე.

იმისათვის რომ გავიგოთ არსებობს თუ არა კონკრეტული დასახელების კონსტანტა, გამოიყენება ფუნქცია defined();

bool defined ( string $name )

 

name

კონსტანტის დასახელება.

ფუნქცია აბრუნებს TRUE თუ ასეთი დასახელებით მოიძებნა კონსტანტა ან FALSE თუ ვერ მოძებნის.

მაგალითად:


if(defined(PET)){

echo "ეს კონსტანტა არსებობს და მისი მნიშვნელობა არის: ".PET;

}

კონსტანტის define() ფუნქციით განსაზღვრა უნდა მოხდეს ყველანაირი კლასების, მეთოდების თუ ფუნქციების გარეთ.

მაგალითად:

function test1(){

define("PET","Panda");

}

გამოიტანს შეცდომას და კოდი არ იმუშავებს.

defines ალტერნატივა const ით კონსტანტის განსაზღვრა შესაძლებელია როგორც კლასებში, მეთოდებში და ფუნქციებში ისევე მათ გარეთ ხოლო კონსტანტის დასახელება არ უნდა მოვაქციოთ ბრჭყალებში. განსხვავებით define() ფუნქციით განსაზღვრული კონსტანტისა const-ით განსაზღვრული კონსტანტაზე წვდომა მოქმედებს იმ არეალში სადაც ის არის განსაზვრული, ხოლო define() ფუნქციით განსაზღვრის შემთხვევაში კონსტანტა გლობალური წვდომის სტატუსით არის და მასზე წვდომა შესაძლებელია პროგრამის ნებისმიერ ადგილას;

const-ით განსაზღვრის მაგალითი:

const TRANSPORT="Auto";

მაგალითად თუ ჩვენ ამ ორ კონსტანტას განვსაზღვრავთ შემდეგნაირად:


define("PET","Panda");

const TRANSPORT="Auto";

და შემდეგ ფუნქიაში მივმართავთ PET-ს მაშინ მივიღებთ მის მნიშვნელობას ხოლო TRANSPORT-ზე მიმსართვის დროს მივიღებთ შეცდომას.


function test2(){

echo PET; //იმუშავებს სწორად

echo TRANSPORT; //მივიღებთ შეცდომას და კოდი არ იმუშავებს

}

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

დამატებითი ინფორმაცია კონსტანტების შესახებ ინგლისურ ენაზე შეგიძლიათ იხილოთ მისამართზე http://php.net/manual/en/function.define.php

 

PHPMailer კრიტიკული დაცულობის ხარვეზები

PHPMailer-ში აღმოჩენილია დაცვის ხარვეზი (CVE-2016-10033), რომლის საშუალებითაც ჰაკერს შეუძლია დისტანციურად გაუშვას რაიმე კოდი სერვერზე. შეცდომა გასწორებულია 5.2.18 და მაღალ ვერსიებში.

წყარო: http://thehackernews.com/2016/12/phpmailer-security.html

phpPgAdmin და PHP7

PostgreSQL მონაცემთა ბაზებით სარგებლობს მრავალი დეველოპერი, ხოლო PostgreSQL-თან სამუშაოდ  phpPgAdmin-ითაც  სარგებლობს. phpPgAdmin-ის ახალ 5.1 ვერსიაში აღმოვაჩინე რომ ის არ არის თავსებადი PHP7 ვერსიასთან, რის გამოც ვერ აკეთებს მონაცემთა ბაზის ექსპორტს. საიტზეც არაფერი ეწერა ამ პრობლემის შესახებ და ვერსიაც იგივე 5.1 დამხვდა. ან უნდა გადავსულიყავი php5 ვერსიაზე ან უნდა შემეცვალა კოდი ისე რომ ის თავსებადი ყოფილიყო php7 ვერსიასთან. ასეც მოვიქეცი სადაც არათავსებადი კოდი ვნახე განვაახლე და შესაბამისობაში მოვიყვანე php7 თან. რადგანაც ეს შეიძლება ჩემს გარდა კიდევ არაერთ ადამიანს დასჭირდეს, ჩამოსატვირთი ბმულიც დავდე და შეგიძლიათ ისარგებლოთ. მოცემული პაკეტი არათავსებადია php 4 და უფრო ძველ ვერსიებთან, ხოლო php5 და უფრო ახალ ვერსიაბთან მუშაობს.

ჩამოსატვირთი ბმული >>

Download phpPgAdmin 5.1 compatible with PHP7 >>

 

PHP პირველი ნაბიჯები (ნაწილი 3 – ცვლადები)

ცვლადი არის იდენტიფიკატორი (სივრცე კომპიუტერის მეხსიერებაში), რომელიც იდენტიფიცირებულია სიმბოლური სახელით და გააჩნია მნიშვნელობა. პროგრამის მოქმედებების მიხედვით ცვლადის მნიშვნელობა შეიძლება იცვლებოდეს. PHP-ში ცვლადი აღინიშნება ალფავიტური და რიცხვითი სიმბოლოებით შემდგარი დასახელებით რომლის წინაც მოთავსებულია დოლარის ნიშანი. დოლარის ნიშნის შემდეგ აუცილებლად უნდა იყოს ან ალფავიტური სიმბოლო a დან z-მდე ან ქვედა ტირე _. ძირითადად ცვლადების სახელები ლათინური ალფავიტური სიმბოლოებით აღინიშნება თუმცა შესაძლებელია სხვა ენის ალფავიტური სიმბოლოთიც მაგალითად ქართულით აღნიშვნა.

$a;
$_a;
$ა;

ამ შემთხვევაში გვაქვს ცვლადები $a, $_a და $ა, რომელთა მნიშვნელობაც არ არის განსაზღვრული. ასეთ შემთხვევაში მას ავტომატურად ენიჭება null მნიშვნელობა რომელიც გამოიყენება მხოლოდ იმის აღსანიშნავად რომ ცვლადი არსებოს.

ცვლადზე მნიშვნელობის მინიჭება ხდება უდრის “=” ნიშნით.

$a=1;
$b="board";

ამ მაგალითში გვაქვს ცვლადი $a, რომელსაც გააჩნია რიცხვითი მნიშვნელობა და ცვლადი $b,  რომელსაც აქვს ტექსტური მნიშვნელობა.

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

$a==1;

არ მიანიჭებს მნიშვნელობას.

ცვლადის სახელი უნდა იყოს კონკრეტულ პროგრამაში მისი როლის მიხედვით შერჩეული რომ ადვილად გაარჩიოთ რომელი ცვლადი რისთვის არის განკუთვნილი.

$pet="პანდა";
$transport="ავტომობილი";

ცვლადის უპირატესობა პროგრამაში მისი მნიშვნელობის ცვლის გარდა თავად ამ ცვლადის გამოსახულებაში ჩართვაა ან სხვა ცვლადზე მისი მნიშვნელობის მინიჭება.

$yearnow=2016;
$yearbirth=1973;
$age=$yearnow-$yearbirth;
echo $age;

გამოიტანს შესაბამსად 43.

PHP პირველი ნაბიჯები (ნაწილი 2 – php როგორც სერვერი)

პირველ ნაწილში განვიხილეთ php-ს ინსტალაცია. აგრეთვე დავწერეთ და გავუშვით მცირე ზომის კოდი. ძირითადი ყურადღება Windows პლატფორმაზე ინსტალაციას დაეთმო, რადგან Linux სისტემებში ეს ყველაფერი გაცილებით მარტივად მხოლოდ ერთი ბრძანებით სრულდება. Ubuntu-სა და სხვა debian-ის ბაზაზე აწყობილ სისტემებში ამისთვის საჭიროა გავუშვათ ბრძანება:

sudo apt-get install php

Continue reading PHP პირველი ნაბიჯები (ნაწილი 2 – php როგორც სერვერი)

PHP პირველი ნაბიჯები (ნაწილი 1)

PHP-logo.svg
იმისათვის რომ დავწეროთ პროგრამა PHP პროგრამირებით, აუცილებელია დაინსტალებული გვქონდეს PHP-ს გამშვები პროგრამა რომლის გადმოწერაც შეგიძლიათ საიტიდან http://php.net
შემდეგ download მენიუზე დააკლიკებთ აირჩევთ თქვენი პლატფორმის შესაბამის ვერსიას მაგალითად windows-ისთვის გადმოწერეთ http://windows.php.net/download/ ბმულიდან. დაინსტალებისთვის საკმარისია არქივი ამოაარქივოდ winrar ან მსგავსი პროგრამით დისკზე მარტივი გზაა C:\php ფოლდერში.რის შემდეგაც დაახლოებით ამდაგვარად გამოყურება ფოლდერი.

php-path-win

შემდეგ windows-ის შემთხვევაში გარემოს ცვლადებში PATH–ს მიუთითოთ ამოარქივებული ფოლდერის ადგილმდებარეობა.

phpenv-win

ამის შემდეგ სასურველია კომპიუტერი გადაიტვირთოს.
php-ს დაინსტალების სხვადასხვა გზა არსებობს, მაგალითად ავტომატიზებული ვარიანტი XAMPP https://sourceforge.net/projects/xampp/ რომელიც მონაცემთა ბაზებსაც აინსტალებს და საჭირო მოდულებს. იმის გაგება თუ სწორად არის PHP დაინტალებული შეგვიძლია ბრძანების ველიდან. Windows-ის შემთხვევაში Run ში აკრიფეთ cmd და გახსნილ ტერმინალში ჩაწერეთ php -v და დააჭირეთ Enter ღილაკს. რის შემდეგაც ტერმინალის ეკრანზე უდნა გამოვიდეს PHP-ს ვერსია და კომპანიის სახელწოდება
დაახლოებით ამდაგვარი:

PHP 5.4.45 (cli) (built: Sep  2 2015 23:48:30)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

win-cmd-php-version

php-ს პროგრამის დასაწერად საკმარისია მარტივი ტქსტური რედაქტორი მაგალითად notepad.
php კოდი აუცილებლად მოქცეული უნდა იყოს <?php და ?> ტეგებში

დავწეროთ პირველი პროგრამა:
გავხსნათ notepad ან რომელიმე ტექსტური რედაქტორი, არა საოფისე Word და ასე შემდეგ, არამედ ტექსტური რედაქტორი. ჩავწეროთ მასში შემდეგი კოდი:

შეინახეთ ფაილი დაარქვით თქვენთვის სასურველი სახელი, დასახელებაში არ უნდა იყოს ცარიელი ადგილები და უდნა შეიცავდეს ინგლისურ ალფავიტურ სიმბოლოებს a დან z-მდე შესაძლებელია, როგორც პატარა ასოებით ისე მთავრულით. აგრეთვე დასაშვებია რიცხვები, სიმბოლოები ტირე “-” და დაბლა ტირე “_” ოღონდ ტირე და რიცხვები დასახელების დასაწყისში არ უნდა იქნას მოთავსებული.
ფაილი უნდა ბოლოვდებოდეს .php გაფართოებით. მაგალითად თუ ფაილს დავარქმევთ test მთლიანობაში ფაილს test.php უდნა დაერქვას. მას შემდეგ რაც შეინახავთ ფაილს გახსენით ტერმინალი და cd ბრძანებით გადადით იმავე ფოლდერში სადაც ფაილი შენიახეთ.

notepad-test.php

 

თუ ფაილს ქვია test.php დაწერეთ ბრძანება
php test.php
და დააჭირეთ Enter ღილაკს.

სწორად შესრულების შემთხვევაში ეკრანზე გამოჩნდება
Hi!

win-cmd-test.php
გაითვალისწინეთ რომ თითოეულ სიმბოლოს დიდი მნიშვნელობა აქვს კოდის დაწერის დროს. მაგალითად თუ ტექსტს

echo “Hi!”;

გამოვაკლებთ ” ან ; სიმბოლოს პროგრამა არ იმუშავებს. ” სიმბოლოებს შორის თავსდება ჩვეულებრივი ტექსტი რომელიც უდნა გამოვიდეს ეკრანზე, echo არის ბრძანება რომელსაც ეკრანზე გამოაქვს ინფორმაცია, ხოლო სტრიქონის ბოლოს წერტილმძიმე ; სიმბოლო მიუთითებს PHP-ს კონკრეტული ბრძანების დასრულებაზე.

Apache, PHP და MySQL-ის გაშვება ინსტალაციის გარეშე

ალბათ არაერთ დეველოპერს ჰქონია სურვილი რომ პროგრამა ისე დაეინსტალირებინა რომ Apache, PHP და MySQL სერვერების ინსტალაცია არ ყოფილიყო საჭირო. შეიძლება არის სხვადასხვა ვარიანტები მაგრამ ამ შემთხვევაში საუბარი მაქვს USBWebserver-ზე. მისი უპირატესობა სწორედ ის გახლავთ რომ რაც გჭირდებათ არის მხოლოდ გადმოწეროთ არქივი განაარქიოთ და შემდეგ ამ ფოლდერიდან გაუშვათ usbwebserver აპლიკაცია. ვებ საიტის ან აპლიკაციის გასაშვებად საჭიროა ფაილები განათვსოთ root დირეტორიაში. სერვერი შეგიძლიათ განათავსოთ როგორც მყარ დისკზე ასევე ფლეშ მეხსიერებაზე და შემდეგ იქიდან გაუშვათ.

საიტის მისამართი: http://www.usbwebserver.net

USBWebserver