You are on page 1of 67

Bi ging

LP TRNH WEB
L nh Thanh B mn Mng v Truyn thng My tnh Khoa Cng ngh Thng tin Trng i hc Cng ngh, HQGHN E-mail: thanhld@vnu.edu.vn, thanhld.vnuh@gmail.com Mobile: 0987.257.504

Bi 4

Cng ngh PHP

L nh Thanh, Bi ging Lp trnh web.

Ni dung
Kin trc ca ng dng Web ng PHP To d n web ng vi PHP

L nh Thanh, Bi ging Lp trnh web.

Web ng
Ni dung trang web (HTML + CSS + JavaScript) c Web Server sinh ra khi c yu cu t Client. Rt ph dng: Hu ht cc trang web thng mi u l web ng. S dng ngn ng lp trnh a nng sinh ra ni dung web. S dng CSDL.

L nh Thanh, Bi ging Lp trnh web.

Kin trc web ng

L nh Thanh, Bi ging Lp trnh web.

Web ng vi CSDL
http://www....

Web Browser

Ni dung web

Web Server Ni dung web Yu cu x l

Scripting Compiler/ Interpreter D liu Yu cu d liu

Database Provider
L nh Thanh, Bi ging Lp trnh web.

CSDL

M hnh ba tng
Tng khch: trnh din v tng tc vi ngi dng Tng gia: thc hin cc logic ca ng dng Tng CSDL: bao gm h qun tr CSDL, CSDL ca ng dng
L nh Thanh, Bi ging Lp trnh web.

Apache Web Server


Nhn yu cu t client.
Cc tham s c lu trong cc mng: $_REQUEST, $_GET, $_POST

To tr li cha ni dung web v gi cho web client


Hm header thay i gi tr cc trng tiu gi HTTP Response Hm echo ghi ni dung HTML, javascript, css vo thn gi HTTP Response

Lu trng thi phin lm vic


i tng lu cc bin phin: $_SESSION

L nh Thanh, Bi ging Lp trnh web.

PHP-Hypertext Preprocessor

L nh Thanh, Bi ging Lp trnh web.

PHP c im
Cc trang c tn m rng *.php M PHP ta C, c trong cp th <?php v ?> - c gi l cc phn on PHP. C th nhng cc phn on PHP vo bt kz v tr no trong trang. Bn ngoi cc phn on PHP c th cha m HTML, CSS, javascript. Phn m PHP c thc thi sinh ra phn ng ca trang web. S dng hm echo a ni dung (HTML, CSS, javascript) vo thn gi HTTPResponse. S dng hm header thay i gi tr cc trng tiu gi HTTP Response
L nh Thanh, Bi ging Lp trnh web.

Trang php
M HTML, CSS, javascript <?php
//M php c thc thi bn server sinh ra phn ng ca trang web

?> M HTML, CSS, javascript <?php


//M php c thc thi bn server sinh ra phn ng ca trang web

?> M HTML, CSS, javascript

L nh Thanh, Bi ging Lp trnh web.

V d trang php
<html> <head></head> <body> <h1>Xin cho</h1> <?php
echo Biu din nh phn ca 999 l; echo decbin(999); echo <input type=button value=Okie?>;

?> </html>
L nh Thanh, Bi ging Lp trnh web.

Khi no th cn c m HTML, CSS, javascript trong trang php?


Nhng trang ch bao gm m x l nghip v th khng cn m HTML, CSS, javascript. Nhng trang to giao din
c th cha m HTML, CSS, javascript hoc dng hm echo ca php sinh ra m HTML, CSS, javascript.

L nh Thanh, Bi ging Lp trnh web.

Kiu, bin v hng


