Programming HandBook part 71 ppsx

5 272 0
Programming HandBook part 71 ppsx

Đang tải... (xem toàn văn)

Thông tin tài liệu

Giá trị của hiện tại của Session được gán trong <a href="a.php">file a.php</a>:<br > username = <?php echo $_SESSION['username']; ?><br> time = <?php echo $_SESSION['time']; ?> </body> </html> Lưu 2 đoạn mã trên vào 2 file a.php và b.php. Đầu tiên, dùng browser truy cập vào file a.php bạn sẽ thấy 1 màn hình tương tự như sau: Quote: Giá trị của Session đã được gán: username = guest time = 1151911963 Click vào đây để kiểm tra. Click vào link "vào đây" để truy cập qua file b.php bạn sẽ thấy 1 màn hình tương tự như sau: Quote: Giá trị của hiện tại của Session được gán trong file a.php: username = guest time = 1151911963 Lấy session ID: trong nhiều trường hợp, bạn cần lấy giá trị của session ID (để đếm số lượng session đã được tạo chẳng hạn), PHP cung cấp cho ta hàm session_id() để lấy giá trị hiện tại của session ID. Lưu ý: hàm session_id() phải được gọi sau hàm session_start(). Ví dụ: PHP Code: //khời tạo session session_start(); //lấy sesion ID $id = session_id(); echo "Session ID = ".$id; MỘT SỐ LƯU Ý KHI SỬ DỤNG COOKIE VÀ SESSION * Các lệnh gán giá trị cho Cookie và Session phải nên được gọi trước khi bất cứ dữ liệu nào được xuất ra browser. Thậm chí 1 ký tự trắng ở đầu chương trình (có ký tự trắng trước <?php) cũng không được! Nếu bạn sử dụng Unicode trong chương trình, bạn cần chú ý ký tự BOM ở đầu file nguồn PHP. Xem thêm mục "LƯU FILE VỚI TIẾNG VIỆT UNICODE" trong phần "Giới thiệu - Các bước chuẩn bị cần thiết". * Lệnh session_start() phải được gọi ở đầu chương trình, trước tất cả các lệnh gán hoặc đọc session. CÁC HÀM PHP ĐƯỢC DÙNG TRONG VÍ DỤ * session_start: khởi tạo session. * session_id: lấy giá trị hiện tại của session ID. TÀI LIỆU THAM KHẢO * Từ Webopedia Computer Dictionary - Định nghĩa về Cookie: http://www.webopedia.com/TERM/c/cookie.html * Từ Webopedia Computer Dictionary - Định nghĩa về Session: http://www.webopedia.com/TERM/s/session.html * PHP Manual: http://www.php.net/manual/en/index.php o Cookie: http://www.php.net/manual/en/features.cookies.php o Session: http://www.php.net/manual/en/ref.session.php Source from DDTH Chúng ta đã biết nhiều về cách thức PHP hoạt động, làm thế nào để tương tác với người sử dụng qua các form, hôm nay chúng ta sẽ để ý một chút về server, bao gồm các thông tin kĩ thuật cũng như nắm bắt những gì người sử dụng gửi cho ta Có một việc rất may mắn cho các lập trình viên PHP là không phải chú ý đến server sẽ được sử dụng là Linux, FreeBSD hay Microsoft Windows, cũng không phải quan tâm đến sự khác biệt giữa Apache và IIS. Tuy nhiên, cũng có 1 vài điều chú ý nho nhỏ cho các bạn để chắc chắn những đoạn code viết ra phù hợp với server và hệ thống Đường dẫn và thư mục Có một sự khác biệt trong cách quản lý file và thư mục giữa các hệ thống Unix và Windows. Ví dụ trong 1 hệ thống Unix, thì đường dẫn đến website của bạn có thể là /home/httpd/customerwikiweb/wwwưp nhưng với hệ thống Windows thì lại là D:\WebSites\CustomerWiki\DocumentRoot. Điều này sẽ gây ra chút khó khăn khi bạn muôn viết code để xử lý dấu / hoặc \ và lo lắng về tên của ổ đĩa May mắn thay, thông thường dữ liệu chúng ta lấy vào từ database còn các file và thư mục thì cũng không quá xa với nơi đặt file PHP. Thêm nữa, hầu hết các hàm về file và thư mục trong Windows sẽ tự hiểu / và \. Chính vì vậy thay vì dùng các đường dẫn tuyệt đối, chúng ta chỉ cần sử dụng các đường dẫn tương đối và quên cấu trúc thư mục trên nó. Các biến của server Chìa khóa để ta hiểu thêm về server của mình là mảng "siêu" toàn cục $_SERVER đã giới thiệu từ trước. Có rất nhiều phần tử trong mảng này, ta sẽ tìm hiểu về 1 vài phần tử thường được sử dụng PHP_SELF Giả sử người sử dụng truy cập vào http://www.domain.com/php/test.php thì $_SERVER["PHP_SELF"] sẽ trả về kết quả là /php/test.php Chú ý: nếu truy xuất giá trị này từ trong đoạn mã đã được include bởi 1 đoạn mã khác thì giá trị thu được sẽ là của đoạn mã đã thực hiện include SERVER_NAME Phần tử này sẽ trả lại tên của server mà không có phần http:// ví dụ như www.domain.com. SERVER_SOFTWARE Cái tên nói lên tất cả! Khi được gọi, phần tử $_SERVER["SERVER_SOFTWARE"] sẽ trả về tên của phần mềm mà server sử dụng. Có thế là Microsoft-IIS/5.1 hoặc Apache/1.3.33 (Unix) PHP/5.0.4 mod_ssl/2.8.22 OpenSSL/0.9.7f. Sau này sẽ có một vài hàm đặc biệt, ta sẽ phải lấy thông số này trước khi sử dụng vì nó chỉ chạy trên 1 phần mềm nhất định (ví dụ như chỉ chạy trên Apache, còn trên IIS thì báo lỗi) Xâu - Các phép toán thường gặp (tiếp) Các hàm làm việc với xâu (string) So sánh 2 xâu Để so sánh 2 xâu với nhau, ta sử dụng strcmp và strncmp PHP Code: strcmp($xâu_1, $xâu_2); strncmp($xâu_1, $xâu_2, $n); Hàm strcmp sẽ chuyển từng kí tự trong 2 xâu về dạng mã byte của mỗi kí tự để so sánh, nó sẽ trả về 1 trong 3 giá trị: 1. (-1) nếu $xâu_1 "bé hơn" $xâu_2 2. 0 nếu 2 xâu "bằng nhau" 3. 1 nếu $xâu_1 "lớn hơn" $xâu_2 Hàm strncmp cũng hoạt động tương tự, nhưng nó sẽ không kiểm tra hết cả 2 xâu mà chỉ kiểm tra $n kí tự đầu tiên mà thôi Để dễ hiểu hơn, ta có ví dụ sau đây: PHP Code: <?php $strA = 'Update softs'; $strB = 'update softs'; $strC = 'tpdate softs'; $strD = ''; $strE = ''; $strF = 'Update life'; //So sánh A và B: mã của "U" < mã của "u" ~> đự doán là $resultAB = -1 $resultAB = strcmp($strA, $strB); //So sánh B và C: mã của "u" > mã của "t" ~> dự đoán là $resultBC = 1 $resultBC = strcmp($strB, $strC); //So sánh D và E: 2 thằng cùng không có gì ~> dự đoán là $resultDE = 0 $resultDE = strcmp($strD, $strE); //So sánh A và F (6 kí tự đầu tiên): 6 kí tự đầu tiên giống nhau ~> dự đoán l à $resultAF = 0 $resultAF = strncmp($strA, $strF, 6); //In ra kết quả echo "\$resultAB = $resultAB<br/>\$resultBC = $resultBC<br/>\$resultD E = $resultDE<br/>\$resultAF = $resultAF"; ?> Cho chạy đoạn mã trên bạn sẽ thu được: Quote: $resultAB = -1 $resultBC = 1 $resultDE = 0 $resultAF = 0 Vậy là đúng rồi nhỉ? Ngoài 2 hàm strcmp và strncmp còn có 1 vài hàm khác cũng dùng để so sánh 2 xâu với nhau tuy nhiên mỗi hàm lại khác nhau 1 tí tẹo: 1. strcasecmp và strncasecmp: 2 bạn này chỉ khác ở 1 điểm, đó là nó sẽ không phân biệt hoa thường ~> nếu trong ví dụ so sánh $strA và $strB mà dùng strcasecmp thì sẽ nhận đc kết là 0 2. strnatcmp và strnatcasecmp: 2 anh bạn này thì khá hay đấy. Giả sử bạn có 2 xâu là "filename10" và "filename9". Nếu dùng strcmp thì do mã của "1" nhỏ hơn "9" nên hiển nhiên kết quả sẽ là "filename10" nhỏ hơn "filename9"! Bạn sẽ lẩm bẩm: "Làm việc như máy (!?)". Nhưng không sao, chúng ta đã có 2 hàm strnatcmp và strnatcasecmp có khả năng làm việc như strcmp và strcasecmp cộng thêm khả năng xử lý số đặc biệt. Với strnatcmp thì "filename10" sẽ lớn hơn "filename9", với strncasecmp thì "Filename10" sẽ lớn hơn "fileNAME9" Đơn giản vậy thôi Chữ HOA và chữ thường Khi làm việc, đôi lúc bạn không muốn để ý đến chữ HOA và chữ thường, cách đơn giản nhất là sử dụng 2 hàm chuyển đổi sau: PHP Code: strtoupper($xâu); strtolower($xâu);

Ngày đăng: 03/07/2014, 09:20

Tài liệu cùng người dùng

Tài liệu liên quan