Professional Documents
Culture Documents
Laptrinhphpcoban 6865
Laptrinhphpcoban 6865
(CĂN BẢN)
1. Giới thiệu
PHP (viết tắt hồi quy "PHP: Hypertext Preprocessor") là một ngôn ngữ lập trình kịch bản hay
một loại mã lệnh chủ yếu được dùng để phát triển các ứng dụng viết cho máy chủ Webserver.
Do PHP được phát triển chỉ để dành cho ứng dụng web nên rất dễ dàng nhúng mã vào trang
HTML. Tốc độ nhanh, nhỏ gọn, cú pháp giống C, dễ học và thời gian xây dựng sản phẩm
tương đối ngắn hơn so với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn
ngữ lập trình web rất phổ biến.
Ngôn ngữ, các thư viện, tài liệu gốc của PHP được xây dựng bởi cộng đồng nhưng cũng có sự
đóng góp rất lớn của Zend Inc., công ty do các nhà phát triển cốt lõi của PHP lập nên.
Nói đơn giản: PHP là ngôn ngữ dạng script thực thi trên webserver nhằm tạo ra trang web
động
Thẻ <? và thẻ ?> đánh đấu bắt đầu và kết thúc của phần mã PHP, qua đó máy chủ biết để xử
lý và dịch mã cho đúng.
Mỗi dòng kết thúc bằng dấu ;
Trong trang html, các lệnh php nằm trong tag <? … ?> hoặc <?php …?>
Các khối lệnh nằm trong { … }
Tên mở rộng của file là php
Chú thích
// : 1 dòng
/*
… Khối lệnh
*/
File PHP chỉ chạy khi nó được chuyển giao từ webserver. Vì vậy, muốn thực thi file php, bạn
phải request nó thông qua webserver (nghĩa là mở browser, gõ http://localhost/trangdong.php.
Do đó không thể nhúp đúp vào file php để xem nó ở localcal như trang html được. Để chạy
file PHP :
+ Nếu máy của bạn cài IIS : tạo file trong folder C:\Inetpub\wwwroot
+ Nếu máy của bạn cài AppserV : tạo file trong folder C:\AppserV\www
Trang 1
2. Tạo website để lập trình PHP
Yêu cầu: folder chứa site của bạn phải nằm trong folder gốc của webserver
Giả sử folder site của bạn là WebTinTuc, đặt trong C:\AppSerV\www. Dưới đây là hướng dẫn
cách tạo site PHP
B1: Trong Dreamweaver, nhắp menu Site New Site
B2: Gõ tên Site (WebTinTuc) rồi nhắp Next
B4: Chọn Edit and Test locally… rồi chọn folder chứa site ở bên dưới
(C:\AppServ\www\WebTinTuc)
Trang 2
B6: Nên chọn No (Chưa cần kết nối đến đến remote server lúc này) rồi nhắp Next
Ghi chú: không nhất thiết phải tạo folder WebTinTuc cho site của bạn nhưng phải đặt trong
folder gốc của webserver và tên folder trong B5 và B4 phải giống nhau.
4. Biến
Biến dùng để chứa các giá trị trong quá trình tính toán
Không cần khai báo kiểu dữ liệu lúc khai báo biến
Các kiểu dữ liệu mà biến có thể lưu:
Trang 3
+ Số nguyên : int
+ Số thực : float, double
+ Chuỗi : string
+ Object
+ Logic : True hoặc false
+ Kiểu mảng: Array
+ Null : giá trị đặc biệt, nhằm thể hiện tính rỗng, chưa được gán gì
Khai báo :
$TenBien=<giatri> ;
<?
$hoten= "Tèo"; //Tạo biến hoten và gán giá trị
$dem=1; //Tạo biến dem và gán giá trị
Lệnh echo
Dùng để hiện giá trị của 1 biến, hiện 1 chuỗi
Ví dụ :
<?
echo $hoten; //Hiện giá trị biến hoten
echo "Hello"; //Hiện chữ Hello, không hiện dấu nháy
?>
5. Hằng
Là đối tượng chứa giá trị cố định
Khai báo:
define("TenHang",GiaTri);
Ví dụ:
<hr>
<?
define("tygia",17000);
$usd=10;
$vnd=$usd*tygia;
echo "VND=$vnd ";
?>
Trang 4
Giảm 1 : --
Gán: =
<?
$soluong=3; //Khai báo biến soluong và gán giá trị
echo $soluong; //3
$soluong =5; // biến soluong đã có, chỉ gán giá trị
echo $soluong; //5
?>
7. Lệnh if:
a. Lệnh if đơn giản:
if (điều kiện) {
Khối Lệnh 1;
}
else {
Khối Lệnh 2;
}
Ví dụ 2 : Sử dụng template khác nhau cho trang tùy theo thời gian
Mở file index1.html rồi save as thành index1.php
Qua chế độ code, đến dòng 21 sẽ thấy đoạn code
<link href="c1.css" rel="stylesheet" type="text/css">
Trang 5
}
…
else {
Khối lệnh
}
Ví dụ:
<hr/>
<?
$diem=4;
if ($diem>=8) echo "Giỏi";
elseif ($diem>=7) echo "Khá";
elseif ($diem>=5) echo "Trung bình";
else echo "Kém";
?>
Ví dụ:
<hr/>
<?
$dtb=5;
echo ($dtb>=5)? "Được lên lớp":"Ở lại";
?>
Ví dụ:
<?
for ($i=1;$i<=10;$i++)
{
echo "i=$i<br>";
}
?>
Trang 6
while (<Điều kiện>){
Khối lệnh
}
Điều kiện lặp được kiểm tra trước, do đó có thể không thực hiện lần nào.
Ví dụ:
<hr>
<? $tong=0; $i=1;
while ($i<=10) {
$tong+=$i;
$i++;
}
echo "Tổng=$tong";
?>
Điều kiện lặp được kiểm tra sau, do đó thực hiện ít nhất 1 lần.
Ví dụ:
<? $tong=0; $i=1;
do {
$tong+=$i;
$i+=2;
}while ($i<=10);
echo "Tổng các số lẻ=$tong";
?>
c. Ví dụ:
Trang 7
Tạo file ham.php
Định nghĩa hàm: gõ ở đâu đó (trong tag head):
<?
function solonnhat($a,$b,$c) { //php không chú ý gì đến các lệnh trong hàm cho đến khi hàm được gọi
$m=$a;
if ($b>$m) $m=$b;
if ($c>$m) $m=$c;
return $m;
}
?>
Tạo 1 trang php mới, lưu với tên là testInclude.php. Vào 1 trong tag body, gõ:
<?
include "ngay.php";
echo LucNayLa();
?>
Trang 8
F12 xem thử
Trang 9
b. Khai báo mảng
$TênMảng=array(); // khai báo mảng rỗng
$TênMảng=array(giá tri 1, giá trị 2,…); //khai báo mảng có các phần tử đánh bằng chỉ số
$ TênMảng =array("key1" =>giá trị 1, "key2" => giá trị 2, "key3" => giá trị 3); //Khai báo mảng
dùng key
g. Đếm phần tử
count($TênMảng);
<hr/>
<? echo count($diem) ; //3 ?>
Trang 10
$giatri=array(8,10,9) ;
for ($i=0 ;$i<count($giatri) ;$i++) {
echo "Giá trị thứ $i là $giatri[$i]<br>";
}
?>
<hr/>
<?
$sanpham=array("idSP"=>5, "TenSP"=>"Gạo","Gia"=>12000, "SoLuong"=>3);
reset($sanpham); // đưa con trỏ về phần tử đầu
?>
<table border=1>
<? while (key($sanpham)!=null) { ?>
<tr><td><? echo key($sanpham); ?> </td><td><? echo current($sanpham); ?> </td></tr>
<? next($sanpham); // prev: lui trái, next: ptừ kế ?>
<? } ?>
</table>
Chú ý:
1 phần tử của dãy có giá trị null cũng được, ghi vầy
$a=array(10,null,7); Ghi vầy là sai: $a=array(10,,7);
Phần tử có chỉ số thì key là null
Trang 11
<form action="xulydangnhap.php" method="GET" name="form1" id="form1">
<table width="286" border="0" align="center" cellpadding="4" cellspacing="0">
<caption>ĐĂNG NHẬP</caption>
<tr>
<td width="114">Tên đăng nhập</td>
<td width="150"><input name="u" type="text" class="txtfield" id="u" /> </td>
</tr>
<tr>
<td width="114">Mật khẩu</td>
<td><input name="p" type="password" class="txtfield" id="p" /> </td>
</tr>
<tr>
<td> </td>
<td><input type="checkbox" name="nho" id="nho" />Nhớ user và pass</td>
</tr>
<tr>
<td> </td>
<td><input name="button" type="submit" class="btnSubmit" id="button" value="Đăng
Nhập" /></td>
</tr>
</table>
</form>
F12 file dangnhap.php, gõ user, pass rồi nhắp Login. Nhìn URL của browser, bạn sẽ
thấy file xulydangnhap.php và username, password.
Chỉnh lại form trên với method là POST,
Sửa phương thức GET trong file xulydangnhap.php thành POST và thử lại. Chú ý
URL trên thanh Address khi nhắp nút Login
Trang 12
$_SERVER['HTTP_HOST'] / $_SERVER['SERVER_NAME']: Tên của máy chủ host, nơi mà đoạn script
được thực thi.
$_SERVER['PHP_SELF']: Tên file nằm trên folder gốc của website. Ví dụ: biến
$_SERVER['PHP_SELF'] trong script đặt tại địa chỉ http://example.com/test.php/foo.bar sẽ là
/test.php/foo.bar.
$_SERVER['QUERY_STRING']: Chuỗi chứa tên các tham số và giá trị (sau dấu ?)
$_SERVER['DOCUMENT_ROOT']: Folder gốc của website, nơi mà file script đang được thực thi. Ví dụ:
C:/AppServ/www
$_SERVER['HTTP_REFERER']: địa chỉ của trang web mà từ đó user link đến trang này.
$_SERVER['REMOTE_ADDR']: Địa chỉ của máy client, nơi người sử dụng đang duyệt web.
$_SERVER['REQUEST_URI']: Địa chỉ URI (Định danh đối với các tài nguyên mạng, là một dạng thức
của URL).
$_SERVER['SERVER_SOFTWARE']: Chuỗi định danh của máy chủ, thường được cấp trong phần header
khi trả lời các yêu cầu từ máy khách. Ví dụ: Apache/2.2.4 (Win32) PHP/5.2.3
$_SERVER['REQUEST_METHOD']: Loại yêu cầu mà clientsử dụng để truy cập trang web. VD: 'GET',
'HEAD', 'POST', 'PUT'.
$_SERVER['SCRIPT_FILENAME']: Đường dẫn tuyệt đối của file script đang chạy. Vd:
C:/AppServ/www/laptrinhphp/abc.php
$_SERVER['SCRIPT_NAME']: Đường dẫn của file script. Vd /laptrinhphp/abc.php
<?php
echo 'HTTP_HOST: '. $_SERVER['HTTP_HOST'].'<br>';
echo 'PHP_SELF: '.$_SERVER['PHP_SELF'].'<br>';
echo 'QUERY_STRING: '.$_SERVER['QUERY_STRING'].'<br>';
echo 'DOCUMENT_ROOT: '. $_SERVER['DOCUMENT_ROOT'].'<br>';
echo 'HTTP_REFERER: '. $_SERVER['HTTP_REFERER'].'<br>';
echo 'REMOTE_ADDR: '. $_SERVER['REMOTE_ADDR'].'<br>';
echo 'URL: '. $_SERVER['REQUEST_URI'] .'<br>';
echo 'SCRIPT_FILENAME: '. $_SERVER['SCRIPT_FILENAME'] .'<br>';
echo 'SCRIPT_NAME'. $_SERVER['SCRIPT_NAME'] .'<br>';
?>
Trang 13
Ví dụ 2: Nếu buổi sáng chuyển đến trang index1.html ngược lại chuyển đến
index2.html
<?
if (date('H')<=12) header('location:index1.html'); else header('location:index2.html');
?>
Ví dụ 3: Nếu 2-4-6 chuyển đến trang index1.html ngược lại chuyển đến index2.html
<?
if ((date('w')==1) || (date('w')==3) || (date('w')==5)) header('location:index1.html');
else header('location:index2.html');
?>
Ví dụ 4: Nếu browser là IE thì chuyển đến trang index1.html, ngược lại trang
index2.html
<?
if (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')>0)
header('location:index1.html');
else header('location:index2.html');
?>
Ví dụ 5: Nếu browser là Firefox thì chuyển đến trang index1.html, ngược lại trang
index2.html
<?
if (strpos($_SERVER['HTTP_USER_AGENT'],'Firefox')>0) header('location:index1.html');
else header('location:index2.html');
?>
b. Content-type
Dùng để báo cho browser biết kiểu dữ liệu mà webserver đang trả về cho browser.
Cú pháp: header('Content-type:MimiType);
Ví dụ: tạo file mimetype1.html rồi gõ:
<? header('Content-type: application/msword'); ?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>Chào</title></head>
<body>Chào bạn</body>
</html>
Nếu không có dòng đầu (chữ đỏ) thì browse sẽ hiện trang web có chữ chào bạn. Nếu
có, broswe sẽ biết đó là 1 file word, nó sẽ hiện ra khung này
Trang 15
17. Cookies
a. Giới thiệu:
Cookie dùng để lưu những thông tin về user.
Cookie được lưu trong máy client, trong vùng do browser quản lý
Không dùng cookies để lưu những thông tin quan trọng vì không đảm bảo browser đều
cho phép ghi cookies mà chỉ dùng cookie cho mục đích tiện ích mà thôi (username,
password, thời điểm login cuối, danh sách nhạc ưa thích)
b. Tạo cookie
setcookie("TenCookie",giá trị [,Thời điểm quá hạn]);
Nếu không chỉ định thời gian thì cookie sẽ lưu trong bộ nhớ. Và sẽ mất khi user đóng
browser.
Nếu thời điểm quá hạn là 1 thời điểm trong quá khứ thì browser sẽ xóa cookie
c. Sử dụng cookie
$_COOKIE["Ten"];
d. Ví dụ 1:
Tạo file setcookies.php và gõ khối lệnh sau (phải trên tất cả mã html)
<?php
setcookie("un", "Nguyen Van Teo", time()+60*60*24*30);
setcookie("lasttime", time(), time()+60*60*24*30);
?>
Chú ý: Hàm time() cho biết số giây tính từ đầu năm 1970 đến thời điểm hiện tại
F12 xem thử, bạn sẽ chẳng thấy gì, nhưng 2 cookie đã được tạo (có thể xem thấy trong
cache)
Tạo file viewcookie.php rồi gõ khối lệnh sau trong tag body
<?
if (isset($_COOKIE["un"])==true) echo "Chào bạn " . $_COOKIE["un"] ."<br>";
else echo "Chào quý khách";
echo "Bạn vào site lần cuối lúc " . date("d/m/Y H:i:s",$_COOKIE["lasttime"]);
echo "<hr>";
print_r($_COOKIE); // Xem mọi cookie
?>
F12 , cookie sẽ bị xóa. Bạn có biết kiểm tra bằng cách nào không?
f. Ví dụ 3:
Mở file xulydangnhap.php, gõ thêm ở đầu:
Trang 16
<?
if (isset($_POST['nho'])==true){
setcookie("iu_sơ_nêm",$_POST['u'], time()+60*60*24*7 );
setcookie("bát_quợt",$_POST['p'], time()+60*60*24*7 );
} else {
setcookie("iu_sơ_nêm",$_POST['u'],time()-1);
setcookie("bát_quợt",$_POST['p'],time()-1);
}
?>
Qua Design, nhắp textfield tên p rồi qua code, bạn sẽ thấy đoạn mã:
<input name="p" id="p" type="password" class="txtfield" />
“F17” trang dangnhap.php. Gõ username và password rồi nhắp Đăng nhập, bạn sẽ thấy
user name password. Xem xong đóng browser lại
“F17” trang dangnhap.php. Gõ username và password , check vào Nhớ username rồi
nhắp Đăng nhập, bạn sẽ thấy user name password. Lúc này username và password đã được
lưu lại trong cookie. Xem xong đóng browser lại
“F17” trang dangnhap.php. Bạn sẽ thấy username, password đã được hiện sẵn
18. Session
a. Giới thiệu:
Là đối tượng chứa thông tin user trên server.
Mỗi user có 1 session riêng.
Cấu trúc session của mỗi user là giống nhau (chỉ khác gia trị các biến).
$_SESSION là dãy toàn cục có sẵn trong php, dùng để chứa các biến session. Do đó
dữ liệu trong session có thể được truy xuất từ mọi trang php trong site.
b. Khai báo và sử dụng
$_SESSION["TênBiến"]
Trang php nào có dùng session thì phải có hàm < ? session_start() ;?> Hàm này phải
nằm trên tất cả mã lệnh html
Trang 17
Vd:
<?
$_SESSION["login"]=1 ; //tạo biến, mọi trang đều đọc được
?>
c. Ví dụ 1:
<?
if(isset($_SESSION['views'])==true)
$_SESSION['views']=$_SESSION['views']+1;
else
$_SESSION['views']=1;
echo "Views=". $_SESSION['views'];
if ($_SESSION['views']>=10) unset($_SESSION['views']); //session_destroy();
?>
d. Ví dụ 2: Ghi nhận số lượng sản phâm được chọn vào giỏ hàng
Mở trang index_banhang.php
- Qua code, lên dòng đầu gõ lệnh
<? session_start(); ?>
- Qua design. Ở cột phải, trong dòng Giỏ hàng có 0 sản phẩm, chọn số 0 xóa rồi
qua code gõ code (màu đỏ)
Giỏ hàng có <? echo $_SESSION['SoSP']; ?> sản phẩm
- Kiểm tra xem từng nút đặt mua có link đến trang luuugiohang.php hay không
Tạo trang luugiohang.php
- Qua code, xóa hết code html và gõ lệnh sau
<?
session_start();
$_SESSION['SoSP']+=1;
header("location:".$_SERVER['HTTP_REFERER']);
?>
Test thử
e. Ví dụ 3 :
Tạo file index_admin.php – Trang chủ
<?
session_start();
if (isset($_SESSION['login'])==false) {
header("Location: login.html");
exit();
}
?>
<body>
Đây là trang chủ quản trị.<br/>
Chào <b><?=$_SESSION["username"]?></b>. Bạn đã login thành cong.
<hr> <a href=signout.php>Logout</a>;
</body>
Trang 18
Tạo file login.html – Form login
<form action="signin.php" method="POST">
Username: <INPUT TYPE="text" name="username"><br>
Password: <INPUT TYPE="password" name="password"><br>
<INPUT TYPE="submit" name="submit" value="Login">
</form>
Trang 19