Professional Documents
Culture Documents
Xác định một năm có phải là năm nhuận 1 nếu là năm nhuận,
L
hay không 0 nếu ngược lại
Ví dụ: 1999 hoặc
o Năm theo chuẩn ISO-8601, 4 chữ số
2003
Biểu diễn số đầy đủ của một năm, 4 chữ Ví dụ: 1999 hoặc
Y
số 2003
Biểu diễn số rút gọn của một năm, 2 chữ
y Ví dụ: 99 hoặc 03
số
2004-02-
c Ngày theo chuẩn ISO 8601(PHP 5)
12T15:19:21+00:00
Ví dụ: Thu, 21 Dec 2000
r Định dạng ngày theo RFC 2822
16:01:07 +0200
Số giây kể từ thời điểm Unix Epoch
U Dùng time()
(January 1 1970 00:00:00 GMT)
www.example.com
Webserver
2
Internet
or Intranet
Yêu cầu trang b.php 7
www.example.com
Textbox : txtDangnhap
Webserver
Password Box: txtMatkhau
2
txtDangnhap = admin Internet
or Intranet
txtMatkhau = phpAdmin
7
Yêu cầu trang xlDangnhap.php
timSach.php
<html>
<body>
<h1>Tìm sách</h1>
<form action="xlTimSach.php" Method="GET" >
Từ khóa : <input type="text" name="txtTukhoa"/>
<input type="submit" value="Tìm"/>
</form>
</body>
</html>
xltimSach.php
<html>
<body>
<?php
$sTukhoa = $_REQUEST["txtTukhoa"];
?>
<h1>Tìm sách</h1>
Từ khóa tìm sách là : <?php echo $sTukhoa; ?>
<br />
Kết quả tìm là :
</body>
</html>
xuly.php
<html>
<body>
<form action="xuly.php" Method="GET" >
Từ khóa : <input type="text" name="txtTukhoa"/>
<input type="submit" value="Tìm"/>
</form>
<?php
$sTukhoa = $_REQUEST["txtTukhoa"];
if (isset($sTukhoa)) {
print "Từ khóa tìm sách là : $sTukhoa";
echo "<br>Kết quả tìm là : ";
}
?>
</body>
</html>
9/17/2012 503024 - PHP nâng cao 26
Truyền nhận dữ liêu với Form
• Khuyết điểm
– Không thích hợp để truyền dữ liệu có tính bảo
mật (password)
– Dung lượng dữ liệu truyền đi có giới hạn
– URL submit bằng phương thức GET được lưu
lại trên server
• Ưu điểm
– Người dùng có thể bookmark địa chỉ URL
– Có thể Giả lập phương thức GET để truyền
9/17/2012
dữ liệu mà không cần thông qua FORM
503024 - PHP nâng cao 29
Truyền/nhận qua phương thức GET
File: GET.HTML
<HTML>
<HEAD>
<TITLE>Input data</TITLE>
</HEAD>
<BODY>
<IMG SRC=“images/N72.jpg”><br>
<A HREF=‘chitiet.php?Ma=N72’>Xem chi tiết</A>
</BODY>
</HTML>
• Ưu điểm
– Bảo mật hơn phương thức GET
– Không giới hạn dung lượng dữ liệu truyền đi
• Khuyết điểm
– Kết quả trang web trả về không thể bookmark
– Có thể gây ra lỗi nếu người dùng muốn quay lại trang
kết quả (nhấn nút Back hoặc Refresh) do bị expired
– Dữ liệu có thể không truyền đi được do vấn đề về
security
<?php
if (isset($_GET[‘radGT'])){
echo “Gioi tinh : " . $_GET[‘radGT'];
}
?>
</body></html>
9/17/2012 503024 - PHP nâng cao 37
Truyền/nhận dữ liệu từ ComboBox
File: INDEX.PHP
<html>
<body>
<form method="POST" action="index.php">
<select name="car">
<option value="bmw">BMW</option>
<option value="ferrari">Ferrari</option>
<option>Toyota</option>
</select>
<input type="submit" name="submit" value="Chọn"/>
</form>
Loại xe được chọn :<br/>
<?php
if (isset($_POST['car']))
{
echo "Bạn đã chọn xe ". $_POST['car'] . "<br/>";
}
?>
</body>
</html>
9/17/2012 503024 - PHP nâng cao 38
Truyền/Nhận dữ liệu từ Listbox
File: INDEX.PHP
<html><body>
<form method="POST" action="index.php">
<select name="cars[]" multiple="multiple">
<option value="bmw">BMW</option>
<option value="ferrari">Ferrari</option>
<option>Toyota</option>
</select>
<input type="submit" name="submit"
value="Chọn"/>
</form>
Loại xe được chọn :<br/>
<?php
foreach ($_POST['cars'] as $choice) {
echo "Bạn đã chọn xe ". $choice . "<br/>";
}
?>
</body></html>
9/17/2012 503024 - PHP nâng cao 39
PHP nâng cao
• Mở tập tin
– $file=fopen($filename, $open_mode);
– Chế độ mở (open modes): r, r+, w, w+,
a, a+
• Đóng tập tin đã mở
– fclose($file);
‘r’ Mở để chỉ đọc, con trỏ file ở vị trí bắt đầu file
‘r+’ Mở để đọc và ghi, con trỏ file ở vị trí bắt đầu file
‘w’ Mở chỉ để ghi, xóa tất cả các nội dung trước,
nếu file không tồn tại thì tạo mới
‘w+’ Mở để ghi và đọc, xóa tất cả các nội dung trước,
nếu file không tồn tại thì tạo mới
‘a’ Mở để ghi, con trỏ file ở vị trí cuối của nội dung
hiện tại
‘a+’ Mở để ghi và đọc, bắt đầu từ vị trí cuối và tạo
mới nếu chưa tồn tại
fgetc($file)
– Đọc 1ký tự từ con trỏ file
• fgets($ file,[$length])
– Đọc một dòng từ con trỏ file, dừng lại khi gặp
ký tự xuống hàng hoặc ký tự kết thúc file (EOF)
• fread($ file,$length)
– Đọc các ký tự từ con trỏ file, tới khi đủ chiều
dài length hoặc gặp ký tự kết thúc file
fclose($file);
• Xóa file
– unlink('filename');
• Sửa tên (file hoặc thư mục)
– rename('old name', 'new name');
• Copy file
– copy('source', 'destination');
• Và nhiều hàm hơn nữa:
– www.php.net/manual/en/ref.filesystem.php
• Mở thư mục
– $handle = opendir(‘tenthumuc');
• Đọc nội dung của thư mục:
– readdir($handle)
• Trả lại tên của file tiếp theo trong thư mục
• Các file được sắp xếp như trên hệ thống file
(filesystem)
• Đóng thư mục
– closedir($handle)
$results = array();
$handler = opendir($directory);
while ($file = readdir($handler)) {
if ($file != "." && $file != "..") {
$results[] = $file;
}
}
closedir($handler);
Internet
file or Intranet
Disk
driver
Upload.php
• $_FILES["file"]["name"]
• $_FILES["file"]["type"]
• $_FILES["file"]["size"]
• $_FILES["file"]["tmp_name"]
• $_FILES["file"]["error“]
move_uploaded_file(tmp_name, saved_name)
• Lưu ý
– $_FILES[“…”][“type”]
• “image/gif”
• “image/jpeg” Firefox nhận đây là file jpeg
• “image/pjpeg” IE nhận đây là file jpeg
– $_FILES[“…”][“size”] : Kích thước file tính theo
byte
– $_FILES[“…”][“error”] : Mã lỗi khi upload File
• = 0 : Không có lỗi
• > 0 : Có lỗi
9/17/2012 503024 - PHP nâng cao 55
Một số lỗi khi upload file
Account
IUSR_XXX
Lưu ý :
• Chỉ cấp quyền ghi cho thư mục cần thiết
• Không cấp quyền ghi cho thư mục WebRoot
cookie
$_COOKIE
setcookie
Client Webserver
$_COOKIE[fieldName]
cookie
Lưu username & password
setcookie
Client
Webserver
session_start
Client Webserver
Là thông tin về client được server lưu trên máy của server
Sử dụng session lưu định danh duy nhất cho từng client
Mục đích lưu biến dữ liệu dùng chung cho nhiều trang trong 1
phiên làm việc của client
• Hủy cả Session
session_destroy();
9/17/2012 503024 - PHP nâng cao 68
Session – Cấu hình
<?php
session_start( );
if (isset($_SESSION["count"]))
$_SESSION["count"] = $_SESSION["count"] + 1;
else
$_SESSION["count"] = 1;
4. Trong tất cả các trang muốn bảo mật, thêm đoạn mã sau để
kiểm tra người dùng đã đăng nhập hay chưa, nếu chưa thì
redirect lại trang login.html.
<?php
session_start();
if ($_SESSION["IsLogin"] == false)
header("Location: login.html");
?>
Session 1
Cookie2
Client 1 Web Server
Session 2 Session 3
Internet
or Intranet
Client 2 Database Server
Cookie3
Client 3