Download as pdf or txt
Download as pdf or txt
You are on page 1of 62

PHP

F.ITM202 Вэб зохиомж


Лекц №7

А.Түвшинбаяр (Доктор, Ph.D)


Server side basics

CS380
Arrays
3

$name = array(); # create


$name = array(value0, value1, ..., valueN);
$name[index] # get element value
$name[index] = value; # set element value
$name[] = value; # append PHP
$a = array(); # empty array (length 0)
$a[0] = 23; # stores 23 at index 0 (length 1)
$a2 = array("some", "strings", "in", "an", "array");
$a2[] = "Ooh!"; # add string to end (at index 5)
PHP
Хавсаргах: индекс заахгүйгээр хаалтны тэмдэглэгээг ашиглана
Элементийн төрлийг заагаагүй; төрлүүдийг хольж болно

Array functions
4

function name(s) description


count массив дахь элементүүдийн тоо
print_r массивын агуулгыг хэвлэх
array_pop, array_push, массивыг стек/дараалал болгон
array_shift, array_unshift ашиглах
in_array, array_search,
array_reverse, хайх, дахин эрэмбэлэх
sort, rsort, shuffle
array_fill, array_merge,
array_intersect, үүсгэх, дүүргэх, шүүх
array_diff, array_slice, range
array_sum, array_product,
array_unique, боловсруулах элементүүд
array_filter, array_reduce

Array function example
5

$tas = array("MD", "BH", "KK", "HM", "JP");


for ($i = 0; $i < count($tas); $i++) {
$tas[$i] = strtolower($tas[$i]);
}
$morgan = array_shift($tas);
array_pop($tas);
array_push($tas, "ms");
array_reverse($tas);
sort($tas);
$best = array_slice($tas, 1, 2);
PHP
PHP дахь массив нь Java дахь бусад олон цуглуулгуудыг орлодог
жагсаалт, стек, дараалал, багц, газрын зураг, ...

foreach loop
6

foreach ($array as $variableName) {


...
} PHP
$fellowship = array(“Frodo", “Sam", “Gandalf", “Strider", “Gimli",
“Legolas", “Boromir");
print “The fellowship of the ring members are: \n";
for ($i = 0; $i < count($fellowship); $i++) {
print "{$fellowship[$i]}\n";
}
print “The fellowship of the ring members are: \n";

foreach ($fellowship as $fellow) {


print "$fellow\n";
} PHP

Multidimensional Arrays
7

