Tải bản đầy đủ (.pptx) (53 trang)

Bài giảng mã nguồn mở chương 5

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (402.66 KB, 53 trang )

Chương 5 :

Ngôn ngữ kịch bản php
nâng cao
Giảng viên : ThS. Nguyễn Minh Thành
Email :


Nội Dung
1. Cookie
2. Session
3. Xử lý Form
4. Gửi mail
5. Xử lý File
6. Chuyển hướng website với .htaccess
7. Bắt lỗi chương trình
8. Hướng đối tượng trong PHP


Cookie
a- Cookie là mẫu tin nhỏ, có cấu trúc, dạng text lưu ở máy client khi
truy cập một website (nếu kịch bản trong trang đó có chức năng thiết
lập cookie).Cookie được lưu ở thư mục :
C:\Documents and Settings\Administrator\Cookies
Ví dụ đây là một mẫu cookie khi viếng trang www.ibm.com
UnicaNIODID
4yZ3oOSlqrO-WrSL3kV
ibm.com/
1600
1465922944
30475811


543399952
30113713
*


Cookie (tt)
b- Thiết lập cookie
Cú pháp: setcookie(name, value, expire[, path, domain]);
Trong PHP, câu lệnh setcookie phải đặt trước thẻ <html>
Ví dụ :
Trang CreateCookie.php
$expire=time()+60*60*24*30; // hết hạn sau 30 ngày
setcookie(“username", “NguyenMinhThanh", $expire);
echo "Cookie has been created!";
?>


Cookie (tt)

d- Đọc cookie

