PHP xử lý các biến rất linh động. Nó có thể thể hiện biết được kiểu của các biến và làm cho cú pháp câu lệnh đơn giản hơn. Ai đã từng lập trình với C, JAVA hoặc PERL sẽ cảm thấy rất dễ dàng khi sử dụng PHP. Tuy nhiên việc này cũng gây ra một số trở ngại nhất định.
LẬP TRÌNH WEB ĐỘNG VỚI PHP / MySQL GUESTBOOK CATALOG FORUM SHOPPING CART PHẦN Tống Phước Khải (tổng hợp & biên dịch) BIẾN (variables) phép xử lý biến PHP 1- Biến cách sử dụng Biến 2- Xử lý liệu từ FORM 3- Tìm hiểu sâu Biến Bạn đọc thân mến, Vừa qua soạn xong phần phần giáo trình tự học PHP/MySQL Tôi nhận email bạn quan tâm, chờ đợi phần giáo trình Đáng lẽ phần cho đời sớm bận rộn nhiều công việc (hiện phụ trách có nhiều công việc nhóm Hanosoft - software Hán Nôm) nên việc biên soạn sách tự học nhiều bị trì hoãn Do hoàn cảnh trên, chắn công việc biên soạn không tránh sai sót Nhưng dù nữa, biết bạn áp dụng giáo trình vào thực tế phần lấy làm khích lệ cho riêng Đúng lý phần dành trọn cho việc nói ngôn ngữ SQL phần bàn CSDL rồi, phần bàn nhàm phải không bạn? Với ý nghó dành trọn phần để nói biến PHP Hẳn nhiên biết số bạn mong mỏi áp dụng liền đỡ chán Nhưng theo nghó trước tiên hết bạn cần phải nắm rõ ngóc ngách PHP MySQL thiết kế chương trình đạt tiêu chuẩn Do mong bạn kiên nhẫn đọc chương hướng dẫn suông này! Đừng nản lòng nên ghi nhớ cội rễ cho ứng dụng thực tế bạn Để bắt đầu chương bạn phải có chút đỉnh kiến thức Cơ Sở Lập Trình Tôi nghó bạn học qua khoá lập trình bạn hiểu Nếu không, đòi hỏi bạn cần phải động não tìm tòi nhiều Nào, bắt đầu thôi! PHP xử lý biến linh động Nó nhận biết kiểu biến làm cho cú pháp câu lệnh đơn giản Ai lập trình với C, Java Perl cảm thấy dễ dàng sử dụng PHP Tuy nhiên việc dễ dãi gây số trở ngại định Tất biến khai báo PHP bắt đầu với dấu đô la ($) Dù cho biến bạn kiểu chuỗi, nguyên hay thập phân chí mảng chúng khác biệt PHP theo dõi liệu chứa biến thay đổi Nói chung, làm việc với PHP bạn quan tâm đến vị trí khác biến là: (1) khai báo mã lệnh PHP, (2) chuyển tiếp từ trang HTML (3) biến sẵn có hệ thống PHP Chúng ta tìm hiểu loại phần Nên lưu ý biến chuyển tiếp từ nơi khác từ URL từ SESSION Gán biến Script Bạn không cần phải khai báo EXPLICIT cho biến số ngôn ngữ khác Chỉ cần khai báo tên biến sẵn sàng làm việc Bạn xét ví dụ sau để hiểu cách khai báo biến PHP uyển chuyển naøo: $a $b $c $d = = = = "Toi thich hoc PHP"; //day la bien chuoi 4; //day la bien so 4.837; //day la bien so thuc "2"; //day cung la bien chuoi Để ý dấu = dấu dùng để gán Còn thực phép so sánh bạn dùng hai dấu (= = ) Ví dụ: IF ($x= =1) PHP thông minh việc biến đổi kiểu Ví dụ, bạn thực phép cộng số nguyên với chuỗi chứa ký tự số (trong ví dụ $b $d) $a $b $c $d = = = = "Toi thich hoc PHP"; //day la bien chuoi 4; //day la bien so 4.837; //day la bien so thuc "2"; //day cung la bien chuoi $e = $b + $d; echo $e; PHP nhận bạn muốn xem chuỗi $d (chuỗi "2") số nguyên Thế hoán chuyển sang trị nguyên thực phép toán cộng cho kết $e = Ngoài ra, PHP hiểu chuỗi vừa số vừa chữ ví dụ sau: $a = 2; $b = "2 heo con"; $c = $a + $b; Kết cho $c = Nếu số nguyên hay thập phân đứng vị trí đầu chuỗi PHP hiểu ví dụ Tương tự, PHP thực tương tự kiểu số khác nhau: $f = 2; //$f la mot so nguyen $g = 1.444; // $g la mot so thuc $f = $f + $g; //$f tu bien doi so thuc Việc xử lý thật hay, dẫn đến số rắc rối có lúc bạn thời điểm bạn làm việc với kiểu biến kiểu Tôi trình bày phần Kiểm Tra Biến Qui định chuỗi Trong ví dụ trên, bạn thấy tất chuỗi bao dấu nháy đôi Có hai cách khác để bạn thể cho PHP hiểu chuỗi Trong chuỗi mà bạn bao lại cặp nháy đôi " ", xong bạn chèn biến vào giữa, PHP hiểu biến Ví dụ: $my_name = "Jay"; $phrase = "Hello, my name is, $my_name"; echo $phrase; Kết cho là: Hello, my name is, Jay Thật khác thường phải không bạn?! (Đáng lẽ dấu nháy " thứ hai phải sau chữ is đặt dấu cộng chuỗi với biến $my_name) Trong trường hợp sau đây, muốn xuất chuỗi: Tôi đăng ký hosting hết $20 phải làm sao? Bởi chuỗi có chứa $, điều làm cho PHP hiểu biến Chúng ta xem cách giải sau: Nếu chuỗi bạn muốn có chứa ký tự đặc biệt như: dấu nháy đôi "", dấu slash \, dấu đô la $ , bạn phải sử dụng đến ký tự chuyển (gọi dấu escape) dấu slash (\) Tôi quen đọc dấu / "dấu suyệt trái" \ "dấu suyệt phải" Giả sử, để xuất hình dòng chữ: , bạn thấy chứa tới dấu nháy đôi - thuộc dạng ký tự đặc biệt Ta phải sử dụng tới dấu suyệt phải sau: echo ""; Thì đến chạy chương trình mong cho kết mong muốn Tác dụng dấu nháy đơn PHP: Bạn thấy dấu nháy đơn PHP có tác dụng dấu nháy đôi nào! Nếu chuỗi bạn có chứa biến (bắt đầu $), bạn bao lại dấu nháy đơn biến bị biến thành chuỗi luôn, không hiểu biến cách bao dấu nháy đôi: $my_name = "Jay"; echo ‘Hello, my name is, $my_name’; Kết cho Hello, my name is, $my_name Hello, my name is Jay Cuối cùng, PHP4 bạn sử dụng dấu Here Documents Đây loại ký hiệu tương tợ hai loại nháy đơn nháy đôi Trong số trường hợp sử dụng bạn cảm thấy tiện lợi Here Docs xác định giới hạn đầu chuỗi với dấu nhỏ HTTP_POST_VARS Đây mảng chứa tất biến chuyển tiếp thông qua POST method từ form Bạn truy cập biến riêng rẽ phần tử mảng liên hợp (ví dụ: $PHP_POST_VARS["myname"]) HTTP_GET_VARS Đây mảng chứa tất biến chuyển tiếp thông qua GET method Bạn truy cập biến riêng rẽ phần tử mảng liên hợp (ví dụ: $PHP_GET_VARS["myname"]) HTTP_COOKIE_VARS Tất cookie chuyển đến trình duyệt truy xuất mảng liên hợp Nó bao gồm session cookie Nếu bạn thắc mắc cookie thi hành xem hàm phpinfo() để biết trình duyệt bạn chuyển đến server BIẾN CỦA APACHE Apache có sẵn nhiều biến Tôi không trình bày đầy đủ tất biến Các biến bạn sử dụng, chúng tuỳ thuộc vào xác lập bạn Sau số biến mà có lẽ bạn sử dụng thường xuyên chương trình bạn DOCUMENT_ROOT Biến trả đường dẫn Webserver Biến sử dụng xuyên suốt sách Hãy xét ví dụ sau: include"$DOCUMENT_ROOT/book/functions/charset.php"; Bằng cách sử dụng biến DOCUMENT_ROOT thay dùng đường dẫn tuyệt đối, di chuyển toàn thư mục sang Apache Server khác mà không lo lắng đường dẫn bị sai lệch include path Nên nhớ bạn không sử dụng Apache Server biến không sử dụng Nếu bạn sử dụng include_path tập tin php.ini, bạn không cần phải lo lắng phải xác định đường dẫn PHP duyệt hết tất thư mục tìm tập tin bạn định HTTP_USER_AGENT Bất kỳ thiết kết Web site hiểu tầm quan trọng việc nhận dạng trình duyệt người sử dụng Một số trình duyệt không sử dụng JavaScript, số khác đòi hỏi dạng HTML đơn giản Biến user_agent cung cấp cho bạn khả uyển chuyển trình duyệt khác Một user_agent chuẩn có dạng này: Mozilla/4.0 (compatible; MSIE 5.01; Windows 98) Nếu bạn phân tích chuỗi bạn biết bạn cần tìm Có thể bạn thích hàm get_browser() PHP Về lý thuyết mà nói, hàm định nghóa khả cho phép trình duyệt user sử dụng Cho nên bạn biết chương trình bạn phục vụ tốt hay không Các sách PHP có hướng dẫn cách cài đặt sử dụng get_browser(), khuyên bạn không nên sử dụng Bởi sử dụng get_browse bạn bảo IE dùng cho PC Netscape 4.01 dùng cho Mac có hỗ trợ CSS (cascading stylesheets) JavaScript Nhưng người sử dụng biết rằng: viết lệnh DHTML để chạy hai môi trường trình duyệt công việc phức tạp Thông tin bạn nhận từ get_browser() dẫn đến tính giả bảo mật Cách tốt bạn sử dụng HTTP_USER_AGENT thực định dựa trình duyệt platform xác định REMOTE_ADDR Dùng để lấy địa IP user Tuy nhiên có user am hiểu chuyện họ thay đổi IP máy Cho nên không lấy để đảm bảo rằng: địa IP chắn chắn user Bạn sử dụng biến để theo dõi truy nhập user mang tính tương đối REQUEST_URI Biến giống biến PHP_SELF Ngoài chứa thêm tham số địa truy vấn Nếu bạn truy cập vào địa chỉ: http://www.mydomain.com/info/products/index.php?id=6 Thì biến REQUEST_URI bạn có giá trị là: info/products/index.php?id=6 SCRIPT_FILENAME Biến chứa toàn đường dẫn tập tin Kiểm tra biến Ở nói nhiều Biến Như bạn biết đó, tên biến không quan trọng giá trị mà chứa Như nói Biến PHP uyển chuyển Điều phát sinh bất lợi bạn thời điểm biến mang giá trị Do bạn cần phải thực thao tác kiểm tra biến isset( ) Hàm thực việc kiểm tra biến có chứa giá trị hay không Nó trả giá trị TRUE FALSE Nếu biến chưa xác lập trị isset() false Bạn xem xét ví dụ sau, thi hành query MySQL Bạn biết field database chứa trị null chuỗi rỗng Với việc sử dụng hàm isset() bạn kiểm tra phân biệt hai giá trị Trong đoạn lệnh PHP bên Trong biến $query phát biểu SELECT lấy liệu submit từ form user $result = mysql_query($query) or die (mysql_error()); $number_cols = mysql_num_fields($result); echo "query: $query\n"; //layout table header echo "\n"; echo "\n"; for ($i=0; $i Khi chạy chương trình, biến sau tạo $bien_ho, $bien_ten ghi hình: Tong Khai Tóm tắt Bạn tìm hiểu biến PHP Bạn thấy PHP xử lý biến linh hoạt nhiều so với ngôn ngữ khác Còn vấn đề quan trọng biến scope bạn biết kỹ phần sau giáo trình (Còn tiếp) ... đỉnh kiến thức Cơ Sở Lập Trình Tôi nghó bạn học qua khoá lập trình bạn hiểu Nếu không, đòi hỏi bạn cần phải động não tìm tòi nhiều Nào, bắt đầu thôi! PHP xử lý biến linh động Nó nhận biết kiểu... hiểu biến cách bao dấu nháy đôi: $my_ name = "Jay"; echo ‘Hello, my name is, $my_ name’; Kết cho Hello, my name is, $my_ name Hello, my name is Jay Cuối cùng, PHP4 bạn sử dụng dấu Here Documents... trang action mypage .php Sau đó, trang mypage .php bạn xử lý biến tuỳ thuộc vào mục đích chương trình Để ý phần lớn ứng dụng sách sử dụng giá trị nút lệnh SUBMIT Trong trang mypage .php bạn phải