<?php $AmazonProducts = array( array(“BOOK", "Books", 50),


array("DVDs", “Movies", 15),
array(“CDs", “Music", 20)
);
for ($row = 0; $row < 3; $row++) {
for ($column = 0; $column < 3; $column++) { ?>
<p> | <?= $AmazonProducts[$row][$column] ?>
<?php } ?>
</p>
<?php } ?>
PHP

Multidimensional Arrays (cont.)
8

<?php $AmazonProducts = array( array(“Code” =>“BOOK",


“Description” => "Books", “Price” => 50),
array(“Code” => "DVDs",
“Description” => “Movies", “Price” => 15),
array(“Code” => “CDs",
“Description” => “Music", “Price” => 20)
);
for ($row = 0; $row < 3; $row++) { ?>
<p> | <?= $AmazonProducts[$row][“Code”] ?> | <?=
$AmazonProducts[$row][“Description”] ?> | <?=
$AmazonProducts[$row][“Price”] ?>
</p>
<?php } ?>
PHP

String compare functions
9

Name Function
strcmp харьцуулах
strstr, strchr Мөр доторх тэмдэгтийг олох
strpos мөрийн тоон байрлалыг олох
str_replace, substr_replace мөрийг солих

Харьцуулалт нь дараахь байж болно.


Хэсэгчилсэн тоглолтууд
Бусад
Том жижиг том үсгийн мэдрэмжгүй функц бүхий хувилбарууд
 strcasecmp

String compare functions examples
10

$offensive = array( offensive word1, offensive word2);


$feedback = str_replace($offcolor, “%!@*”, $feedback);
PHP

$test = “Hello World! \n”;


print strpos($test, “o”);
print strpos($test, “o”, 5); PHP

$toaddress = “feedback@example.com”;
if(strstr($feedback, “shop”)
$toaddress = “shop@example.com”;
else
CS380
if(strstr($feedback, “delivery”)
$toaddress = “fulfillment@example.com”;
PHP

Regular expressions
11

[a-z]at #cat, rat, bat…


[aeiou]
[a-zA-Z]
[^a-z] #not a-z
[[:alnum:]]+ #at least one alphanumeric char
(very) *large #large, very very very large…
(very){1, 3} #counting “very” up to 3
^bob #bob at the beginning
com$ #com at the end PHPRegExp

Тогтмол илэрхийлэл: текстийн хэсэг дэх загвар


PHP нь:
POSIX
Perl тогтмол илэрхийллүүд

2 Embedded PHP

CS380
Printing HTML tags in PHP = bad style
13

<?php
print "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"\n";
print " \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">\n";
print "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n";
print " <head>\n";
print " <title>Geneva's web page</title>\n";
...
for ($i = 1; $i <= 10; $i++) {
print "<p> I can count to $i! </p>\n";
}
?> HTML
PHP-ийн хамгийн сайн загвар бол суулгагдсан PHP кодын хэвлэх/echo
мэдэгдлийг багасгах явдал юм
гэхдээ хэвлэхгүйгээр бид хуудас руу динамик контентыг хэрхэн оруулах вэ?

PHP expression blocks
14

<?= expression ?> PHP

<h2> The answer is <?= 6 * 7 ?> </h2>


PHP
The answer is 42
output

PHP илэрхийллийн блок: илэрхийллийн утгыг HTML-д үнэлж,


оруулах PHP-ийн жижиг хэсэг.
 <?= expression ?> нь дараахтай тэнцүү байна:

<?php print expression; ?>


PHP

Expression block example
15

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"


"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>CSE 190 M: Embedded PHP</title></head>
<body>
<?php
for ($i = 99; $i >= 1; $i--) {
?>
<p> <?= $i ?> bottles of beer on the wall, <br />
<?= $i ?> bottles of beer. <br />
Take one down, pass it around, <br />
<?= $i - 1 ?> bottles of beer on the wall. </p>
<?php
}
?>
</body>

Common errors: unclosed braces, missing = sign
16

...
<body>
<p>Watch how high I can count:
<?php
for ($i = 1; $i <= 10; $i++) {
?>
<? $i ?>
</p>
</body>
</html> PHP

хэрвээ та хаалтаа хаахаа мартвал "гэнэтийн $end"-ийн тухай


алдаа гарч ирнэ.
хэрэв та <?=-д = мартсан бол илэрхийлэл нь ямар ч гаралтыг
гаргахгүй

Complex expression blocks
17

...
<body>
<?php
for ($i = 1; $i <= 3; $i++) {
?>
<h<?= $i ?>>This is a level <?= $i ?> heading.</h<?= $i ?>>
<?php
}
?>
</body> PHP

This is a level 1 heading.


This is a level 2 heading.
This is a level 3 heading. output

3 Advanced PHP Syntax
Functions

CS380
Functions
19

function name(parameterName, ..., parameterName) {


statements;
} PHP
function quadratic($a, $b, $c) {
return -$b + sqrt($b * $b - 4 * $a * $c) / (2 * $a);
} PHP

параметрийн төрлүүд болон буцах төрлүүд бичигдээгүй


буцаах мэдэгдэлгүй функц нь NULL утгыг шууд буцаана

CS380

Default Parameter Values
20

function print_separated($str, $separator = ", ") {


if (strlen($str) > 0) {
print $str[0];
for ($i = 1; $i < strlen($str); $i++) {
print $separator . $str[$i];
}
}
} PHP

print_separated("hello"); # h, e, l, l, o
print_separated("hello", "-"); # h-e-l-l-o
PHP
хэрэв ямар ч утгыг дамжуулаагүй бол анхдагч утгыг ашиглана

4 PHP include file

CS380
22
PHP Include File
Нэг PHP файлын агуулгыг сервер ажиллуулахаас өмнө өөр PHP
файл руу оруулна
Ашиглах
include() нь анхааруулга үүсгэдэг боловч скрипт нь
үргэлжлүүлэн ажиллах болно
require() нь аюултай алдаа гаргахад скрипт зогсох болно

CS380

include() example
23

<a href="/default.php">Home</a>
<a href="/tutorials.php">Tutorials</a>
<a href="/references.php">References</a>
<a href="/examples.php">Examples</a>
<a href="/contact.php">Contact Us</a> PHP
<html>
<body>
<div class="leftmenu">
<?php include("menu.php"); ?>
</div>

<h1>Welcome to my home page.</h1>


<p>I have a great menu here.</p>

</body>
</html> PHP

24
Reading/writing an entire file

# reverse a file
$text = file_get_contents("poem.txt");
$text = strrev($text);
file_put_contents("poem.txt", $text); PHP

file_get_contents нь файлын агуулгыг бүхэлд нь мөр болгон


буцаана
file_put_contents нь өмнөх агуулгыг орлуулж файлд мөр бичдэг

CS380

25
Appending to a file
# add a line to a file
$new_text = "P.S. ILY, GTG TTYL!~";
file_put_contents("poem.txt", $new_text, FILE_APPEND);
PHP

old contents new contents


Roses are red,
Roses are red,
Violets are blue.
Violets are blue.
All my base,
All my base,
Are belong to you.
Are belong to you.
P.S. ILY, GTG TTYL!~
CS380

The file function
26

# display lines of file as a bulleted list


$lines = file("todolist.txt");
foreach ($lines as $line) {
?>
<li> <?= $line ?> </li>
<?php
}
?> PHP
file нь файлын мөрүүдийг мөрийн массив болгон буцаана
мөр бүр \n-ээр төгсдөг
Мөр бүрээс \n-г хасахын тулд нэмэлт хоёрдахь параметрийг ашиглана уу:

$lines = file("todolist.txt",FILE_IGNORE_NEW_LINES);
PHP

Unpacking an array: list
27

list($var1, ..., $varN) = array; PHP

$values = array(“mundruid", "18", “f", "96");


...
list($username, $age, $gender, $iq) = $values;
PHP

жагсаалтын функц нь хувьсагчийн нэрсийн таслалаар тусгаарлагдсан


жагсаалтыг параметр болгон хүлээн авдаг
Үүнийг ашиглан массивын агуулгыг хэд хэдэн хувьсагч болгон хурдан
"задлах"

CS380

Fixed-length files, file and list
28

Xenia Mountrouidou
(919)685-2181
570-86-7326 contents of file
personal.txt
list($name, $phone, $ssn) = file("personal.txt");
PHP

файлыг мөрийн массив болгон уншиж, мөрүүдийг хувьсагч болгон


задалдаг
Файлын яг length/format мэдэх шаардлагатай

CS380

29
Splitting/joining strings
$array = explode(delimiter, string);
$string = implode(delimiter, array);
PHP
$class = "CS 380 01";
$class1 = explode(" ", $s); # ("CS", “380", “01")
$class2 = implode("...", $a); # "CSE...380...01"
PHP

explode ба implode мөр болон массив хооронд хөрвүүлэх

CS380

30
Reading directories

function description
"өгөгдсөн директор доторх бүх файлын
scandir нэрсийн массивыг буцаана ("myfile.txt" гэх
мэт зөвхөн файлын нэрийг буцаана) "
"өгөгдсөн загварт тохирох бүх файлын
нэрсийн массивыг буцаана ("foo/bar/
glob
myfile.txt" гэх мэт файлын зам болон нэрийг
буцаана) "

CS380

Example for glob
31

# reverse all poems in the poetry directory


$poems = glob("poetry/poem*.dat");
foreach ($poems as $poemfile) {
$text = file_get_contents($poemfile);
file_put_contents($poemfile, strrev($text));
print "I just reversed " . basename($poemfile);
} PHP

glob нь “wildcard" замыг * тэмдэгттэй тааруулж болно


basename функц нь файлын замаас ямар ч тэргүүлэх лавлахыг салгана

CS380

Example for scandir
32

<ul>
<?php
$folder = "taxes/old";
foreach (scandir($folder) as $filename) {
?>
<li> <?= $filename ?> </li>
<?php
}
?>
</ul> PHP

• .
• ..
• 2009_w2.pdf
• 2007_1099.doc output

5 PHP Exceptions

CS380
34
Exceptions
Заасан алдаа (онцгой) нөхцөл байдал үүссэн тохиолдолд кодын
гүйцэтгэлийн хэвийн урсгалыг өөрчлөхөд ашигладаг.
Exceptions зүйл тохиолдоход ихэвчлэн юу тохиолддог вэ?
одоогийн кодын төлөв хадгалагдана
кодын гүйцэтгэл нь урьдчилан тодорхойлсон (захиалгат) онцгой
байдлын зохицуулагч функц рүү шилжих болно
дараа нь зохицуулагч болно
хадгалсан кодын төлөвөөс гүйцэтгэлийг үргэлжлүүлэх,
скриптийн гүйцэтгэлийг зогсоох эсвэл
скриптийг кодын өөр газраас үргэлжлүүлнэ үү

35
Exception example
<?php
//create function with an exception
function checkStr($str)
{
if(strcmp($str, “correct”)!= 0)
{
throw new Exception(“String is not correct!");
}
return true;
}

//trigger exception
checkStr(“wrong”);
?> PHP

36
Exception example (cont.)
<?php
//create function with an exception
function checkStr($str)
{

}

//trigger exception in a "try" block


try
{
checkStr(“wrong”);
//If the exception is thrown, this text will not be shown
echo 'If you see this, the string is correct';
}

//catch exception
catch(Exception $e)
{
echo 'Message: ' .$e->getMessage();
}
?> PHP

6 PHP cookies and sessions

CS380
38
Cookies
Асуудал: HTTP харьяалалгүй байна
Күүки гэж юу вэ?
Үйлчлүүлэгчийн машин дээр вэб сайт хадгалах боломжтой
өчүүхэн мэдээлэл
Үйлчлүүлэгчээс шинэ хуудас хүсэх болгонд тэдгээрийг вэб
сайт руу буцааж илгээдэг.

39
Bad Cookies?
Urban myth: мөрдөх, хувийн нууцыг зөрчих
Бодит байдал:
cookies харьцангуй хор хөнөөлгүй байдаг
зөвхөн бага хэмжээний мэдээллийг хадгалах боломжтой

CS380

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

CS380

41
Cookies vs Sessions
Күүкийг урт наслахаар тохируулж болно
Веб серверийн кластертай үед күүки нь жигд ажилладаг
Сессүүд сервер дээр хадгалагддаг, өөрөөр хэлбэл
үйлчлүүлэгчид таны хадгалсан мэдээлэлд хандах эрхгүй
Session өгөгдлийг хуудас бүрээр дамжуулах шаардлагагүй;
Үйлчлүүлэгчид ID илгээхэд л хангалттай бөгөөд өгөгдлийг
дотоод файлаас ачаална.
Session нь таны сервер дээр явагддаг тул таны хүссэн хэмжээтэй
байж болно.

42
Create a cookie
setcookie(name, value, expire, path, domain);
PHP

<?php
setcookie("user", “Harry Poter", time()+3600);
?>

<html>
.....
PHP

43
Delete a Cookie

<?php
// set the expiration date to one hour ago
setcookie("user", "", time()+3600);
?>
PHP

44
Start/end a session
bool session_start ( void )
bool session_destroy ( void ) PHP

Таны бүх session өгөгдөл session супер глобал массивт


хадгалагддаг. $_SESSION

$_SESSION['var'] = $val;
$_SESSION['FirstName'] = "Jim"; PHP

7 Form Basics

CS380
46
Web Data
Ихэнх сонирхолтой вэб хуудсууд нь өгөгдлийг тойрон эргэлддэг
Жишээ нь: Google, IMDB, Digg, Facebook, YouTube, Rotten
Tomatoes
текст, HTML, XML, мультимедиа зэрэг олон форматыг авч
болно
Тэдний олонх нь бидэнд өөрсдийн өгөгдөлд хандах боломжийг
олгодог
Зарим нь бүр бидэнд өөрсдийн шинэ мэдээллээ оруулахыг
зөвшөөрдөг
Ихэнх сервер талын вэб програмууд нь гүйцэтгэлийг удирдан
чиглүүлдэг параметрүүдийг хүлээн зөвшөөрдөг
CS380

47
Reading/writing an entire file
URL?name=value&name=value...
http://example.com/student_login.php?username=xenia&sid=1234567

query string: вэб сервер рүү хөтчөөс дамжуулсан


параметрүүдийн багц
URL-ийн төгсгөлд нэр/утга хосыг байрлуулах замаар
ихэвчлэн дамжуулдаг
Сервер дээрх PHP код нь параметрийн утгыг шалгаж, ашиглаж
болно

CS380

48
HTML forms
form: хэрэглэгчийн мэдээллийг
хүлээн авч вэб сервер рүү
мэдээллийг илгээдэг UI
удирдлагын бүлэг
Өгөгдлийн сервер рүү асуулгын
мөр болгон илгээдэг

49
HTML form: <form>
<form action="destination URL">
form controls
</form>
HTML

шаардлагатай үйлдлийн шинж чанар нь энэ form өгөгдлийг


боловсруулах хуудасны URL-г өгдөг
Form бөглөж, илгээх үед түүний өгөгдлийг үйлдлийн URL руу
илгээнэ

50
Form example
<form action="http://www.google.com/search">
<div>
Let's search Google:
<input name="q" />
<input type="submit" />
</div>
</form>
HTML

Form удирдлагыг div гэх мэт блок элементэд wrap өгнө



8
Form controls

CS380
52
Form controls: <input>
<!-- 'q' happens to be the name of Google's required
parameter -->
<input type="text" name="q" value="Colbert Report" />
<input type="submit" value="Booyah!" />
HTML

оролтын элемент нь олон UI хяналтыг бий болгоход ашиглагддаг


an inline element that MUST be self-closed
name шинж чанар нь сервер рүү дамжуулах асуулгын
параметрийн нэрийг зааж өгдөг

53
Form controls: <input> (cont.)
<!-- 'q' happens to be the name of Google's required
parameter -->
<input type="text" name="q" value="Colbert Report" />
<input type="submit" value="Booyah!" />
HTML

type төрөл button, checkbox, file, hidden, password, radio, reset,


submit, text, …
value шинж чанар нь удирдлагын анхны текстийг заадаг

54
Text fields: <input>
<input type="text" size="10" maxlength="8" /> NetID <br /
>
<input type="password" size="16" /> Password
<input type="submit" value="Log In" />
HTML

оролтын шинж чанарууд: disabled, maxlength, readonly, size, value


size atribute нь дэлгэц дээрх текст талбарын өргөнийг хянадаг
maxlength нь хэрэглэгч талбарт хэдэн тэмдэгт бичих
боломжтойг хязгаарладаг

55
Text boxes: <textarea>
<textarea rows="4" cols="20">
Type your comments here.
</textarea>
HTML

эхний текстийг textarea tag байрлуулсан (заавал биш)


шаардлагатай row ба cols шинж чанарууд нь тэмдэгтээр өндөр/
өргөнийг зааж өгдөг
Зөвхөн уншигдах нэмэлт шинж чанар нь текстийг өөрчлөх
боломжгүй гэсэн үг юм

56
Check boxes: <input>
<input type="checkbox" name="lettuce" /> Lettuce
<input type="checkbox" name="tomato" checked="checked" />
Tomato
<input type="checkbox" name="pickles" /> Pickles
HTML

аль нь ч биш, 1 эсвэл олон нүдийг нэгэн зэрэг тэмдэглэж


болно

57
Radio buttons: <input>
<input type="radio" name="cc" value="visa" checked="checked" />
<input type="radio" name="cc" value="mastercard" />
<input type="radio" name="cc" value="amex" />
HTML

нэрийн шинж чанараар бүлэглэсэн (нэг удаад зөвхөн нэгийг шалгаж болно)
тус бүрдээ утгыг зааж өгөх ёстой, эс тэгвээс энэ нь утга болгон илгээгдэх
болно

58
Text labels: <label>
<label><input type="radio" name="cc" value="visa"
checked="checked" /> Visa</label>
<label><input type="radio" name="cc" value="mastercard" /
> MasterCard</label>
<label><input type="radio" name="cc" value="amex" />
American Express</label>
HTML

ойролцоох текстийг удирдлагатай холбодог тул та текст дээр дарж


удирдлагыг идэвхжүүлэх боломжтой
шалгах хайрцаг эсвэл радио товчлуураар ашиглаж болно
шошгоны элементийг CSS загварын дүрмээр чиглүүлж болно

Drop down lists: <select>, <option>
59

<select name="favoritecharacter">
<option>Frodo</option>
<option>Bilbo</option>
<option selected="selected">Gandalf</option>
<option>Galandriel</option>
</select>
HTML

option element нь сонголт бүрийг илэрхийлдэг


select optional attributes: идэвхгүй, олон, хэмжээ
Сонгосон шинж чанаруудын аль нь анх сонгогдсоныг
тохируулна

60
Using: <select> for lists
<select name="favoritecharacter[]" size="3"
multiple="multiple">
<option>Frodo</option>
<option>Bilbo</option>
<option>Gandalf</option>
<option>Galandriel</option>
<option selected="selected">Aragorn</option>
</select>
HTML
Нэмэлт олон шинж чанар нь shift эсвэл ctrl товчийг дарж олон зүйлийг
сонгох боломжийг олгодог
Хэрэв та олон сонголт хийхийг зөвшөөрвөл параметрийн нэрийг []-ээр
зарлах ёстой
тохируулгын tag эхлээд сонгохоор тохируулж болно

61
Option groups: <optgroup>
<select name="favoritecharacter">
<optgroup label="Major Characters">
<option>Frodo</option>
<option>Sam</option>
<option>Gandalf</option>
<option>Aragorn</option>
</optgroup>
<optgroup label="Minor Characters">
<option>Galandriel</option>
<option>Bilbo</option>
</optgroup>
</select>
HTML
Хэрэв бид bold italic бичигт дургүй бол яах ёстой вэ?

Анхаарал хандуулсан
та бүхэнд баярлалаа
Асуулт?
Цахим шуудан:
tuvshinbayar@must.edu.mn

You might also like