Cc kiu nguyn thy: boolean, float, integer, v string Cc kiu phc hp: array v object Tn bin c bt u bng $ nh kiu khng r rng nh ngha hng: define(ten_hang", gia_tri);

L nh Thanh, Bi ging Lp trnh web.

Phm vi ca bin
Phm vi truy cp ca mt bin l ng cnh n c nh ngha
Mt bin cc b c nh ngha trong mt hm ch c phm vi trong hm Mt bin c nh ngha ton cc (khng trong hm no) c phm vi trong tp nh ngha n cng cc tp c bao hm

V d

L nh Thanh, Bi ging Lp trnh web.

<?php $a = 1; include lib.inc'; $b = $a; ?> $a c phm vi trong c tp lib.inc $b c nh ngha trong lib.inc cng c phm vi trong c tp ang nh ngha
L nh Thanh, Bi ging Lp trnh web.

<?php $a = 1; /* global scope */


function test() { echo $a; /* reference to local scope variable */ }

test(); ?> Hm test() khng in ra g c v $a trong hm test l bin cc b, khng phi l $a ton cc.
L nh Thanh, Bi ging Lp trnh web.

<?php $a = 1; /* global scope */


function test() { global $a; echo $a; /* reference to global scope variable */ echo ; echo $GLOBALS*a+; /* reference to global scope variable */ } test(); ?> Hm test() in ra 1 1 v n dng bin $a ton cc.

L nh Thanh, Bi ging Lp trnh web.

Bin tnh ch c phm vi truy cp cc b trong hm, nhng gi tr ca n khng b mt khi thc thi ca chng trnh thot khi hm
function test() { static $count = 0; $count++; echo $count; if ($count < 10) { test(); } $count--;

L nh Thanh, Bi ging Lp trnh web.

Bin bin
Bin bin s dng gi tr ca mt bin khc lm tn V d
$a = delta; $r = array; $$a = 2.34; //tng ng $delta = 2.34 $b = array(alpha', betha', delta', gama'); ${$b[2]} == 2.34; $,$r-*1+ == betha; $obj->$a tng ng $obj->delta
L nh Thanh, Bi ging Lp trnh web.

Kim tra kiu ca bin


is_int($v) - $v l s nguyn? is_float($v) - $v l s thc? is_bool($v) - $v l bin bool? is_string($v) - $v l nt xu? is_array($v) - $v l mt mng? is_object($v) - $v l mt i tng? is_numeric($v) - $v l mt s? is_null($v) - $v = NULL?

L nh Thanh, Bi ging Lp trnh web.

Chuyn kiu
strval($v) - chuyn gi tr ca $v thnh mt xu intval($v) - chuyn gi tr ca $v thnh mt s nguyn floatval($v) - chuyn gi tr ca $v thnh mt s thc

L nh Thanh, Bi ging Lp trnh web.

Kim tra s dng bin


isset($v) - $v c thit lp hay cha empty($v) - $v c gi tr null
unset($v) hy $v

L nh Thanh, Bi ging Lp trnh web.

G li vi kiu v gi tr
In ra kiu, gi tr v biu din ca biu thc
print_r(bieu_thuc) var_dump(bieu_thuc1, bieu_thuc2, )

L nh Thanh, Bi ging Lp trnh web.

Cc hm s thc v nguyn
Tr tuyt i
integer abs(integer number) float abs(float number)

Trn v sn
float ceil(float value) - Gi tr nguyn thp nht cao hn float floor(float value) Gi tr nguyn cao nht thp hn

Lm trn
float round(float value [, integer precision]) - >= .5 chuyn thnh trn, < .5 chuyn thnh sn
L nh Thanh, Bi ging Lp trnh web.

Cc hm s thc v nguyn
Chuyn i thp phn h s khc (xu)
string decbin(integer number) - Thp phn -> Nh phn integer bindec (string binarystring) Nh phn -> thp phn string dechex(integer number) - Thp phn -> hexa (h 16) integer hexdec(string hexstring) - Hexa -> thp phn string decoct(integer number) - Thp phn -> Octan (h 8) integer octdec(string octalstring) Octan -> thp phn

L nh Thanh, Bi ging Lp trnh web.

Cc hm lng gic
float sin(float arg) - sin float cos(float arg) - cos float tan(float arg) - tang float asin(float arg) - asin float acos(float arg) - acos float atan(float arg) - atang float atan2(float y, float x) - atang2 float pi( ) - 3.1415926535898 float deg2rad(float arg) (o gc) -> radian float rad2deg(float arg) (o gc) radian ->

L nh Thanh, Bi ging Lp trnh web.

Cc hm m v logarit
float exp(float arg) - earg float pow(float base, number exp) - baseexp float sqrt(float arg) Cn bc hai ca arg float log(float arg) Logarit c s 2 ca arg float log10(float arg) Logarit c s 10 ca arg

L nh Thanh, Bi ging Lp trnh web.

Cc hm sinh s ngu nhin


void srand(integer seed) - c gi trc khi gi cc hm tip sau integer rand( ) To mt s t nhin ngu nhin integer rand(integer min, integer max) - To mt s t nhin ngu nhin trong on *min, max]

L nh Thanh, Bi ging Lp trnh web.

Xu
Xu c nh du bi du nhy n hoc nhy kp
V d, y l mt xu k t, y l mt xu khc

Xu c th cha bin bn trong


$number = 45; $vehicle = "bus"; $message = "This $vehicle holds $number people";

a du \ v $ vo xu, dng \\ v \$ Ni xu bng du chm (.)


$message = This . $vehicle . holds . $number . people;
L nh Thanh, Bi ging Lp trnh web.

Xu (tip)
strlen($s) di xu $s strtolower($s) - xu vit thng ca $s strtoupper($s) - xu vit hoa ca $s ucfirst($s) xu vit hoa k t u ca $s ucwords($s) xu vit hoa k t u cc t $s ltrim($s) xu c b du trng u xu ca $s rtrim($s) xu c b du trng cui xu ca $s trim($s) xu c b du trng u v cui xu ca $s To d liu nh dng: string sprintf (string format [, mixed args...]) printf (string format [, mixed args...])

L nh Thanh, Bi ging Lp trnh web.

So snh xu
strcmp($str1, $str2) strncmp($str1, $str2, $length)
0 nu hai xu bng nhau -1 nu $str1 < $str2 1 nu $str1 > $str2

L nh Thanh, Bi ging Lp trnh web.

Tm v thay th xu con
substr($s, $start [, $length]) ly xu con ca $s, bao gm cc k t bt u t ch mc $start v c $length k t (hoc n ht nu vng $length) strpos($s, $f [, $offset]) tr v ch mc ca xut hin u tin ca $f trong $s, *bt u tm t $offset+ strstr($s, $f) - tm $f trong $s v tr v xu con bt u t im xut hin u tin ca $f n ht $s stristr(string haystack, string needle) tng t strstr() nhng khng phn bit hoa thng explode($sep, $s [, $limit]) tr v mng l kt qu ca tch $s bng xu phn cch $sep implode($glue, $array) tr v xu l kt qu ni cc phn t mng $array, s dng $glue ni
L nh Thanh, Bi ging Lp trnh web.

Tm v thay th xu con
substr_replace($s, $r, $start [, $length]): Tr v xu l $s c thay [$length] k t bt u t ch mc $start bng [$length] k t u ca $r V d
substr_replace(cho chu, ch, 5); cho kt qu cho ch substr_replace(, chiu, 10, 1); cho kt qu cho bui cng
L nh Thanh, Bi ging Lp trnh web.

Thay th xu con
strtr($s, $from, $to) Tr v xu l kt qu ca thay th cc k t ca $s xut hin trong $from bng k t cng ch mc trong $to, V d
$mischief = strtr("command.com", "aeiou", ""); print $mischief; // prints cmmnd.cm

strtr($s, $map) Tr v xu l kt qu ca thay th cc xu con ca $s xut hin trong mng $map. V d


$glossary = array("BTW"=>"by the way", "IMHO"=>"in my humble opinion", "IOW"=>"in other words", "OTOH"=>"on the other hand"); print strtr($geekMail, $glossary);

L nh Thanh, Bi ging Lp trnh web.

Lp v i tng
class SimpleClass { //nh ngha hng const constant = 'constant value';
// nh ngha bin/thuc tnh public $var = 'a default value'; // nh ngha hm/phng thc public function displayVar() { echo $this->var; }

} $obj = new SimpleClass(); $obj->displayVar(); echo $obj->var; echo SimpleClass::constant;

$this c dng ch i tng gi Tnh kh kin ca cc thuc tnh v phng thc c th l private, protected, public

L nh Thanh, Bi ging Lp trnh web.

Thuc tnh/phng thc tnh


class A { public static $foo = 'I am foo'; public $bar = 'I am bar';
public static function getFoo() { echo self::$foo; } public static function setFoo() { self::$foo = 'I am a new foo'; } public function getBar() { echo $this->bar; }

} $ob = new A(); A::getFoo(); // output: I am foo $ob->getFoo(); // output: I am foo A::getBar(); // fatal error: using $this not in object context $ob->getBar(); // output: I am bar // If you keep $bar non static this will work // but if bar was static, then var_dump($this->bar) will output null
L nh Thanh, Bi ging Lp trnh web.

K tha
Mt lp ch c th k tha t mt lp khc Lp con c th ghi /che phng thc lp cha
tuy cp phng thc c k tha b che, s dng parent:: nh ngha mt phng thc khng th che, thm t kha final vo nh ngha phng thc

class ExtendClass extends SimpleClass { // Redefine the parent method function displayVar() { echo "Extending class\n"; parent::displayVar(); } } $extended = new ExtendClass(); $extended->displayVar();

L nh Thanh, Bi ging Lp trnh web.

Hm to
void __construct ([$args [, $... ]] )
class BaseClass { function __construct() { print "In BaseClass constructor\n"; } } class SubClass extends BaseClass { function __construct() { parent::__construct(); print "In SubClass constructor\n"; } }

$obj = new BaseClass(); $obj = new SubClass();

L nh Thanh, Bi ging Lp trnh web.

Hm hy
void __destruct ( void )
class MyDestructableClass { function __construct() { print "In constructor\n"; $this->name = "MyDestructableClass"; }

function __destruct() { print "Destroying " . $this->name . "\n"; }

$obj = new MyDestructableClass();


L nh Thanh, Bi ging Lp trnh web.

Ton t ch phm vi (::)


:: c s dng Truy cp hng Truy cp thuc tnh, phng thc tnh Phng thc b ghi

L nh Thanh, Bi ging Lp trnh web.

Lp o, phng thc o
Phng thc o
c nh ngha vi t kha abstract Ch c ch k, khng c thn

Lp o
c nh ngha vi t kha abstract Khng c th hin Lp c phng thc o phi c c ngha l lp o

L nh Thanh, Bi ging Lp trnh web.

Lp o, phng thc o
abstract class AbstractClass { // Force Extending class to define this method abstract protected function getValue(); abstract protected function prefixValue($prefix);
// Common method public function printOut() { print $this->getValue() . "\n"; } } class ConcreteClass extends AbstractClass { protected function getValue() { return "ConcreteClass";

public function prefixValue($prefix) { return "{$prefix}ConcreteClass; }

L nh Thanh, Bi ging Lp trnh web.

Giao din
Giao din xc nh cc phng thc m lp phi ci t
Tt c cc phng thc phi public

Lp ci t phi ci t tt c cc phng thc thuc giao din

interface iTemplate { public function setVariable($name, $var); public function getHtml($template); } // Implement the interface class Template implements iTemplate { private $vars = array();

public function setVariable($name, $var)

$this->vars[$name] = $var;

public function getHtml($template) { foreach($this->vars as $name => $value) { $template = str_replace('{' . $name . '}', $value, $template); } }

return $template;

L nh Thanh, Bi ging Lp trnh web.

Giao din
Giao din c th k tha t nhiu giao din khc Mt lp c th ci t nhiu giao din
interface a { public function foo(); } interface b { public function bar(); } interface c extends a, b { public function baz(); } class D implements a, b { }
L nh Thanh, Bi ging Lp trnh web.

Trait
Trait
cung cp mt c ch s dng li m khc k tha c nh ngha tng t lp khng c th hin
Hu ch cho nhng NNLT n k tha nh PHP

class MyHelloWorld1 { use HelloWorld; } $o 1= new MyHelloWorld1(); $o1->sayHello(); $o1->sayWorld();

Mt lp hoc trait c th s dng nhiu trait khc

trait Hello { public function sayHello() { echo 'Hello '; } } trait World { public function sayWorld() { echo 'World'; } } trait HelloWorld { use Hello, World; }

Hello World

class MyHelloWorld2 { use Hello, World; public function sayExclamationMark() { echo '!'; } } $o2 = new MyHelloWorld2(); $o2->sayHello(); $o2->sayWorld(); $o2->sayExclamationMark();

Hello World!
L nh Thanh, Bi ging Lp trnh web.

Che
Vi cc hm trng tn
u tin: Thnh vin lp hin ti > thnh vin trait > thnh vin lp c s

Lp khng th nh ngha li cc thuc tnh c trong trait n s dng trait HelloWorld { public function sayHello() { echo 'Hello World!'; } } class TheWorldIsNotEnough { use HelloWorld; public function sayHello() { echo 'Hello Universe!'; } } $o = new TheWorldIsNotEnough(); $o->sayHello();

class Base { public function sayHello() { echo 'Hello '; } } trait SayWorld { public function sayHello() { parent::sayHello(); echo 'World!'; } } class MyHelloWorld extends Base { use SayWorld; } $o = new MyHelloWorld(); $o->sayHello();

Hello Universe!
L nh Thanh, Bi ging Lp trnh web.

Hello World!

Gii quyt xung t


Xung t xy ra khi s dng cc trait khc nhau c phng thc ging nhau trong cng mt lp hoc mt trait khc Gii quyt
Ch nh s dng phng thc ca trait no i tn phng thc trong mt trait

trait B { public function smallTalk() { echo 'b'; } public function bigTalk() { echo 'B'; } } class Talker { use A, B { B::smallTalk insteadof A; A::bigTalk insteadof B; B::bigTalk as talk; } } C th thay i tnh kh kin vi ton t as B::bigTalk as protected; B::bigTalk as protected talk;

trait A { public function smallTalk() { echo 'a'; } public function bigTalk() { echo 'A'; } }

L nh Thanh, Bi ging Lp trnh web.

Sao chp i tng


Cc bin trong PHP ch lu tham chiu n i tng Nu cn sao chp i tng (thnh mt th hin khc), s dng hm
$copy_of_object = clone $object;

Hm clone sao chp tt c cc thuc tnh => cc thuc tnh tham chiu vn gi nguyn gi tr tham chiu Sau khi hon thnh hm clone, nu hm void __clone(void) c nh ngha, hm __clone() ca i tng mi pc to c gi cho php nhng thay i cn thit gi tr cc thuc tnh

L nh Thanh, Bi ging Lp trnh web.

V d sao chp i tng


class Class1 { private $var_ = 1; public function printMe() { echo " var_ = $this->var_"; } public function changeValue($v_) { $this->var_ = $v_; } } $obj1 = new Class2(); $obj2 = clone $obj1; $obj1->printMe(); $obj2->printMe(); $obj2->changeValues(5, 6); $obj1->printMe(); $obj2->printMe();
var = 2 var_ = 1 var = 2 var_ = 1 var = 2 var_ = 6 var = 5 var_ = 6

class Class2 { private $var = 2; private $obj; public function __construct() { $this->obj = new Class1(); } public function printMe() { echo "<br>var = $this->var"; $this->obj->printMe(); } public function changeValues($v, $v_) { $this->var = $v; $this->obj->changeValue($v_); }

L nh Thanh, Bi ging Lp trnh web.

V d sao chp i tng


class Class1 { private $var_ = 1; public function printMe() { echo " var_ = $this->var_"; } public function changeValue($v_) { $this->var_ = $v_; } } class Class2 { private $var = 2; private $obj; public function __construct() { $this->obj = new Class1(); } public function __clone() { $this->obj = new Class1(); } public function printMe() { echo "<br>var = $this->var"; $this->obj->printMe(); } public function changeValues($v, $v_) { $this->var = $v; $this->obj->changeValue($v_); } }

$obj1 = new Class2(); $obj2 = clone $obj1; $obj1->printMe(); $obj2->printMe(); $obj2->changeValues(5, 6); $obj1->printMe(); $obj2->printMe();

var = 2 var_ = 1 var = 2 var_ = 1 var = 2 var_ = 1 var = 5 var_ = 6 L nh Thanh, Bi ging Lp trnh web.

Khng gian tn
Khng gian tn (namespace) c s dng nhm cc lp, giao din, hm v hng nhm trnh ng khi s dng li m do trng tn
cc ngn ng khc:
.NET: namespace Java: package

L nh Thanh, Bi ging Lp trnh web.

nh ngha khng gian tn


S dng t kha namespace nh ngha khng gian tn <?php namespace MyNameSpace { const CONNECT_OK = 1; interface Conn , /**/class Connection { /* ... */ } function connect() { /* ... */ } } ?>
L nh Thanh, Bi ging Lp trnh web.

Khng gian tn lng nhau


S dng c php biu din th mc <?php namespace Parent\Child\GrandChild { const CONNECT_OK = 1; interface Conn , /**/class Connection { /* ... */ } function connect() { /* ... */ } } ?>
L nh Thanh, Bi ging Lp trnh web.

Khng gian tn ton cc


Cc lp, giao din, hm, hng khng c nh ngha trong mt khng gian tn no c coi nm trong khng gian tn ton cc (\) C th s dng namespace khng c tn biu th khng gian tn ton cc namespace { /*Khng gian tn ton cc*/ } Cc khng gian tn khc c xem nh nm trong khng gian tn ton cc.
\ \namespace1 \namespace1\subnamespace1 \namespace2 \namespace2\subnamespace2 \namespace2\subnamespace2\subsubnamespace2

L nh Thanh, Bi ging Lp trnh web.

Tn y trong khng gian tn


Tn y ca lp, giao din, hm, hng bao gm khng gian tn pha trc
\namespace\ClassName \namespace\InterfaceName \namespace\functionName \namespace\CONSTANT_NAME

L nh Thanh, Bi ging Lp trnh web.

Phn gii tn
Khi lp, giao din khng c vit vi tn y
Chng c hiu l thuc khng gian tn hin ti

Khi hm, hng khng c vit vi tn y


Chng c hiu l thuc khng gian tn hin ti Hoc thuc khng gian tn ton cc nu khng tm thy trong khng gian tn hin ti

L nh Thanh, Bi ging Lp trnh web.

V d phn gii tn
namespace ns1 { class A { private $var = 1; public function a() { echo "<br>ns1\A->var: $this->var"; } } } namespace ns2\ns3 { class A { private $var = 3; public function a() { echo "<br>ns3\A->var: $this->var"; } } } namespace ns2 { class A { private $var = 2; public function a() { echo "<br>ns2\A->var: $this->var"; } } $obj1 = new \ns1\A(); $obj2 = new A(); $obj3 = new ns3\A(); $obj1->a(); $obj2->a(); $obj3->a();
ns1\A->var: 1 ns2\A->var: 2 ns3\A->var: 3

L nh Thanh, Bi ging Lp trnh web.

Nhp v t b danh
khng phi vit tn y (di), PHP cho php nhp v t b danh cho khng gian tn, lp, v giao din use ns\subns\Classname; //sau ch cn s dng Classname thay cho tn y use ns\subns\Classname as Another; //sau s dng Another thay cho tn y use ns\subns\NSname; //sau s dng NSname thay cho tn y
L nh Thanh, Bi ging Lp trnh web.

X l ngoi l
Nm ngoi l
throw new Exception(M t ngoi l);

Bt ngoi l
try {
//m x l nghip v

} catch (Exception $e) {


//nu c ngoi l xy ra khi try th m x l ngoi l khi catch c thc hin. S dng $e->getMessage() ly m t ngoi l

} [catch (OtherException $oe) {


//C th nhiu khi catch sau khi try. Mi khi catch bt mt loi ngoi l

}]* [finally {
M c chy bt k ngoi l xy ra hay khng

}]

L nh Thanh, Bi ging Lp trnh web.

V d
function inverse($x) { if (!$x) { throw new Exception('Division by zero.'); } else return 1/$x; }
try { echo inverse(5) . "\n"; echo inverse(0) . "\n"; } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; }
0.2 Caught exception: Division by zero. L nh Thanh, Bi ging Lp trnh web.

Cc bin dng sn
$GLOBALS Mng cc bin ton cc $_SERVER Mng cc bin my ch $_GET Mng cc bin GET $_POST Mng cc bin POST $_FILES Mng cc tp upload $_REQUEST Mng cc bin Request (c GET v POST) $_SESSION Mng cc bin phin $_ENV Mng cc bin mi trng $_COOKIE Mng cc bin Cookies
L nh Thanh, Bi ging Lp trnh web.

Nhn tham s t GET Request


Nhn yu cu t client.
Cc i tng nhn yu cu: $_REQUEST, $_GET, $_POST

L nh Thanh, Bi ging Lp trnh web.

Nhn tham s t POST Request


Tng t nhn tham s t GET Request, thay $_GET bng $_POST

L nh Thanh, Bi ging Lp trnh web.

To tiu gi HTTP Response


void header ( string $string [, bool $replace = true [, int $http_response_code ]] )
V d
header("HTTP/1.0 404 Not Found"); header("Location: http://www.example.com/"); /* R edirect browser */ header('WWW-Authenticate: Negotiate');
L nh Thanh, Bi ging Lp trnh web.

Cc hm khc
Cc hm t cookie, session, chuyn i biu din a ch ip, (xem cc bi sau v trong ti liu tham kho)

L nh Thanh, Bi ging Lp trnh web.

Tip theo

ng dng CSDL trn nn web

L nh Thanh, Bi ging Lp trnh web.

You might also like