Tệp ReadCookie.php
<html>
<body>
if (isset($_COOKIE[“username"]))
echo "Welcome " . $_COOKIE[“username"] . "!
";
else

echo "Welcome guest!
";
?>
</body>


Session
a- Session là một phiên làm việc kể từ khi client truy cập vào website
cho đến khi đóng trình duyệt hay abandon(kết thúc) phiên.
PHP đưa ra biến toàn cục $_SESSION[] để lưu trữ thông tin, và biến
này có thể truy cập từ mọi trang PHP trong phiên.
b- Khai báo và thiết lập Session
session_start();
// hàm session_start() phải đặt trước thẻ <html>
$_SESSION['username']=“NguyenMinhThanh";
Ví dụ : Trang Save_Session.php
session_start();
$_SESSION['username']=“NguyenMinhThanh";
header("Location:Read_Session.php");


Session (tt)
c- Truy cập biến Session
Trang : Read_Session.php
<?php session_start(); ?>
<html><body>
if(isset($_SESSION['username']))
$mess=$_SESSION['username']." đã đăng nhập";

else
$mess=“Bạn chưa đăng nhập hệ thống!";
echo $mess;
?>
</body></html>
d- Xóa bỏ biến Session
unset($_SESSION[‘tên']);
session_destroy();
Đây là các câu lệnh dùng khi Logout, tuy nhiên khi session_destroy()
phải lưu ý, vì có xóa những biến Session của hệ thống không?


Session (tt)
Tóm tắt:
Thiết lập
session_start(); $_SESSION[‘tên’]=giá_trị;
Truy cập:
session_start(); $biến = $_SESSION[‘tên’];
Xóa giá trị đã thiết lập : unset($_SESSION[‘tên’]);
Hủy bỏ toàn bộ biến $_SESSION[]: session_destroy();
Session có rất nhiều ứng dụng, ví dụ như lưu trữ thông tin về giỏ hàng
trong E-commerce


Form – truyền nhận thông tin
Giả sử method của Form là POST => server sẽ nhận được thông qua biến
toàn cục $_POST[‘tên’], với ‘tên’ là giá trị của thuộc tính name của phần tử
trong form.
Cú pháp Form
<form action=tệp_PHP method=post>

<!- - các phần tử của form - ->
</form>
Biệt lệ : Các checkbox cùng tên
- Phải đặt cùng tên như là một phần tử của mảng động, ví dụ box[]
- Khi truy cập ở server chỉ lấy phần tên, ví dụ $_POST[‘box’], và trả về là
một mảng gồm các value được chọn.
- Các trường hợp khác $_POST là một chuổi.
- Có thể dùng $_REQUEST thay cho $_POST và $_GET.
- Lưu ý: w3schools.com gọi chúng là Function, có lẽ không đúng!


Ví dụ: Tệp DangKy.htm
<form action=XuLy.php action=post>
Họ tên: <input type=text name=ht>
Đăng ký:<input type=checkbox name=hp[]>Java

<input type=checkbox name=hp[]>C Pattern

<input type=checkbox name=hp[]>Trí tuệ nhân tạo

<input type=submit value=“Đăng ký”>
</form>
Tệp XuLy.php
$hoten=$_POST[‘ht’];
$hocphan=$_POST[‘hp’]; // trả về một mảng
$str=“Sinh viên :”.$hoten.” đã đăng ký:
”;
while(list($k,$v)=each($hocphan) $str+=$k.”-”$v.”
”;
echo $str;
?>


Xây dựng form Login “tự gọi”

Một trang PHP tự gọi lại chính nó là một phong cách nhiều LTV PHP ưa thích.
Dựa trên các kỹ thuật:
- Chỗ nào cần đưa các giá trị php chỉ cần
- Biến toàn cục lưu tên trang hiện thời : $_SERVER[‘PHP_SELF’]
- Câu lệnh if .. else .. endif của PHP để điều khiển luồng HTML
<?php if(điều_kiện): ?>
<! - - các lệnh HTML - ->
<?php else: ?>
<! - - các lệnh HTML khác - ->
<?php endif; ?>
Từ những kiến thức trên ta xây dựng một form đăng nhập.


Trang Login.php
$user=$_REQUEST["ht"]; $pass=$_REQUEST["mk"]; // thay cho $_POST[]
?>
<?php if($user==""): ?> <!- - có thể dùng if(!isset($_REQUEST[‘ht’])) - ->
You are'nt login!
User Name: <input type= text name=ht>
Password:<input type= password name=mk>
<input type=submit value="Sign in“>
</form>
<?php else: ?>
You are login.
<?php endif; ?>
- Sinh viên hãy dùng include() để ghép vào một trang khác.



Gửi mail
Cú pháp: mail(to,subject,message,headers,parameters)

Ý nghĩa các tham số:
- to, subject, message : như ý nghĩa các text box khi soạn mail
- headers :tùy chọn, có thể sử dụng Bcc, Cc
- parameter: tùy chọn, các thông số về trình soạn, gởi mail
Trong phần message: sử dụng ký hiệu \n để xuống dòng.


Ví dụ :
Tệp Send_mail.php
// mình viết thư gởi cho mình
$to = “";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = “";
$headers = "From: $from";
@mail($to,$subject,$message,$headers); // không cho warning!
echo "Mail Sent.";
?>
Lưu ý:
- người gởi phải có một đia chỉ mail. Theo dõi các kỹ thuật chống spam
của mỗi trình gởi, nhận mail của người nhận!
- Phối hợp với form để soạn thảo một trình gởi mail
- Có thể lập trình để gởi mail đến danh sách các địa chỉ đã lưu trong
CSDL



Xử Lý File
1. Mở file

$file=fopen("welcome.txt","r") or exit("Unable to open file!");


Xử Lý File
2- Đóng file
fclose($file);
Cách khác: Sử dụng hàm file(path) mở đọc file và đóng file luôn
Ví dụ :
$myfile = 'vanban.txt';
$lines = file($myfile); // trả về mảng các dòng văn bản
echo("Số dòng: ".count($lines)."
");
// cũng có thể dùng foreach($lines as $key=>$value)
foreach($lines as $line) {
echo($line."
");}
3- Kiểm tra EOF
if (feof($file)) echo "End of file";


Xử Lý File
4- Đọc từng dòng trong file
$file = fopen("welcome.txt", "r") or exit("Unable to open file!");
//Output a line of the file until the end is reached
while(!feof($file))
{ echo fgets($file). "
";}
fclose($file);

?>
5- Đọc từng ký tự trong file
$file=fopen("welcome.txt","r") or exit("Unable to open file!");
while (!feof($file))
{ echo fgetc($file);}
fclose($file);
?>


Xử Lý File
6-Upload file
<html><body>
<form action="upload_file.php" method="post" enctype="multipart/formdata">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" />


<input type="submit" name="submit" value="Submit" />
</form>
</body></html>


Xử Lý File
6-Upload file
Upload_file.php
if ($_FILES["file"]["error"] > 0)
{ echo "Return Code: " . $_FILES["file"]["error"] . "
";}

else {
echo "Upload: " . $_FILES["file"]["name"] . "
";
echo "Type: " . $_FILES["file"]["type"] . "
";
echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb
";
echo "Temp file: " . $_FILES["file"]["tmp_name"] . "
";
if (file_exists("upload/" . $_FILES["file"]["name"])) {
echo $_FILES["file"]["name"] . " already exists. " }
else {
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" .
$_FILES["file"]["name"]);
echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
}
}
?>


Cơ bản về .htaccess
1. Định nghĩa htaccess:
Apache cung cấp khả năng cấu hình thông qua những files truy cập siêu
văn bản .
Những files này cho phép thay đổi tinh chỉnh của Apache (httpd.conf) .
Theo mặc định file này có tên .htaccess.
.htaccess có tác dụng trên thư mục hiện hành (nơi chưa nó) và tất cả
các thư mục con. Vì vậy, muốn sử dụng .htacess để quản lí truy cập vào
website của mình, đơn giản bạn chỉ việc soạn thảo một file .htaccess, và
lưu nó vào thư mục root của website.



Cơ bản về .htaccess
Dấu “#” này dùng để định nghĩa một đoạn comment trong httpd.conf, và
.htaccess.
Ví dụ :
#Enable Rewrite mod <<<đây là comment, dòng này sẽ không được thực
thi #trong .htaccess
RewriteEngine on
Lưu ý :
.htaccess là một công cụ rất mạnh trong việc quản lí website. Một lỗi cú pháp
nhỏ (thậm chí là một khoản trắng) cũng khiến website của bạn hoạt động không
được bình thường như trước.
Do vậy trước khi làm việc với .htaccess, bạn nên backup cẩn thận dữ
liệu của mình, nếu có trục trặc xảy ra, việc khôi phục trở nên đơn giản.


Cơ bản về .htaccess
Dấu “#” này dùng để định nghĩa một đoạn comment trong httpd.conf, và
.htaccess.
Ví dụ :
#Enable Rewrite mod <<<đây là comment, dòng này sẽ không được thực
thi #trong .htaccess
RewriteEngine on
Lưu ý :
.htaccess là một công cụ rất mạnh trong việc quản lí website. Một lỗi cú pháp
nhỏ (thậm chí là một khoản trắng) cũng khiến website của bạn hoạt động không
được bình thường như trước.
Do vậy trước khi làm việc với .htaccess, bạn nên backup cẩn thận dữ
liệu của mình, nếu có trục trặc xảy ra, việc khôi phục trở nên đơn giản.



Cơ bản về .htaccess
• Những kí tự đặc biệt
# : comment
[F] : chỉ định server sẽ trả về client trang lỗi 403 nếu truy cập vào những nơi không
được phép
[L] : ấn định rằng bước trước đã xong thì ngừng và không tiếp tục thực thi lệnh
rewrite tiếp theo nữa.
[N] : chỉ thị cho server tiếp tục rewrite cho đến khi tất cả các mục chỉ định được
rewrite hoàn toàn.
[G] : Chỉ định server trả về client trang báo lỗi không tồn tại (no longer exit)
[P] : chỉ định server điểu kiển các yêu cầu được ấn định bởi mod_proxy
[C] : Chỉ định server thực hiện rule hiện hành song song với rule trước đó
[R] : chỉ định server đổi hướng request sang một trang khác trong trường hợp trình
duyệt gởi yêu cầu duyệt một trang được sửa chữa đường dẫn (rewrite) trước đó.


Cơ bản về .htaccess
• Những kí tự đặc biệt
[NC] : Chỉ định server so khớp nhưng kí tự không phân biệt hoa thường.
Ví dụ :
RewriteCond %{HTTP_REFERER} !^ [NC]
[PT]: có nghĩa là dùng kí tự để buộc "rewrite engine" ấn định bảng giá trị của uri
trở thành giá trị của tên files
[OR] : các biểu thức được nối tiếp nhau bằng toán tử OR, trong đó biểu thức nào
đúng, sẽ là quy tắc để lệnh Rewrite áp dụng.
Ví dụ:
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} ^Anarchie [OR]

RewriteCond %{HTTP_USER_AGENT} ^ASPSeek [OR]
RewriteCond %{HTTP_USER_AGENT} ^attach [OR]
RewriteRule ^.* - [F,L]
[NE] : Chỉ định server xử lí các gói tin trả về mà không dùng kí tự thoát


Cơ bản về .htaccess
• Những kí tự đặc biệt
[NS] : Chỉ định server bỏ qua thư mục hiện hành nếu request nhắm vào
thư mục con.
[QSA] : chỉ định server gắn chuỗi truy vấn vào cuối cùng của URL
[S=x] : Chỉ định server bỏ qua không xem xét các X rules tiếp theo nữa
nếu một rule đã được thực thi.
[T=MIME-type] : Khai báo định dạng files của server
[] : chỉ định các kí tự đặt đặt trong [] sẽ được match. Cụ thể [xyx] thì các
request có mang theo các kí tự x, y hoặc z sẽ được match.
+ : chỉ định nội dung đừng trước dấu + phải xuất hiện ít nhất 1 lần
[^] : Ngược lại với [], các kí tự được đặt theo dạng [xyz^] sẽ không được
match.
[a-z] : Dấu ‘-‘ đặt giữa 2 kí tự bên trong cặp dấu [] sẽ match tất cả các kí
tự nằm trong khoảng từ kí tự đầu đến kí tự cuối.


×