a. Chuyển hướng trang
PHP hỗ trợ hàm Header để gởi trả về cho trình duyệt một dòng HTTP Header cới cú pháp như sau: int header (string string)
Tuy nhiên cần phải gọi hàm này trước khi có một kết xuất từ server gởi trả về cho trình duyệt, nếu không bạn sẽ gặp phải một vài lỗi rất thông dụng. Có hai cách sử dụng hàm Header, trong đó cách gọi một header Location có thể gây ra hiệu quả chuyển hướng trang mà chúng ta cần, với cách gọi này, server không những gởi trả lại cho trình duyệt header của trang trước mà còn trả về một trạng thái chuyển hướng trang mới (hay chuyển hướng cho đoạn
62 trang |
Chia sẻ: baoanh98 | Lượt xem: 1027 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Đề tài Tìm hiểu công nghệ Mysql và PHP, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
HP mới nhất hiện nay là PHP 4 và có khoảng trên năm triệu Web site trên thế giới hiện đang sử dụng ngôn ngữ này. Để biết thêm nhiều thông tin về PHP hay nhận phiên bản mới nhất về nó, xin vào địa chỉ
Cách cài đặt PHP
Sau khi cài đặt file set up, ta thực hiện các bước cấu hình như sau:
Copy file ‘php.ini_dist’ vào thư mục WINDOWS và đổi tên thành ‘php.ini’ (Thư mục WINDOWS trong c:\ WINDOWS đối với Windows 9x và c:\ WINNT đối với WinNT)
Soạn thảo thêm file httpd.conf trong thư mục conf của Apache để cấu hình Apache làm việc với PHP. Thêm các dòng sau vào file:
ScripAlias /php/ “c:/path-to-your-php-dir/”
AddType application/x-httpd-php .php
AddType application/x-httpd-php .phtml
Action application/x-httpd-php “/php/php.exe”
AddType application/x-httpd-php .html
AddType application/x-httpd-php .htm
Kiểm tra: Soạn thảo file ‘test.php’ với nội dung: . Sau đó đặt file này trong thư mục gốc của Apache, thư mục /htdoc/ và xem trang bằng cách gọi: hay
Nếu xuất hiện trang như hình trên tức là Web server và PHP đã làm việc tốt với nhau. Nhớ kiểm tra MySQL xem có cùng làm việc với nhau không bằng cách viết trang PHP đơn giản kết nối đến server và lấy thử một vài mẩu tin trong cơ sở dữ liệu.
PHP và các hệ quản trị cơ sở dữ liệu
PHP hầu như hỗ trợ cho tất cả mọi hệ quản trị cơ sở dữ liệu hiện nay như: Adabas, dBase, filePro, mSQL, MySQL, Oracle, PostgreSQL, Solid, Sybase, Sybase-CT, Velocis, , bạn có thể kết nối trực tiếp với hệ quản trị cơ sở dữ liệu bằng các hàm mà PHP hỗ trợ (nếu có) hay kết nối gián tiếp thông qua một cầu nối ODBC , JDBC đều được.
Trang test.PHP minh hoạ dưới đây là một ví dụ về cách kết nối trực tiếp từ các hàm PHP đến hệ quản trị cơ sở dữ liệu MySQL để lấy dữ liệu cho trang web.
Test page
<? mysql_connect("localhost", "username", "password");
$query = "SELECT name, phone FROM mytable";
$result = mysql_db_query("example", $query);
if ($result) {
echo "Found these entries in the database:";
while ($r = mysql_fetch_array($result)) {
$name = $r["name"];
$phone = $r["phone"];
echo "$name, $phone";
}
echo "";
} else {
echo "No data.";
}
mysql_free_result($result);
?>
Sử dụng PHP
Đưa PHP vào HTML
Để đưa một đoạn mã PHP vào một trang HTML, cần phải đặt đoạn mã PHP này vào cặp thẻ (tags). Có bốn kiểu thẻ PHP bao gồm:
Kiểu ngắn: . Thẻ này mặc nhiên dùng trong PHP.
Kiểu XML: . Kiểu thẻ này dùng với XML.
Kiểu Script: .
Kiểu ASP: . Kiểu thẻ này dùng tương tự trong ASP.
Ví dụ một trang test.PHP đơn giản :
<?php
echo "Hello World";
?>
Khoảng trắng: ký tự trắng và tab được xem là khoảng trắng. Trình duyệt bỏ qua khoảng trắng trong HTML và PHP cũng thế. Có thể viết khoảng trắng trong HTML để dễ đọc hơn. Trong PHP không có khoảng trắng giữa các câu lệnh PHP, nhưng có thể đặt mỗi câu lệnh trên một dòng.
Lời chú thích: lời chú thích viết trong mã nguồn dùng để lưu ý người đọc mã nguồn. Lời chú thích có thể là chú thích cho một kịch bản: ai viết kịch bản đó,viết với mục đích gì, sửa đổi lần cuối là lúc nào. Hay có thể chú thích cho một câu lệnh PHP, v.v... Trình dịch PHP bỏ qua các lời chú thích. Lời chú thích được đặt trong các ký hiệu chú thích:
/* lời chú thích */
// lời chú thích
# lời chú thích
echo ("Hello world ");
Thêm nội dung động : Chúng ta không sử dụng PHP để viết cho tất cả các trang Web và cũng không dùng thuần tuý trang HTML. Nguyên nhân chính để sử dụng ngôn ngữ kịch bản PHP là để viết nội dung động. Đây là một ứng dụng quan trọng vì nội dung có thể thay đổi theo nhu cầu người sử dụng, tuỳ thuộc vào thời gian truy cập.
Gọi hàm: PHP có thư viện các hàm dùng để phát triển ứng dụng Web rất phong phú. Hầu hết các hàm đều nhận dữ liệu gởi vào và dữ liệu trả về. Ví dụ như hàm date()
Date(“H:I, jS F”)
Ta gởi vào một chuỗi trong đó chứa hai thành phần. Đó gọi là tham số hay đối số của hàm. Những đối số này, một là đối số nhập vào cho hàm sử dụng, hai là đối số để xuất kết quả.
Truy xuất biến hình thức: Trong kịch bản PHP, có thể truy xuất mỗi một trường trong form như là một biến với cùng một tên gọi.
Các biến hình thức: dữ liệu trong kịch bản sẽ dùng trong biến PHP.Trong PHP các tên biến bắt đầu bằng dấu ($). Nếu thiếu dấu $ trước biến thì đây là lỗi lập trình phổ biến. Có hai cách để truy cập dữ liệu qua biến:
Kiểu ngắn: dùng để hiển thị các biến. Trong trường hợp này, lưu ý rằng các tên biến mà ta sử dụng trong kịch bản cùng với tên trong HTML. Ta không cần khai báo các biến trong kịch bản vì chúng được đưa vào trong kịch bản như các đối số được đưa vào hàm.
Kiểu thứ hai để truy xuất các biến từ một trong hai mảng được chứa trong $HTTP_POST_VARS và $HTTP_GET_VARS. Một trong những mảng này tổ chức chi tiết tất cả các biến hình thức. Mảng này được sử dụng phụ thuộc vào phương pháp dùng để đưa vào form là POST hay là GET. Kiểu thứ hai dài hơn, chạy nhanh hơn và tránh các biến tự dộng tạo không cần thiết. Tuy nhiên kiểu ngắn hơn lại dễ đọc và dễ sử dụng.
Ghép chuỗi: toán tử ghép chuỗi trong PHP là dấu (.) và nó có thể dùng để ghép các chuỗi lại với nhau. Ta thường dùng cách ghép chuỗi này trong câu lệnh echo và để tránh viết nhiều dònh lệnh echo.
Biến và ngữ nghĩa: biến và chuỗi mà ta nối lại với nhau trong câu lệnh echo là các kiểu khác nhau. Biến là ký hiệu cho dữ liệu. Chuỗi là dữ liệu của bản thân nó. Khi ta sử dụng một mẫu dữ liệu thô trong chương trình thì ta gọi nó là ngữ nghĩa để phân biệt với biến.
Có hai loại chuỗi trong PHP: một là cặp các trích dẫn và một là các trích dẫn đơn. PHP sẽ thử và đánh giá các trích dẫn, các chuỗi trích dẫn đơn sẽ được quy định như các ngữ nghĩa đúng.
Định danh
Định danh là tên của các biếân (Tên của các hàm và lớp cũng là định danh). Có một số các luật đơn giản về định danh như sau:
Định danh có thể có chiều dài bất kỳ và có thể chứa các ký tự, các ký số, ký tự gạch dưới, và dấu dollar ($). Tuy nhiên, nên cẩn thận khi dùng dấu $ trong định danh.
Định danh không bắt đầu với một ký số.
Trong PHP, định danh là cho một biến rất quan trọng, chỉ cần khác một ký hiệu nhỏ như chữ hoa, thường, sai một vị trí thì sẽ bị lỗi và đây cũng là lỗi lập trình thường gặp.
Định danh của biến có thể trùng tên với hàm. Tuy nhiên, rất dễ lầm lẫn và nên tránh dùng. Vì thế không nên tạo hàm với cùng định danh trong hàm.
Sử dụng biến trong PHP
Biến do người dùng định nghĩa: Ta có thể khai báo và sử dụng biến riêng ngoài những biến được đưa vào từ form HTML. Một trong những đặc điểm của PHP là nó không đòi hỏi khai báo biến trước khi dùng biến. Một biến sẽ được tạo khi gán giá trị vào biến đó.
Gán giá trị cho biến: Gán giá trị vào biến dùng toán tử gán =. Ta có thể gán giá trị của một biến khác vào biến.
Cấu trúc điều khiển
Cấu trúc điều khiển là các cấu trúc cho phép chúng ta điều khiển việc thực thi trong một chương trình hoặc trong kịch bản. Ta có thể nhóm vào cấu trúc điều kiện và cấu trúc lặp hoặc vòng lặp.
Các câu lệnh điều kiện : PHP hỗ trợ các loại câu lệnh điều kiện như sau:
Câu lệnh if : trong câu lệnh if có điều kiện. Nếu điều kiện là đúng thì phần sau câu lệnh sẽ được thực thi. Điều kiện của câu lệnh phải được đặt trong dấu ngoặc đơn ().
Câu lệnh else cho phép chúng ta định nghĩa một hành động khác khi điều kiện trong câu lệnh if sai.
Câu lệnh else if là sự kết hợp của câu lệnh else và câu lệnh if. Bằng cách đưa ra một loạt các điều kiện, chương trình kiểm tra mỗi điều kiện cho đến khi tìm thấy một điều kiện đúng. Viết elseif hay else if cả hai đều đúng. Nếu ta viết các câu lệnh else if thành tầng, ta nên sắp xếp các khối lệnh hay các câu lệnh sẽ thực thi.
Câu lệnh switch làm việc tương tự như câu lệnh if, nhưng cho phép điều kiện hơn hai giá trị. Trong câu lệnh if, điều kiện có thể đúng hoặc sai. Trong câu lệnh switch, điều kiện có thể là bất kì con số có giá trị khác nhau miễn là các giá trị đó có kiểu tương đương với nhau (integer, string hay double). Ta cung cấp thêm câu lệnh case để xử lý mỗi giá trị mà ta muốn kích hoạt. Câu lệnh Switch khác một chút so với câu lệnh if và câu lệnh elseif. Một câu lệnh if chỉ ảnh hưởng đến một câu lệnh trừ khi ta thận trọng dùng dấu ngoặc móc để tạo khối lệnh. Câu lệnh Switch thì ngược lại. Khi một trường hợp trong câu lệnh Switch được kích hoạt thì PHP sẽ thực thi các câu lệnh cho đến khi có câu lệnh break. Nếu không có câu lệnh break thì câu lệnh switch sẽ thực thi tất cả các đoạn mã sau case nếu đúng. Nếu câu lệnh break được xét đến thì dòng kế của đoạn mã sẽ được thực thi.
Phép lặp :
Vòng lặp while: vòng lặp đơn giản nhất trong PHP là vòng lặp while. Giống như câu lệnh if, nó dựa vào một điều kiện. Điểm khác giữa vòng lặp while và câu lệnh if là câu lệnh if thực thi khối lệnh theo sau nếu điều kiện đúng. Còn vòng lặp while thực hiện các khối lệnh lặp đi lặp lại cho đến khi điều kiện đúng. Sử dụng vòng lặp while khi ta không biết có bao nhiêu lần lặp cho đến khi điều kiện đúng. Nếu yêu cầu số lần lặp cụ thể thì ta dùng vòng lặp for. Cấu trúc cơ bản của vòng lặp while:While (condition) expression;
Để bắt đầu mỗi lần lặp thì điều kiện sẽ được kiểm tra. Nếu điều kiện sai thì khối lệnh sẽ không được thực hiện và kết thúc vòng lặp.
Vòng lặp for: Cấu trúc cơ bản của vòng lặp for là:
for(expression1; condition; expression2)
expression 3 ;
Biểu thức 1 được thực thi một lần khi bắt đầu. Lúc này khởi tạo giá trị đếm. Biểu thức điều kiện được kiểm tra trước mỗi lần lặp, nếu biểu thức điều kiện sai thì ngừng lặp. Kiểm tra giá trị đếm. Biểu thức 2 được thực thi cuối mỗi lần lặp. Lúc này điều chỉnh giá trị đếm. Biểu thức 3 được thực thi mỗi lần trên một lần lặp. Biểu thức này thường là một khối lệnh.
Vòng lặp do ..while : Cấu trúc chung của vòng lặp này là:
Do
Expression ;
While (condition);
Vòng lặp do . . while khác với vòng lặp while vì điều kiện được kiểm tra khi kết thúc một lần lặp.
Ngắt cấu trúc điều khiển hay kịch bản
Nếu muốn ngừng một vòng lặp, ta có thể sử dụng câu lệnh break trong vòng lặp giống như trong câu lệnh switch. Lúc đó, dòng kế tiếp sau vòng lặp sẽ được thực thi. Nếu muốn nhảy đến vòng lặp kế thì sử dụng câu lệnh continue. Nếu muốn kết thúc toàn bộ kịch bản PHP thì dùng exit.
Lưu trữ và truy xuất dữ liệu từ tập tin
Có ba bước để viết dữ liệu vào tập tin đó là: mở tập tin (nếu tập tin chưa tồn tại thì tập tin sẽ được tạo), viết dữ liệu vào tập tin, đóng tập tin.
Có ba bước để đọc dữ liệu từ tập tin: Mở tập tin (nếu tập tin không thể mở thì ta chấp nhận và thoát khỏi), đọc dữ liệu từ tập tin, đóng tập tin.
Mở tập tin: Có ba cách chọn khi mở tập tin:
Bạn muốn mở tập tin chỉ đọc, chỉ viết hay có cả hai thuộc tính đọc và viết.
Nếu viết vào tập tin, bạn muốn viết đè lên nội dung đã có của tập tin hay thêm dữ liệu mới vào cuối tập tin.
Nếu bạn đã viết vào tập tin trên hệ thống mà sự khác nhau giữa các tập tin kiểu văn bản và kiểu nhị phân, bạn muốn chỉ định điều này.
Sử dụng fopen() để mở tập tin: Có thể dùng hàm fopen() mở tập tin như sau:
$fp = fopen (“$DOCUMENT_ROOT/../part-to-your-file / file_name”, “w”)
Khi hàm này được gọi, nó thực thi với hai hoặc ba tham số. Thường thì chúng ta dùng hai tham số.
Tham số thứ nhất là tập tin bạn muốn mở. Bạn có thể chỉ đươØng dẫn đến tập tin này. Ta dùng PHP để xây dựng biến $DOCUMENT_ROOT. Biến này chỉ vào cây tài liệu cơ bản trên Web server của bạn. Chúng ta sử dụng “ ” có nghĩa là thư mục hiện hành của thư mục $DOCUMENT_ROOT. Thư mục này ở bên ngoài cây tài liệu vì lý do bảo mật. Đường dẫn này gọi là đường dẫn quan hệ để mô tả vị trí trong hệ thống tập tin quan hệ với $DOCUMENT_ROOT.
Tham số thứ hai của fopen() là chế độ tập tin. Chế độ này cho biết bạn muốn làm gì trên tập tin. Sau đây là một số các chế độ trong fopen():
Chế độ
Ý nghĩa
R
Chế độ đọc_mở tập tin để đọc, bắt đầu từ tập tin khởi đầu.
r+
Chế độ đọc_mở tập tin để đọc và viết, bắt đầu từ tập tin khởi đầu.
W
Chế độ viết_mở tập tin để viết, bắt đầu từ tập tin khởi đầu. Nếu tập tin đã tồn tại rồi thì xoá nội dung đã có. Nếu tập tin chưa tồn tại thì tạo tập tin mới.
W+
Chế độ viết_mở tập tin để viết và đọc, bắt đầu từ tập tin khởi đầu. Nếu tập tin đã tồn tại rồi thì xoá nội dung đã có. Nếu tập tin chưa tồn tại thì tạo tập tin.
A
Chế độ thêm_ mở tập tin để thêm vào (viết), bắt đầu từ nội dung đã có. Nếu tập tin chưa tồn tại thì tạo tập tin.
a+
Chế độ thêm_ mở tập tin để thêm vào (viết) và đọc, bắt đầu từ nội dung đã có. Nếu tập tin chưa tồn tại thì tạo tập tin.
B
Chế độ nhị phân_được sử dụng trong việc liên kết với một trong những chế độ khác. Bạn muốn dùng chế độ này nếu hệ thống tập tin của bạn khác nhau giữa tập tin nhị phân và tập tin văn bản. Hệ thống Windows thì khác nhau còn Unix thì không.
Tham số thứ ba của fopen() là tuỳ chọn. Bạn sử dụng tuỳ chọn nếu bạn muốn tìm đường dẫn (include_path) đến tập tin. Nếu bạn muốn dùng thì bạn phải thiết lập tham số này thành 1. Nếu dùng tham số này thì không cần thêm tên thư mục hay đường dẫn đến tập tin. Ví dụ:
$fp = fopen (“file_name”, “a”, 1);
Nếu mở tập tin thành công, con trỏ chỉ đến tập tin được trả về và được lưu trong một biến, trong trường hợp này là $fp. Bạn sử dụng biến này để truy xuất tập tin.
Bạn cũng có thể dùng fopen() để mở tập tin qua FTP hay HTTP. Nếu tên tập tin bắt đầu với ftp:// thì một kết nối FTP được mở đến server và kết quả sẽ được trả về.
Nếu tên tập tin bắt đầu với http:// thì một kết nối HTTP được mở đến server và kết quả sẽ được trả về. Khi dùng chế độ HTTP, bạn phải có dấu /. Ví dụ như:
Hàm fopen() không hỗ trợ HTTP chuyển hướng, vì thế bạn phải chỉ ra URL tham chiếu tới thư mục sau dấu /.
Lỗi thường gặp khi mở tập tin là cố mở một tập tin không cho quyền đọc và viết. PHP sẽ cảnh báo cho bạn.
Viết tập tin: Viết vào tập tin trong PHP tương đối đơn giản. Có thể dùng hàm fwrite() (viết vào tập tin) hoặc fputs() (đặt chuỗi vào tập tin), fputs() là bí danh của fwrite(). Ta gọi hàm fwrite() như sau:
fwrite($fp, $outputstring);
Hàm fwrite() có 3 tham số nhưng tham số thứ ba là tuỳ chọn. Cấu trúc chung của fwrite() là:
fwrite(int fp, string str, int [length]);
Tham số thứ ba của fwrite(), length, số byte tối đa được viết vào. Nếu có dùng tham số này thì fwrite() sẽ viết chuỗi vào tập tin được chỉ đến bởi fp cho đến khi kết thúc chuỗi hay kết thúc số byte chiều dài.
Đóng tập tin: Khi dùng xong một tập tin thì cần phải đóng tập tin. Nên dùng với hàm fclose(): fclose($fp);
Hàm này trả về giá trị đúng nếu tập tin đóng thành công hoặc sai nếu không thành công.
Đọc từ tập tin: Trước tiên là mở tập tin để đọc: fopen().
Khi nào ngừng mở tập tin thì gọi hàm feof(): Hàm feof() sẽ trả về giá trị đúng nếu con trỏ tập tin ở tại vị trí kết thúc tập tin. Mặc dù tên nghe lạ nhưng dễ nhớ khi biết feof là: File End Of File.
Đọc một dòng một lần: fgets(), fgetss(), fgetcsv()
$order = fgets($fp, 100);
Hàm này dùng để đọc một dòng từ tập tin. Hàm sẽ đọc đến khi bắt gặp ký tự (\n), bắt gặp một EOF, hay đọc 99 byte từ tập tin. Chiều dài tối đa để đọc bằng chiều dài trừ đi một byte.
Có nhiều hàm khác nữa dùng để đọc tập tin. Hàm fgets() thông dụng khi giải quyết các tập tin có chứa văn bản thuần tuý.
Một biến thể của fgets() là fgetss().
String Fgetss(int fp, int length, string [allowable_tags]);
Hàm fgetcsv() là biến thể khác của fgets(). Hàm này dùng để ngắt những dòng trong tập tin khi bạn dùng ký tự phân ranh, như ký tự tab, hay dấu phẩy.
Đọc cả tập tin: readfile(), fpassthru(), file()
Thay vì đọc mỗi lần một dòng thì ta đọc cả tập tin. Có 3 cách thực hiện:
Cách thứ nhất dùng readfile(), gọi hàm readfile() để mở tập tin, hiển thị nội dung chuẩn và đóng tập tin. Mẫu của readfile():
Int readfile(string filename, int [use_include_path]);
Cách thứ hai dùng fpassthru(). Dùng fopen() để mở tập tin trước. Sau đó gởi một tập tin như gởi đối số vào fpassthru(), nó sẽ kết xuất nội dung của tập tin từ vị trí con trỏ hướng tới xuất chuẩn. Đóng tập tin khi đã hoàn thành. Hàm này trả về giá trị đúng nếu đọc thành công và sai khi không thành công.
Cách thứ ba dùng hàm file(). Hàm này thay vì hiển thị để xuất, nó đưa vào một mảng. Ví dụ: $filearray = file($fp);
Nó sẽ đọc cả tập tin vào mảng $filearray. Mỗi dòng của tập tin sẽ được lưu trong mỗi phần tử của mảng.
Đọc một ký tự fgetc(): Để đọc mỗi lần một giá trị từ tập tin ta dùng hàm fgetc(). Nó tạo con trỏ tập tin như một tham số và trả về ký tự kế trong tập tin.
Đọc một chiều dài bất kỳ: Ta dùng hàm fread()
Sử dụng hàm fread() để đọc số byte chiều dài từ tập tin. Hàm này sử dụng như sau:
String fread( int fp, int length);
Kiểm tra tập tin có tồn tại không: Ta dùng hàm file_exists()
Nếu muốn kiểm tra một file xem có tồn tại không mà không cần mở nó ta dùng hàm file_exists().
Kiểm tra kích cỡ tập tin: dùng hàm filesize(). Cách dùng:
Echo filesize(“$DOCUMENT_ROOT/../orders/orders.txt”);
Có thể dùng với fread để đọc cả tập tin.
Xóa tập tin: Ta dùng hàm unlink()
unlink(“$DOCUMENT_ROOT/../orders/orders.txt”);
Hàm trả về sai nếu tập tin chưa được xóa.
Vị trí bên trong tập tin: Ta dùng hàm rewind (), fseek(), ftell()
Chúng ta có thể vận dụng và khám phá vị trí bên trong tập tin bằng cách dùng hàm rewind (), fseek(), ftell(). Hàm rewind () khởi tạo lại vị trí con trỏ tập tin về nơi bắt đầu tập tin. Hàm ftell() thông báo trong tập tin con trỏ trỏ cách xa bao nhiêu byte. Hàm fseek() dùng khởi tạo con trỏ tập tin trỏ đến một số điểm trong tập tin. Dạng của nó là:
Fseek(int fp, int offset);
Hàm fseek() khởi tạo con trỏ tập tin trỏ đến byte offset trong tập tin. Hàm rewind () tương đương hàm fseek() với offset là zero.
Khóa tập tin: Giả sử có hai người dùng cùng gọi fopen(). Điều gì sẽ xảy ra khi một người bắt đầu viết vào tập tin, kế đến một người khác cũng gọi fopen() và bắt đầu viết? Nội dung cuối cùng của tập tin là gì? Để tránh vấn đề trên ta dùng khóa tập tin.
Sử dụng hàm flock() có thể tránh được tình trạng trên. Hàm này gọi sau khi một tập tin đã được mở nhưng trước bất kỳ dữ liệu nào được đọc từ tập tin hay viết vào tập tin. Dạng của hàm này :
Flock (int fp, int operation);
Bạn cần đưa vào hàm một con trỏ trỏ tới tập tin mở và số đại diện cho kiểu khóa mà bạn yêu cầu. Nó trả về true nếu khóa thành công và trả về false nếu không thành công. Các giá trị thao tác của hàm flock() gồm :
1 Khóa đọc. Nghĩa là tập tin được chia sẽ với nhiều người đọc.
2 Khóa viết. Đây là khóa dành riêng. Tập tin không thể chia sẽ.
3 Khóa tồn tại bản quyền.
Sử dụng các mảng
Khái niệm về mảng: Mảng là nơi lưu tập hợp các giá trị bằng cách này cho phép bạn nhóm các vô hướng thông dụng. Các giá trị lưu trong mảng gọi là phần tử mảng. Mỗi phần tử có một chỉ số (còn gọi là khoá) để truy cập phần tử mảng. Mảng có chỉ số số học bắt đầu từ zero hoặc một. Trong PHP mặc định bắt đầu từ zero.
Mảng có chỉ số: Khởi tạo mảng với chỉsố. Ví dụ :
array (“abc”, “bcd”, “cde”)
Nếu bạn có dữ liệu và muốn tạo một mảng khác chỉ cần copy thành một mảng khác bằng toán tử =. Nếu bạn muốn có một tiến trình các số tăng dần trong mảng bạn có thể dùng hàm range() để tự tạo các mảng cho bạn.
Gán các giá trị cho các phần tử trong mảng: Bạn có thể gán trực tiếp các giá trị cho các phần tử trong mảng ngay khi bạn định nghĩa một mảng, hoặc sau đó. Ví dụ :
$fruits = array (
"fruits" => array("a"=>"orange", "b"=>"banana", "c"=>"apple"),
"numbers" => array(1, 2, 3, 4, 5, 6),
"holes" => array("first", 5 => "second", "third")
);
Sắp xếp mảng: Sử dụng hàm sort() để sắp sếp thứ tự trong mảng tăng dần. Dùng hàm asort() và ksort() để sắp xếp mảng kết hợp. Nếu chúng ta dùng mảng kết hợp để lưu các mục dữ liệu thì chúng ta dùng các loại hàm sort khác nhau để sắp xếp các phần tử trong mảng.
Hàm asort() để sắp xếp mảng theo giá trị của mỗi phần tử. Hàm ksort() sắp xếp theo khóa(theo phần tử ) nhiều hơn là theo giá trị.
Có ba hàm sắp xếp đảo ngược là rsort(), arsort(), krsort(). Hàm sắp xếp đảo ngược dùng tương tự như các hàm sắp xếp khác. Hàm rsort() sắp xếp các chỉ số mảng theo thứ tự tăng dần. Hàm arsort() sắp xếp giá trị mỗi phần tử của mảng theo thứ tự tăng dần. Hàm krsort() sắp xếp khóa mỗi phần tử của mảng theo thứ tự tăng dần.
Nếu bạn muốn sắp xếp lại mảng theo cách khác bạn có thể dùng hàm shuffle() hay array_reverse(). Hàm shuffle() sắp xếp ngẫu nhiên lại các phần tử trong mảng. Hàm array_reverse() cho bạn bản sao của mảng với tất cả thứ tự phần tử bị đảo ngược.
Sự điều hướng trong mảng :Ta có thể dùng các hàm sau để điều hướng trong mảng như:
Each()
Phần tử hiện hành trước con trỏ
current()
Trả về phần tử đầu tiên
reset()
Trả con trỏ về vị trí đầu tiên của mảng
end()
Gởi con trỏ đến cuối mảng
next()
Chuyển con trỏ lên phía trước và trả về phần tử hiện hành mới
prev()
Di chuyển con trỏ hiện hành lùi về một vị trí và trả về phần tử hiện hành mới
Nếu chúng ta tạo mảng mới thì con trỏ hiện hành sẽ trỏ tới phần tử đầu tiên của mảng.
Sửa đổi các phần tử trong mảng: Hàm array_walk() cho phép ta sửa đổi các phần tử trong mảng. Dạng của hàm array_walk() là:
Int array_walk(array arr, string func, [mixed userdata])
Hàm array_walk() có 3 tham số. Thứ nhất, tham số arr là mảng được xử lý. Thứ hai, tham số func tên hàm do người dùng định nghĩa và sẽ áp dụng cho mỗi phần tử trong mảng. Thứ ba, tham số userdata là tùy chọn.
Đếm phần tử trong mảng: Để đếm các phần tử trong mảng, ta sử dụng các hàm sau:
Count()
Trả về số phần tử trong mảng
sizeof()
Đếm số phần tử trong mảng
array_count_value()
Đếm số lần lặp lại của các giá trị trùng nhau và trả về một mảng chứa các bảng. Mảng này chứa tất cả các giá trị duy nhất trong mảng theo khóa. Mỗi khóa có một con số cho chúng ta biết khóa đó xảy ra bao nhiêu lần.
Hàm extract() : Dạng của hàm này như sau :
Extract( array var_array [, int extract_type] [, string prefix]);
Mục đích của hàm này lấy một mảng và tạo biến với tên của khóa trong mảng. Các giá trị này khởi tạo thành các giá trị trong mảng. Ví dụ :
$array=array(“key1”=>”value1”,”key2”=>”value2”,“key3”=>”value3”);
extract($array); echo $key1, $key2, $key3;
Mảng có 3 phần tử key1, key2, key3, sử dụng extract() ta tạo được 3 biến $key1, $key2, $key3.
Có hai đối số trong extract() là extract_type và prefix. Biến extract_type cho biết có bao nhiêu xử lý xung đột. Có những trường hợp một biến tồn tại trùng tên với khóa. Mặc nhiên nó sẽ viết đè lên biến đã tồn tại. Các kiểu extract_type:
extr_overwrite
Viết đè lên biến đã tồn tại khi xung đột xảy ra.
extr_skip
Bỏ qua một phần tử khi xung đột xảy ra.
extr_prefix_same
Tạo một biến được đặt tên là $prefix_key khi xung đột xảy ra. Bạn phải cung cấp prefix.
extr_prefix-all
Tiền tố của tất cả các biến đặt tên là prefix. Bạn phải cung cấp prefix.
Làm việc với các biểu thức
PHP hỗ trợ hai loại cú pháp để xử lý các biểu thức đó là kiểu POSIX và kiểu PERL. Trong đó, kiểu POSIX được biên dịch mặc định trong PHP, nếu dùng cú pháp kiểu PERL thì cần có các hàm thư viện PCRE để biên dịch.
Các ký tự đại diện dùng trong PHP:
.
Đại diện cho một ký tự.
[a..z]
Đại diện cho các ký tự chữ thường
[aeiou]
Đại diện cho các ký tự chữ có trong danh sách
[^a..z]
Không phải là các ký tự chữ thường
*
Lặp lại từ 0 đến nhiều lần
+
Lặp lại từ 1 đến nhiều lần
{a,b}
Lặp lại ít nhất a lần , nhiều nhất b lần (a<b)
^
Bắt đầu một biểu thức
$
Kết thúc một biểu thức
\
Hiển thị các ký tự đặc biệt theo sau nó.
Sử dụng lại đoạn mã và viết hàm
PHP hỗ trợ và cho phép ta sử dụng lại đoạn mã đã có, điều này làm cho chi phí thiết kế Web-site được giảm thiểu, và làm tăng tính gọn nhẹ và hợp lý của trang Web. Các đoạn mã được dùng lại nên gói gọn trong một file riêng và được gọi sử dụng bằng hàm require() và hàm include(). Cách sử dụng hai hàm này như sau:
Hàm require() : Hàm này sẽ lấy nội dung bên trong của file được chỉ định và dán vào vị trí xuất hiện hàm require(). Tập tin được “yêu cầu” không nhất thiết phải là tập tin có phần mở rộng .php mà có thể là .doc, .txt, .inc, .html, , nhưng đoạn mã cần dùng (nằm trong tập tin yêu cầu) nhất định phải nằm trong cặp thẻ (tags) của PHP. Nếu không thực hiện đúng điều này, PHP sẽ không thực thi đoạn mã mà chỉ xem đoạn mã như một đoạn text bình thường.
Với các trang Web có phần header và footer giống nhau, bạn nên đặt đoạn mã thiết kế phần header và footer này vào một tập tin riêng, và bạn chỉ cần dùng hàm require() này mỗi khi cần dùng để cho các trang Web của bạn có cùng một kiểu (style). Cách sử dụng hàm: require(“file_name”)
Hàm include() : Hàm này có cách dùng giống như hàm require() nhưng cách hoạt động thì không giống. Hàm require() sẽ luôn dán đoạn mã vào vị trí sử dụng hàm mà không cần biết thuật giải có sử dụng đoạn mã được dán hay không. Hàm include() chỉ dán đoạn mã vào vị trí sử dụng hàm chỉ khi nào thuật giải thực sự cần thực thi đoạn mã. Cách sử dụng hàm: Inclue(“file_name”)
Dùng auto_prepend_file và auto_append_file: Nếu bạn muốn tất cả các trang Web của mình đều dùng chung hai tập tin header và footer nhưng không thích sử dụng hàm require() ở đầu và cuối mỗi trang, bạn nên dùng phương pháp này. Bằng cách cấu hình lại server của bạn, chỉ rõ tập tin nào là header trong phần định auto_prepend_file và tập tin nào là tập tin footer trong phần định auto_append_file, PHP sẽ tự động thiết lập header và footer trong tất cả các trang Web của bạn theo một kiểu chung mà bạn đã định ra. Cách cấu hình sever như sau:
Trường hợp dùng IIS trên Windows: Vào Strart -> Run -> gõ dòng lệnh: Auto_prepend_file = “c:/inetpub/include/header.inc”
Auto_append_file = “c:/inetpub/include/footer.inc”
Trường hợp dùng hệ điều hành Unix: Vào Strart -> Run -> gõ dòng lệnh: Auto_prepend_file = “/home/username/include/header.inc”
Auto_append_file = “/home/username/include/footer.inc”
Trường hợp dùng ApacheWeb Server: Tạo một tập tin có tên bất kỳ với phần mở rộng là .htaccess trong thư mục Web với nội dung gồm hai dòng lệnh là:
php_value auto_prepend_file “/home/username/include/header.inc”
php_value auto_append_file “/home/username/include/footer.inc”
Viết hàm: Để tạo riêng cho mình một hàm, bạn cần xây dựng thuật giải cho hàm và viết hàm theo cấu trúc như sau:
[return_value_type] function function_name
([$val_name1, $val_name2, ]) { }
Giả sử bạn gọi tên một hàm chưa định nghĩa PHP sẽ báo lỗi như “Call to unsupported or undefined function function_name”.
Tên của hàm cũng sẽ gây báo lỗi nếu như ký tự đầu tiên trong tên hàm là một chữ số, hay bạn dùng dấu trừ giữa các ký tự hay tên của hàm trùng với tên các hàm có trong hệ thống.
PHP hướng đối tượng
Một điểm mạnh của PHP là sử dụng phương pháp hướng đối tượng để giải quyết các vấn đề với đầy đủ các khái niệm về lập trình hướng đối tượng như lớp, các thuộc tính, các hoạt động, các constructor, tính kế thừa, tính đa hình, v.v Cách lập trình hướng đối tượng trong PHP như sau:
Để tạo một lớp, ta sử dụng từ khoá class để tạo một lớp với cấu trúc như sau:
class class_name { }
Nếu trong một lớp có các hàm thì ta tạo như sau:
class class_name
{ function function_name1() { }
function function_name2() { }
}
Tạo các thuộc tính cho lớp: Để tạo các thuộc tính cho một lớp ta sử dụng từ khoá var.
class class_name
{ var $attribute_name ; }
Tạo Constructor : Để tạo một constructor cho một lớp, cần lưu ý là tên của constructor phải trùng với tên của lớp chứa nó.
class class_name
{ function class_name() { } }
Tạo một thể hiện của lớp: Dùng từ khoá new để cấp phát mới cho một thể hiện của một lớp.
&val_name = new class_name()
Truy xuất các thuộc tính của một lớp: Dùng ký hiệu trỏ để truy xuất các thuộc tính của một lớp, ví dụ như:
class class_name
{ var $attribute;
function class_name()
{ return $this -> attribute }
}
&val_name = new class_name();
&val_name -> attribute;
Thực hiện kế thừa: Một lớp B kế thừa từ một lớp A, nghĩa là một thể hiện của B có thể truy xuất, sử dụng mọi thuộc tính và mọi hàm thuộc lớp A. Trái lại, một thể hiện của lớp A không thể truy xuất cũng như sử dụng mọi thuộc tính và mọi hàm thuộc lớp B, mà chỉ có thể truy xuất và sử dụng mọi thuộc tính và mọi hàm của chính lớp A mà thôi.
Các đặc điểm khác trong PHP
Tương tác với các tập tin hệ thống và Server
Chúng ta đã biết cách lưu trữ và truy xuất dữ liệu trên Web server như thế nào. Sau đây sẽ giới thiệu những tương tác giữa các tập tin hệ thống trên Web server.
File upload: PHP hỗ trợ chức năng upload file cũng giống như trong ngôn ngữ kịch bản ASP vậy. Thay vì tập tin từ server đến trình duyệt dùng HTTP, thì tập tin ở vị trí thư mục ở trình duyệt sẽ đến server. Chúng ta thường thực hiện với HTML từ giao diện để lấy nội dung tập tin cần upload như ví dụ sau :
send this file:
Sau khi Submit trang này, server sẽ tự động tạo ra các biến để lưu trữ các thông tin liên quan đến tập tin cần Upload như :
$userfile : lưu trữ tên tập tin cần Upload trên server
$userfile_name : lưu trữ tên tập tin trên hệ thống máy gửi đi.
$userfile_size : lưu trữ kích thước của tập tin cần Upload (tính bằng bite)
$userfile_type : lưu trữ thông tin về loại tập tin
Sử dụng các hàm nghi thức và các hàm kết nối mạng:
Gởi và nhận thư: cách chính để gởi thư trong PHP là dùng hàm mail(). Hàm này sử dụng SMTP (Simple Mail Transfer Protocol) để gởi mail.
Sử dụng FPT (File Protocol Transfer), FPT được sử dụng để chuyển đổi tập tin giữa các host trên mạng. Trong PHP có thể dùng hàm fopen() và một số hàm tập tin khác với FTP như bạn kết nối với HTTP, để kết nối đến và để chuyển đổi tập tin đến từ FPT server.
Quản lý ngày giờ
Sử dụng hàm date(): Ta có thể gọi hàm date() với hai tham số trong đó một là tuỳ chọn. Tham số thứ nhất là chuỗi định dạng. Và tham số thứ hai là tùy chọn dấu hiệu thời gian. Nếu không có dấu hiệu thời gian thì hàm date() sẽ mặc định ngày giờ hiện hành. Nó trả về chuỗi định dạng hiển thị ngày thích hợp. Dạng của hàm date(). Ví dụ :
Date(“jS F Y”)
Date(“27th August 2002”)
Các mã sau được hàm date() chấp nhận:
A
Buổi sáng hay buổi trưa, hiển thị hai ký tự thường hoặc “am” hoặc “pm”.
B
Biểu đồ thời gian.
d
Ngày trong tháng, hai ký số bắt đầu bằng zero. Sắp xếp từ “01” đến “31”
D
Ngày trong tuần, ba ký tự viết tắt. Sắp xếp từ “Mon“ đến “Sun”.
F
Tháng trong năm, viết đầy đủ. Sắp xếp từ “January” đến “Decembe”.
g
Giờ trong ngày, theo 12 giờ không bắt đầu bằng zero.
G
Giờ trong ngày, theo 24 giờ không bắt đầu bằng zero.
h
Giờ trong ngày, theo 12 giờ bắt đầu bằng zero.
H
Giờ trong ngày, theo 24 giờ bắt đầu bằng zero.
i
Phút trong giờ, bắt đầu bằng zero. Sắp xếp từ “00” đến “59”.
j
Ngày của tháng, sắp xếp từ “1” đến “31”.
l
Ngày của tuần, viết đầy đủ. Sắp xếp từ “Monday” đến “Sunday”.
L
Kiểm tra năm nhuận, trả về “1” nếu là năm nhuận, ngược lại là “0”.
m
Tháng trong năm, với 2 ký số bắt đầu bằng zero.
M
Tháng trong năm, với 3 ký tự viết tắt. Sắp xếp từ “Jan” đến “Dec”.
n
Tháng trong năm, là số không bắt đầu bằng zero.
s
Giây trong phút, bắt đầu bằng zero. Sắp xếp từ “00” đến “59”.
S
Số thứ tự cho ngày, sẽ là “st”, “nd”, “rd”, hay“th”.
t
Tổng số ngày của tháng. Từ “28” đến “31”.
T
Giờ khu vực trên server với 3 ký tự.
U
Tổng số giây từ ngày 1/1/1970 đến nay.
w
Ngày của tuần, sắp xếp từ “0”(Sunday) đến “6”(Saturday).
y
Năm với 2 ký số. Ví dụ: “00”.
Y
Năm với 4 ký số. Ví dụ: “2000”.
z
Ngày trong năm là con số. Sắp xếp từ “0” đến ”365”.
Sử dụng hàm getdate(): Dạng của hàm: Getdate(int timestamp)
Timestamp : là tham số và trả về mảng kết hợp hiển thị phần ngày giờ như sau:
seconds
Giây, kiểu số.
minutes
Phút, kiểu số.
hours
Giờ, kiểu số.
mday
Ngày trong tháng. kiểu số.
wday
Ngày trong tuần. kiểu số.
mon
Tháng, kiểu số.
year
Năm, kiểu số.
yday
Ngày trong năm. kiểu số.
weekday
Ngày trong tuần. Viết đầy đủ.
month
Tháng, viết đầy đủ.
Có thể sử dụng hàm checkdate() để kiểm tra xem ngày, giờ có đúng không. Hàm này thường dùng kiểm tra ngày tháng do người dùng nhập. Dạng của hàm checkdate(): Int checkdate(int month, int day, int year)
Chuyển đổi ngày định dạng giữa MySQL và PHP: Ngày tháng trong MySQL, năm phải nhập đầu tiên, tháng rồi sau đó đến ngày. Ngày truy xuất từ MySQL cũng được sắp xếp mặc định. Khi đưa ngày tháng vào MySQL từ PHP, thì ta phải đặt vào đúng dạng của hàm date(). Thận trọng một tí, bạn nên dùng phiên bản ngày tháng bắt đầu với zero để tránh lẫn lộn trong MySQL.Có hai hàm thông dụng là : DATE_FORMAT() và UNIX_TIMESTAMP().
Hàm DATE_FORMAT() làm việc giống như hàm trong PHP nhưng dùng mã định dạng khác. Hầu hết chúng ta muốn định dạng theo kiểu MM-DD-YYYY hơn là YYYY-MM-DD như trong MySQL. Bạn có thể dùng cách này để viết câu truy vấn. Ví dụ:
SELECT DATE_FORMAT( date_column, ‘%m %d %Y)
Tập hợp hình ảnh
PHP hỗ trợ các dạng hình ảnh sau:
JPEG thường dùng để lưu trữ ảnh chụp hay hình ảnh khác với nhiều màu hay màu lam. Dạng này dùng để nén các hình ảnh vào một tập tin nhỏ hơn. Dạng này không thích hợp để vẽ các đường, văn bản, khối màu đặc.
PNG vì dạng này nén ít nên thích hợp với những hình ảnh có chứa văn bản, đường thẳng, và các khối màu đơn giản.
GIF đây là dạng nén được sử dụng rỗng rãi trên Web để lưu trữ hình ảnh chứa văn bản, đường thẳng và các khối màu đơn giản. GIF được sử dụng từ nhiều năm nay vì thế nó trở nên là một trong những dạng chuẩn trên Web.
Để tạo một hình ảnh, cần thực hiện bốn bước sau :Tạo nền cho ảnh để chúng ta sẽ vẽ ảnh trên nền ấy, vẽ hình dáng của ảnh và in văn bản lên nền vừa tạo, xuất ra hình ảnh cuối cùng, xoá nguồn đi.
Để bắt đầu xây dựng hoặc thay đổi một hình ảnh trong PHP, ta phải tạo phần nền ảnh. Có 2 cách cơ bản để tạo. Cách thứ nhất là tạo khoảng trống nền bằng cách dùng hàm ImageCreate(). Hàm này có hai tham số, thứ nhất là chiều rộng của ảnh, thứ hai là chiều cao ảnh. Hàm sẽ trả về dạng cho ảnh mới.
$im= ImageCreate($width, $hight)
Có hai giai đoạn để vẽ hay in văn bản lên hình ảnh.
Thứ nhất là phải chọn màu mà ta muốn vẽ. Như chúng ta đã biết các màu được hiển thị trên màn hình máy tính như màu: đỏ, xanh lá, xanh nhạt . . . với độ đậm nhạt khác nhau, dạng này sử dụng bảng màu có chứa các tập con của tất cả các màu kết hợp từ 3 màu chính. Sử dụng màu để vẽ một hình ảnh cần phải thêm màu vào bảng màu hình ảnh. Phải thêm mỗi màu ta muốn sử dụng thậm chí là màu đen và màu trắng.
Thứ hai, tuỳ thuộc vào ta muốn vẽ đường thẳng, đường cung, đa giác hay văn bản vào hình ảnh mà sử dụng các hàm hỗ trợ.
Hàm vẽ đòi hỏi các tham số sau: dạng hình ảnh, màu mà mình muốn vẽ và các thông tin về văn bản, phông chữ.
Sử dụng văn bản và phông chữ để tạo hình ảnh, chúng ta có thể tạo nút hay hình ảnh khác trên trang Web của mình. Chúng ta có thể tạo nút đơn giản dựa trên nền màu hình chữ nhật.
Sử dụng đối tượng Session và Cookie
Đối tượng Cookie: Cookie là phần nhỏ thông tin mà kịch bản có thể lưu trên máy client. Khi trình duyệt kết nối tới URL, trước hết nó sẽ tìm các cookie được lưu cục bộ. Nếu bất kỳ cookie nào có liên quan sẽ được kết nối tới và chúng sẽ được chuyển lại cho server.
Tạo cookie từ PHP: Ta có thể tạo cookie bằng cách dùng hàm setcookie(). Dạng của nó như sau:
Int setcookie(string cookie_name[ , string value [, int expire [ , string path [ , string domain [ , int secure ]]]]])
Có thể xóa cookie bằng cách gọi hàm setcookie() một lần nữa vớiù cùng tên cookie nhưng không cần giá trị. Nếu khi ta tạo cookie có dùng tham số thì khi xóa phải gởi thêm các tham số ấy nếu không bạn sẽ không xoá được cookie. Ta có thể tạo cookie thông qua hàm header() với cú pháp như trên. Tuy nhiên lời khuyên khi dùng hearder cookie là cookie hearder phải được gởi trước bất kỳ headrer nào khác nếu không nó sẽ không làm việc. Các ví dụ :
setcookie ("TestCookie", "Test Value");
setcookie ("TestCookie", $value,time()+3600);
setcookie ("TestCookie", $value,time()+3600,
Sử dụng cookie với session: Cookie có một vài vấn đề như: một số trình duyệt không chờ cookie, và một số người sử dụng không cho phép cookie trong trình duyệt của họ. Đây là một trong những nguyên nhân mà session trong PHP dùng phương pháp đôi cookie/URL.
Ta có thể dùng hàm session_get_cookie_params() để xem nội dung của cookie tạo bởi điều khiển session. Nó sẽ trả về một mảng kết hợp chứa các phần tử lifetime, path, domain.
session_get_cookie_params($lifetime, $path, $domain);
Thực thi session: Để thực thi session cần thực hiện 4 bước: khởi tạo session, đăng ký biến session, sử dụng biến session, đăng ký lại biến và huỷ session.
Khởi tạo session: Trước khi sử dụng chức năng của session ta cần bắt đầu session. Có 3 cách để khởi tạo một session. Thứ nhất là cách đơn giản nhất: bắt đầu kịch bản ta gọi hàm session_start(). Hàm này kiểm tra xem có mã số session (session ID) hiện hành chưa. Nếu không nó sẽ tạo session ID. Nếu có nó sẽ nạp biến session đã đăng ký để chúng ta có thể sử dụng được. Thứ hai session sẽ được bắt đầu khi chúng ta đăng ký biến session. Cách thứ ba là ta có thể bắt đầu session bằng cách thiết lập PHP để tự động khởi tạo session khi có ai đó vào truy cập.
Đăng ký biến session: Để một biến được kiểm tra từ kịch bản này đến kịch bản khác, ta cần đăng ký bằng cách gọi hàm session_register(). Ta nên đưa vào hàm một chuỗi chứa tên của biến. Lưu ý chuỗi này không chứa ký tự $. Hàm sẽ ghi tên biến và kiểm tra giá trị của nó. Biến sẽ được kiểm tra cho đến khi session kết thúc hoặc ta đăng ký lại.
Sử dụng biến session: Để đem một biến session vào phạm vi sử dụng trước hết ta phải bắt đầu session. Một biến không thể không quan tâm đến cách POST hay GET dữ liệu, đây là đặc điểm bảo mật tốt. Mặc khác ta cũng phải cẩn thận khi kiểm tra xem biến session đã được tạo hay chưa. Nhớ rằng các biến có thể được tạo bởi người sử dụng thông qua GET hoặc POST. Và cũng cần kiểm tra xem biến session đã được đăng ký bằng cách gọi hàm session_is_registered() hay chưa. Hàm sẽ trả về giá trị true hoặc false.
Đăng ký lại biến và huỷ session: Khi đã hoàn tất với biến session, ta có thể đăng ký lại bằng cách dùng hàm session_unregister(). Giống như hàm session_register(), ta phải đưa vào hàm một chuỗi chứa tên của biến và chuỗi này không chứa ký tự $. Hàm session_unregister() này khác hàm session_register() ở chỗ là chỉ đăng ký cho một biến session đơn tại một thời điểm. Tuy nhiên có thể dùng hàm session_unset() để đăng ký lại tất cả các biến hiện hành. Sau khi đã làm việc hoàn tất với session ta nên huỷ session ấy đi bằng cách gọi hàm session_destroy(), hàm này sẽ xoá cả mã số session.
Cấu hình điều khiển session: Sau đây là bảng mô tả các tùy chọn cấu hình cho session.
Tên
Mặc định
Hiệu ứng
session.auto_start
0(disable)
Tự động bắt đầu session.
Session.cache_expire
180
Khởi tạo thời gian sống cho trang session trong vài phút.
Session.cookie_domain
None
Miền để khởi tạo session cookie.
Session.cookie_lifetime
0
Thời gian session ID cookie lưu lại trên máy người sử dụng trong bao lâu. Mặc nhiên là 0, và sẽ còn lại cho đến khi trình duyệt bị đóng.
Session.cookie_path
/
Đường dẫn đến session cookie.
Session.name
PHPSESSID
Tên của session được sử dụng làm tên cookie trên máy người sử dụng.
Session.save_handler
Files
Định nghĩa nơi dữ liệu session được lưu trữ. Ta có thể chỉ tới cơ sở dữ liệu nhưng phải viết bằng hàm riêng.
Session.save_path
/tmp
Đường dẫn nơi dữ liệu session được lưu trữ. Các đối số đưa vào được xử lý bởi Session.save_path.
Session.use_cookies
1(enable)
Cấu hình session để dùng cookie trên client.
Xử lý lỗi
Trong PHP có tất cả bốn loại lỗi được chia theo các cấp độ như sau :
• 1 – Các lỗi thông thường về hàm
• 2 - Các cảnh cáo thông thường
• 4 - Lỗi cú pháp
• 8 - Các lời ghi chú
Để xem thông tin chi tiết về lỗi mắc phải, bạn nên in ra trình duyệt giá trị của biến toàn cục $php_errormsg để tham khảo.
Các loại hàm trong PHP
Chuyển hướng trang
PHP hỗ trợ hàm Header để gởi trả về cho trình duyệt một dòng HTTP Header cới cú pháp như sau: int header (string string)
Tuy nhiên cần phải gọi hàm này trước khi có một kết xuất từ server gởi trả về cho trình duyệt, nếu không bạn sẽ gặp phải một vài lỗi rất thông dụng. Có hai cách sử dụng hàm Header, trong đó cách gọi một header Location có thể gây ra hiệu quả chuyển hướng trang mà chúng ta cần, với cách gọi này, server không những gởi trả lại cho trình duyệt header của trang trước mà còn trả về một trạng thái chuyển hướng trang mới (hay chuyển hướng cho đoạn mã).
header ("Location: "); /* Chuyển hướng web site PHP */
exit; /* Đảm bảo đoạn mã bên dưới không tạo một kết xuất. */
Cách thứ hai là dùng để gởi trả về cho trình duyệt một header thật sự trong chuỗi string chỉ định.
header ("http/1.0 404 Not Found");
header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
header ("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
// always modified
header ("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header ("Pragma: no-cache"); // HTTP/1.0
Hàm gởi Mail
Hàm MAIL():Hàm này cho phép bạn thực hiện các thao tác về mail như gởi đi một mail. Cú pháp như sau :
bool mail (string to, string subject, string message
[, string additional_headers])
Bạn cũng có thể gởi mail này cho nhiều người nhận bằng cách điền đầy đủ địa chỉ người nhận trong phần to , mỗi địa chỉ cách nhau bằng dấu phẩy.
Ví dụ về cách sử dụng hàm :
1. mail("rasmus@lerdorf.on.ca", "My Subject", "Line 1\nLine 2\nLine 3");
---------------------------------------------
2. mail("nobody@aol.com", "the subject", $message,
"From: webmaster@$SERVER_NAME\nReply-To: webmaster@$SERVER_NAME\nXMailer:
PHP/" . phpversion());
Hàm sử dụng trong MySQL
Hàm kết nối cơ sở dữ liệu: Để tạo một kết nối đến một cơ sở dữ liệu trong MySQL, sử dụng hàm mysql_connect() với cú pháp như sau :
int mysql_connect ([string hostname [:port] [:/path/to/socket]
[, stringusername [, string password]]])
Hàm này sẽ trả về một vị trí trong MySQL nếu xác định liên kết thành công, một thông báo lỗi sẽ được trả về nếu liên kết thất bại. Nếu bỏ qua các đối số trong phần option, các giá trị mặc định tương ứng sẽ là (‘Localhost’,’user name của server đang làm việc’,’mật khẩu rỗng’).
Để ngắt một kết nối đã có, sử dụng hàm mysql_close() với đối số là tên của kết nối cần đóng, nếu đối số bị bỏ qua thì kết nối được tạo gần nhất (sau cùng) sẽ bị đóng lại, giá trị trả về là true nếu thực hiện đóng kết nối thành công và false nếu không thành công. Cú pháp:
int mysql_close ([int link_identifier])
Ví dụ :
<?php
$link = mysql_connect ("localhost", "u_name", "pwd")
print ("Connected successfully");
mysql_close ($link); ?>
Hàm thực thi một câu lệnh MySQL: Để gởi một truy vấn tới MySQL, sử dụng hàm gởi truy vấn với cú pháp :
int mysql_db_query (string database, string query [, int link_identifier])
Kết quả trả về sẽ là false nếu truy vấn thất bại, ngược lại, kết quả truy vấn sẽ được trả về. Điều kiện cần thiết là phải chọn cơ sở dữ liệu để thực hiện truy vấn trên cơ sở dữ liệu đó, nếu không truy vấn sẽ bị thất bại và giá trị false sẽ được trả về.
Hàm lấy dữ liệu trả về: Dữ liệu trả về của một câu truy vấn có thể là một bảng dữ liệu có nhiều dòng và nhiều cột, để lấy được dữ liệu trả về cần sử dụng hàm :
array mysql_fetch_array (int result [, int result_type])
Dữ liệu trả về sẽ được đưa vào một mảng nhiều chiều và bạn có thể lấy thông tin từ mảng bằng cách duyệt mảng rất dễ dàng. Ví dụ :
<?php
mysql_connect($host,$user,$password);
$result = mysql_db_query("database","select * from table");
while($row = mysql_fetch_array($result)) {
echo $row["user_id"]; echo $row["fullname"];}
mysql_free_result($result); ?>
Hàm lấy số mẩu tin trả về : Để lấy được thông tin về số mẩu tin trả về từ câu lệnh truy vấn Select, sử dụng hàm sau :
int mysql_num_rows (int result)
Để lấy được thông tin về số mẩu tin trả về từ câu lệnh truy vấn Insert hay Delete, sử dụng hàm sau : int mysql_fetch_rows (int result)
Hàm lấy thông tin về lỗi: Để nhận được mã số của lỗi khi thực hiện truy vấn, cần sử dụng hàm:
int mysql_errno ([int link_identifier])
Để nhận được thông báo của lỗi khi thực hiện truy vấn, cần sử dụng hàm
string mysql_error ([int link_identifier])
Ví dụ như :
<?php
mysql_select_db("nonexistentdb");
echo mysql_errno().": ".mysql_error()."";
$conn = mysql_query("SELECT * FROM nonexistenttable");
echo mysql_errno().": ".mysql_error().""; ?>