Tải bản đầy đủ (.pdf) (5 trang)

Programming HandBook part 55 potx

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 (178.54 KB, 5 trang )

<?
switch($_GET["page"])
{
case "about":
include ("about.htm");
exit; break;

default:
include ("default.htm");
}
?>

Nội dung trang about.htm
HTML Code:
<html>
Đây là nội dung trang about.htm
</html>

Nội dung trang default.htm
HTML Code:
<a href="index.php?page=about">Link đến trang about.htm</a><br>
<a href="index.php">Default</a>

Bạn hãy upload 3 file này lên server.
+ Bây giờ thử chạy file index.php (vd: http://server/index.php ), nội dung của bạn
nhận được sẽ là nội dung của trang default. Vì ở đây biến page không được xác
định.
+ Bạn hãy click vào link: Link đến trang about.htm bạn sẽ nhận được nội dung của
file about.htm là: “Đây là nội dung trang about.htm”
+ Bây giờ bạn hãy nhìn lên thanh address bar, đường dẫn trên thanh address bar
không còn là http://server/about.htm mà đã thành


http://server/index.php?page=about
Với cách làm trên không những giúp bạn tạo ra những liên kết đẹp mắt và chuyên
nghiệp , mà giúp bạn tiết kiệm rất nhiều công sức khi muốn chỉnh sửa trang web.Ví
dụ bạn muốn chỉnh sửa trang gioithieu.htm thành about.htm thì trước đây bạn sẽ
phải sửa toàn bộ những liên kết đến trang gioithieu.htm có trên website, nhưng với
cách làm giới thiệu trong bài viết bạn chỉ việc sửa đổi trong tệp tin index.php.
nguồn

hanhdb(UDS)
Chuyển đổi kiểu dữ liệu

Như chúng ta đã được học, PHP có rất nhiều kiểu dữ liệu. Nhưng khác một chút
với các ngôn ngữ khác, các biến trong PHP lại không được gán một kiểu dữ liệu
nhất định, và các kiểu dữ liệu đó được tự do chuyển đổi từ kiểu này sang kiểu khác
trong quá trình thực thi.

Trong phần này, chúng ta sẽ bàn luận về việc chuyển đổi kiểu dữ liệu trong PHP.

Có 2 cách cơ bản để chuyển từ kiểu dữ liệu này sang kiểu dữ liệu khác trong PHP.

Chuyển đổi toàn vẹn (Implicit Type Conversions)

Đó là cách phổ biến nhất trong việc chuyển kiểu dữ liệu mà bạn thấy, thật ra, đó là
do PHP tự động làm cho bạn. Nghĩa là thay vì tự bạn yêu cầu một kiểu dữ liệu xác
định, PHP tự quyết định xem đó là kiểu dữ liệu gì cho chúng ta.

Đó là những loại chuyển đổi sau:

Các phép tính có toán tử: Nếu PHP nhận thấy một phép toán giữa số nguyên và số
phức, thì kết quả nó trả về là số phức. Nếu một chuỗi cộng với một số bất kỳ, PHP

sẽ cố chuyển chuỗi đó sang dạng số trước khi làm phép cộng với số đã cho. Ví dụ:
PHP Code:
<?php
echo "5" + 2; // kết quả là 7
?>
Các biểu thức boolean: Được dùng khi PHP thấy một biểu thức phải phát sinh ra
kết quả Boolean. Khi đó, nó sẽ được tự chuyển sang Boolean trước khi tiếp tục.

Những phương thức xuất ra chuỗi: Có những phương thức mà kết quả BẮT BUỘC
phải xuất ra chuỗi (như print, echo ) hoặc những toán tử nối kết (.). Khi đó, PHP
luôn cố gắng để chuyển đổi các kiểu không-phải-chuỗi (non-string) ra kiễu chuỗi
(string).

Chuyển đổi không toàn vẹn (Explicit Type Conversions)

Trong trường hợp này, PHP không chuyển đổi một cách thông thường, bạn phải
quyết định xem kiểu dữ liệu nào bạn muốn có. Hãy xem xét ví dụ này:
PHP Code:
<?
$doubleNumber = 10.5;
echo("We have a double number: ".$doubleNumber."<br>"); // Kết quả là
10.5
$intNumber = (int) $doubleNumber;
echo("Now, it is integer: ".$intNumber); // Kết quả là 10
?>
Rõ ràng, cách chuyển đổi kiểu dữ liệu này không giữ nguyên tính toàn vẹn của dữ
liệu của chúng ta (từ 10.5, chúng ta chỉ còn 10 khi chuyển từ dạng số phức sang
dạng số nguyên).

Các khai báo để chuyển dữ liệu dạng không toàn vẹn như sau:

• (int), (integer) Chuyển sang dạng số nguyên.
• (float), (double), (real) Chuyển sang dạng số có phần thập phân
• (string) Chuyển sang dạng chuỗi
• (bool), (boolean) Chuyển sang dạng Boolean
• (array) Chuyển sang dạng mảng
• (object) Chuyển sang một đối tượng nào đó (có thể người dùng tự định nghĩa)

Hãy tham khảo phần bài tập để có cái nhìn tổng quan hơn về việc chuyển kiểu dữ
liệu.


isheep(UDS)
Chuyển hướng người dùng với PHP

Đôi lúc người dùng sẽ gửi 1 yêu cầu và ta muốn chuyển hướng họ đến 1 trang khác
trước hoặc sau khi xử lý. Ví dụ đơn giản như: khi người dùng điền vào form đăng
ký để tạo tài khoản mới, form gửi theo method post đến file
process_new_user.php, đoạn mã này, sau khi chạy thành công sẽ chuyển người
dùng (đã đăng ký) đến trang welcome_new_user.php như sơ đồ:



Nếu ta muốn xử lý gì đó rồi sau đó chuyển người dùng đến 1 trang mới trong PHP
thì có thể sử dụng hàm header. Hàm này cho phép chúng ta gửi trở lại cho máy
người dùng những "HTTP header" để thực hiện những yêu cầu khác nhau. Nó có
thể sử dụng nhiều loại header khác nhau, nhưng ta sẽ sử dụng header Location để
giải quyết nhu cầu của mình. Ví dụ, ta có file process_new_user.php như sau
PHP Code:
<?php
// Tao tai khoan moi voi thong tin trong $_POST

$processing_error = create_new_user_account(
$_POST['username'], $_POST['fullname'],
$_POST['password']);

// Chuyen huong den trang moi neu khong co loi gi xay ra
if ($processing_error === FALSE)
{
header('Location: http://' . $_SERVER['HTTP_HOST']
. dirname($_SERVER['PHP_SELF'])
. '/welcome_new_user.php');
}
else
{
// Co loi! Chuyen huong lai trang tao tai khoan
header('Location: http://' . $_SERVER['HTTP_HOST']
. dirname($_SERVER['PHP_SELF'])
. '/create_account.php?err='
. $processing_error);
}
?>

Phải chú ý 1 điều quan trọng khi sử dụng hàm header là không được in ra bất cứ kí
tự nào trước khi sử dụng hàm, nếu không sẽ báo lỗi! Đoạn mã sau chắc chắn sẽ báo
lỗi:
PHP Code:
<?php
header('Location: http://' . $_SERVER['HTTP_HOST']
. '/welcome2.php');
?>


Lý do báo lỗi vì có phần khoảng trắng trước <?php. Nếu 1 trong các file bạn
include vào cũng có khoảng trắng nằm ngoài phần mã PHP thì cũng sẽ gặp lỗi
tương tự

Có 1 cách khác là sử dụng header META. Với cách này, bạn có thể yêu cầu trình
duyệt tự động chuyển hướng tới 1 trang mới:
PHP Code:
<?php
echo <<EOH
<meta http-
equiv='refresh' content='0; url="http://$_SERVER['HTTP_HOST']/welcome2.php"
/>
EOH;
?>

Tuy nhiên cách này có 1 nhược điểm là nếu trình duyệt đã bị tắt chức năng này
thì sẽ không có gì xảy ra hết! Nói chung, chúng ta sẽ thường sử dụng hàm
header khi muốn chuyển hướng người dùng với PHP

End

Mr.paint(UDS)
Hằng số và biến

Do trong giáo trình của chúng ta còn khuyết mất phần này nên hôm nay xin phép
viết 1 chút cho anh em nào còn chưa biết (mấy bác pro rồi nhìn đừng chê em :P)

Định nghĩa 1 hằng số



×