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 (552.38 KB, 50 trang )
<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>
<b><sub>Form được sử dụng để tương tác giữa người dùng và </sub></b>
chương trình bằng cách sử dụng các biến
<b><sub>$ _GET, </sub></b>
<b><sub>$ _POST </sub></b>
<b><sub>Trình duyệt web giao tiếp với server bằng cách sử dụng một </sub></b>
<b>trong hai phương thức HTTP (Hypertext Transfer Protocol) </b>
<b>- GET và POST. </b>
<b><sub>Trong phương thức GET, dữ liệu được gửi dưới dạng các </sub></b>
<b>tham số URL </b>gồm <b>các chuỗi tên và cặp giá trị được phân </b>
<b>tách bằng dấu &.</b>
<sub>Ví dụ:</sub>
<b><sub>Các phần in đậm trong URL là các tham số của GET và các phần </sub></b>
<i><b>in nghiêng là giá trị của các tham số.</b></i>
<sub>Nếu nhiều hơn một tham số thì sử dụng dấu & để nối các cặp tham </sub>
số.
<i><b><sub>Chỉ có thể gửi dữ liệu văn bản đơn giản bằng phương thức GET.</sub></b></i>
/>
<b><sub>Ưu điểm của phương thức GET</sub></b>
<sub>Phương thức GET dữ liệu được hiển thị trong URL, nên có thể đánh </sub>
dấu trang bằng các giá trị chuỗi truy vấn cụ thể.
<b><sub>Nhược điểm của phương thức GET</sub></b>
<sub>Phương thức GET không phù hợp để chuyển thông tin nhạy cảm </sub>
như tên người dùng và mật khẩu.
<sub>Phương thức GET chỉ định dữ liệu cho biến môi trường máy chủ, độ </sub>
<b><sub>PHP cung cấp biến $ _GET để truy cập vào tất cả thông tin </sub></b>
được gửi qua URL hoặc được gửi qua form HTML bằng
phương thức GET.
<sub>Ví dụ:</sub> <b><sub><</sub><sub>body</sub><sub>></sub></b>
<b> <?php</b>
<b> if(isset($_GET["name"])){</b>
<b> echo "<p>Hi, " . $_GET["name"] . "</p>";</b>
<b> }</b>
<b> ?></b>
<b> <form method="get" action="<?</b>
<b>php echo $_SERVER["PHP_SELF"];?>"></b>
<b> <label for="inputName">Name:</label></b>
<b> <input type="text" name="name" id="inputName"></b>
<b> <input type="submit" value="Submit"></b>
<b><sub>Trong phương thức POST, dữ liệu được gửi đến server dưới </sub></b>
<b>dạng một gói riêng biệt với tập lệnh xử lý. </b>
<sub>Dữ liệu gửi qua phương thức POST không hiển thị trên URL.</sub>
<sub>Ví dụ: </sub>
<b><?php</b>
<b> if(isset($_POST["name"])){</b>
<b> echo "<p>Hi, " . $_POST["name"] . "</p>";</b>
<b> }</b>
<b>?></b>
<b><form method="post" action="<?</b>
<b>php echo $_SERVER["PHP_SELF"];?>"></b>
<b> <label for="inputName">Name:</label></b>
<b> <input type="text" name="name" id="inputName"></b>
<b><sub>Ưu điểm của phương thức POST</sub></b>
<sub>POST an tồn hơn GET vì thơng tin người dùng khơng hiển thị trên </sub>
URL hoặc trong nhật ký máy chủ.
<sub>Có thể gửi lượng dữ liệu lớn, gồm văn bản, dữ liệu nhị phân </sub>
(uploading a file)
<b><sub>Nhược điểm của phương thức POST</sub></b>
<sub>Phương thức POST không hiển thị dữ liệu trên URL, nên khơng thể </sub>
đánh dấu trang có truy vấn cụ thể.
<b><sub>PHP cung cấp một biến $ _POST </sub></b> <sub>để truy cập thông tin </sub>
<sub>Tạo Form</sub>
<b><sub>Tạo form </sub></b>
<b><input type="text" name="name" id="inputName"></b>
<b><input type="text" name="email" id="inputEmail"></b>
<b><input type="text" name="subject" id="inputSubject"></b>
<b><textarea name="message" id="inputComment" rows="5" </b>
<b><sub>Khi người dùng click nút submit, dữ liệu trên form sẽ được </sub></b>
<b>gửi đến tệp "process-form.php" trên server để xử lý.</b>
<b><p>Here is the information you have submitted:</p></b>
<b> <ol></b>
<b> <li>Name:</b> <b> <?php echo $_POST["name"]?></li></b>
<b> <li>Email: <?php echo $_POST["email"]?></li></b>
<b> <li>Subject:<?php echo $_POST["subject"]?></li></b>
<b> <li>Message:<?php echo $_POST["message"]?></li></b>
<b><sub>Biến $ _REQUEST chứa các giá trị của cả biến $ _GET và </sub></b>
<b>$_POST và các giá trị của biến $ _COOKIE.</b>
<sub>Ví dụ: </sub>
<b><?php</b>
<b> if(isset($_REQUEST["name"])){</b>
<b> echo "<p>Hi, " . $_REQUEST["name"] . "</p>";</b>
<b> }</b>
<b>?></b>
<b><form method="post" action="<?php echo $_SERVER["PHP_SELF"];?</b>
<b>>"></b>
<b> <label for="inputName">Name:</label></b>
<b> <input type="text" name="name" id="inputName"></b>
<b><sub>Cookie là một tập tin văn bản nhỏ cho phép bạn lưu trữ một </sub></b>
lượng nhỏ dữ liệu (gần 4KB) trên máy tính của người dùng.
<b><sub>Cookie được sử dụng để theo dõi thông tin như tên người </sub></b>
dùng mà trang web có thể truy xuất để cá nhân hóa trang khi
người dùng truy cập lần sau.
<i><b><sub>Mỗi khi trình duyệt yêu cầu một trang đến máy chủ, tất cả dữ </sub></b></i>
<b><sub>Hàm </sub><sub>setcookie (): </sub></b><sub>được sử dụng để đặt cookie. </sub>
<b><sub>Cú pháp: </sub></b>
<i><sub>Name: Tên của cookie.</sub></i>
<i><sub>Value: Giá trị của cookie.</sub></i>
<i><sub>Expire: Ngày hết hạn. Sau thời gian này, cookie sẽ không thể truy cập </sub></i>
được. Giá trị mặc định là 0.
<i><sub>Path: đường dẫn trên máy chủ mà cookie sẽ khả dụng. </sub></i>
<i><sub>Domain: miền mà cookie có sẵn cho ví dụ: www.example.com.</sub></i>
<i><sub>Secure: nếu có, cookie sẽ được gửi khi tồn tại kết nối HTTPS an toàn.</sub></i>
<sub>Ví dụ:</sub>
<b><sub>Giải thích</sub></b>
<b><?php</b>
<b> </b><i><b>// Setting a cookie</b></i>
<b> setcookie("username","John Carter",time()</b>
<b>+30*24*60*60);</b>
<b>?></b>
<b><sub>Biến $ _COOKIE: truy xuất giá trị cookie, là một mảng kết </sub></b>
hợp có chứa danh sách tất cả các giá trị cookie được trình
duyệt gửi trong u cầu hiện tại.
<sub>Ví dụ: </sub>
<b><?php</b>
<b> </b><i><b>// Accessing an individual cookie value</b></i>
<sub>Kiểm tra cookie đã được đặt hay chưa trước khi truy cập giá </sub>
trị của nó, sử dụng hàm Isset ()
<b><sub>Ví dụ: </sub></b>
<b><?php</b>
<b> </b><i><b>// kiểểm tra cookies được cài đặt chưa</b></i>
<b> if(isset($_COOKIE["username"])){</b>
<b> echo "Hi " . $_COOKIE["username"];</b>
<b> } else{</b>
<b> echo "Welcome Guest!";</b>
<b><sub>Xóa cookie bằng cách gọi hàm </sub><sub>setcookie () với ngày hết </sub></b>
<i><b>hạn là ngày trong quá khứ.</b></i>
<sub>Ví dụ: </sub>
<b><?php</b>
<b> </b><i><b>// Deleting a cookie</b></i>
<sub>Lưu trữ dữ liệu bằng cookie có vấn đề về bảo mật. Vì cookie </sub>
được lưu trữ trên máy tính của người dùng nên kẻ tấn cơng
có thể dễ dàng chèn dữ liệu gây hại vào ứng dụng và có thể
phá vỡ ứng dụng của người dùng.
<sub>Khi trình duyệt yêu cầu một URL đến máy chủ, tất cả dữ liệu </sub>
<b><sub>Session</sub><sub> lưu trữ dữ liệu trên server, dựa trên phiên làm </sub></b>
<sub>Trước khi lưu trữ thông tin vào biến session, cần phải khởi </sub>
tạo session bằng cách gọi hàm <b>session_start (), </b> <b>một </b>
<b>session mới được tạo với một ID duy nhất cho người dùng.</b>
<b><sub>Cú pháp </sub></b>
<b><?php</b>
<i><b>// Starting session</b></i>
<b>session_start();</b>
<b>?></b>
<b><?php</b>
<i><b>// Starting session</b></i>
<b><sub>Có thể lưu trữ tất cả dữ liệu dưới dạng các cặp key-value </sub></b>
trong mảng $ _SESSION[ ].
<sub>Dữ liệu có thể được truy cập trong suốt thời gian tồn tại của </sub>
một session
<sub>Ví dụ: </sub>
<b><?php</b>
<b> </b><i><b>// Starting session</b></i>
<b> session_start();</b>
<b> </b><i><b>// Storing session data</b></i>
<b> $_SESSION["firstname"] = "Peter";</b>
<b><sub>Để truy cập dữ liệu của session từ bất kỳ trang nào khác </sub></b>
trên cùng một miền web domain - chỉ cần tạo lại session
<b>bằng cách gọi session_start () và sau đó chuyển khóa </b>
<b>tương ứng vào mảng liên kết $ _SESSION.</b>
<sub>Ví dụ: </sub>
<b><?php</b>
<b> </b><i><b>// Starting session</b></i>
<b> session_start();</b>
<b> </b>
<b> </b><i><b>// Accessing session data</b></i>
<b> echo 'Hi, '. $_SESSION["firstname"] .' ' . $_SESSION["lastn</b>
<b>ame"];</b>
<sub>Xóa dữ liệu của một session, chỉ cần bỏ khóa tương ứng của </sub>
mảng liên kết $ _SESSION
<sub>Ví dụ: </sub>
<b><?php</b>
<b> </b><i><b>// Starting session</b></i>
<b> session_start();</b>
<b> </b><i><b>// Removing session data</b></i>
<b> if(isset($_SESSION["lastname"])){</b>
<b> unset($_SESSION["lastname"]);</b>
<b><sub>Hủy hoàn toàn một session, gọi hàm </sub><sub>session_destroy (). </sub></b>
Hàm này khơng có đối số.
<sub>Ví dụ: </sub>
<b><?php</b>
<b> </b><i><b>// Starting session</b></i>
<b> session_start();</b>
<b> </b>
<b> </b><i><b>// Destroying session</b></i>
<b><sub>Kiểm tra tính hợp lệ trên form (Form Validation): kiểm tra </sub></b>
dữ liệu đầu vào do người dùng gửi. Có hai loại:
<b><sub>Kiểm tra phía máy khách: Việc xác thực được thực hiện trên trình </sub></b>
duyệt web của máy khách.
<b><sub>Kiểm tra phía máy chủ: dữ liệu đã được gửi đến máy chủ và thực </sub></b>
<b><sub>Biểu thức chính quy </sub></b><sub>là một chuỗi văn bản được định dạng </sub>
<i><b>đặc biệt được sử dụng để tìm các mẫu trong văn bản. </b></i>
<b><sub>Cú pháp: bao gồm các ký tự đặc biệt, và các ký tự có ý </sub></b>
nghĩa đặc biệt trong một biểu thức chính quy, gồm:
<b><sub>Các lớp ký tự: </sub><sub>Dấu ngoặc vuông bao quanh một mẫu ký tự </sub></b>
được gọi là một lớp ký tự.
<b><sub>Lớp ký tự phủ định</sub><sub>: được xác định bằng ký hiệu dấu mũ (^) </sub></b>
<b>ngay sau dấu ngoặc mở, ví dụ: [^ abc].</b>
<b><sub>Ngồi ra: có thể xác định một dải ký tự bằng cách sử dụng </sub></b>
<b>[abc]</b> Khớp với bất kỳ một trong các ký tự a, b hoặc c.
<b>[^abc]</b> Khớp với bất kỳ các ký tự ngoài các ký tự a, b, or c.
<b>[a-z]</b> Khớp với bất kỳ các ký tự chữ thường từ a đến z.
<b>[A-Z]</b> Khớp với bất kỳ các ký tự chữ hoa từ A đến Z
<b>[a-Z]</b> Khớp với bất kỳ các ký tự chữ thường và chữ hoa từ A đến Z
<b>[0-9]</b> Khớp với các số từ 0 đến 9.
<sub>Ví dụ:</sub>
<b><?php</b>
<b> $pattern = "/ca[kf]e/";</b>
<b> $text = "He was eating cake in the cafe.";</b>
<b> if(preg_match($pattern, $text)){</b>
<b> echo "Match found!";</b>
<b> } else{</b>
<b> echo "Match not found.";</b>
<b><sub>Các lớp ký tự được xác định trước</sub></b>
<b>.</b> Khớp với bất kỳ ký tự đơn nào ngoại trừ dòng mới \n.
<b>\d</b> khớp với bất kỳ ký tự chữ số nào tương tự [0-9]
<b>\D</b> Khớp với bất kỳ ký tự nào không phải chữ số [^0-9]
<b>\s</b> Khớp với bất kỳ ký tự khoảng trắng (dấu cách, tab, dòng mới <sub>hoặc ký tự xuống dòng) tương tự [ \t\n\r]</sub>
<b>\S</b> Matches any non-whitespace character, tương tự [^ \t\n\r]
<b>Hàm preg_match(): được dùng để kiểm tra, so khớp </b>
và lấy kết quả của việc so sánh chuỗi dựa vào biểu
<b>thức chính quy Regular Expression,</b>
<b>Cú pháp: </b>
<b><sub>Các tham số:</sub></b>
<i><b><sub>$pattern: biểu thức chính quy (Regular Expression)</sub></b></i>
<i><b><sub>$input: chuỗi cần kiểm tra</sub></b></i>
<i><b><sub>$matches: kết quả trả về, đây là tham số truyền vào ở dạng tham </sub></b></i>
chiếu..
<b><sub>Kết quả:</sub></b>
<b><sub>Hàm preg_match() sẽ trả về TRUE nếu so khớp và FALSE nếu </sub></b>
<b><sub>Ví dụ: kiểm tra một chuỗi là số</sub></b>
<b><sub>Kết quả in ra màn hình là giá trị của biến $maches, như vậy </sub></b>
<b>chuỗi 123 đã so khớp với pattern /^[0-9]+$/</b>
<b><?php</b>
<b> if (preg_match(‘/^[0-9]+$/', '123', $maches)){</b>
<b> var_dump($maches);</b>
<b><sub>Ví dụ: kiểm tra một chuỗi là ký tự thường</sub></b>
<b><sub>Như vậy chuỗi thehalfheart đã được so khớp với pattern </sub></b>
<b>/^[a-z]+$/</b>
<b><?php</b>
<b> if (preg_match('/^[a-z]+</b>
<b>$/', 'thehalfheart', $maches)){</b>
<b> var_dump($maches);</b>
<b> } </b>
<b><sub>Biến toàn cục: </sub><sub>$_SERVER[‘PHP_SELF’]: Trả về tên của tập </sub></b>
tin đang thực thi.
<b><sub>Lưu ý: về bảo mật trên Form PHP</sub></b>
<b><sub>Biến $ _SERVER ["PHP_SELF"] có thể bị tin tặc sử dụng!</sub></b>
<sub>Tránh khai thác $ _SERVER ["PHP_SELF"] bằng cách sử dụng hàm </sub>
<b>htmlspecialchars ().</b>
<b><sub>Hàm htmlspecialchars () </sub></b> <b><sub>chuyển đổi các ký tự đặc biệt thành </sub></b>
<b>các thực thể HTML. </b>
<sub>Ví dụ: </sub>
<b><sub>Hàm filter_var (): lọc một biến với bộ lọc được chỉ định. Hàm </sub></b>
này được sử dụng để xác thực và làm sạch dữ liệu.
<sub>Cú pháp:</sub>
<b><sub>Var: biến để lọc</sub></b>
<b><sub>Filtername: ID hoặc tên của bộ lọc sử dụng. Mặc định là </sub></b>
FILTER_DEFAULT.
<sub>Kiểm tra Email hợp lệ</sub>
<b><?php</b>
<b> $email = input($_POST["email"]);</b>
<b> if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {</b>
<b> $emailErr = </b>
<b>"Invalid format and please re-enter valid email"; </b>
<b><sub>Hàm Isset (): </sub></b><sub>kiểm tra một biến đã được khởi tạo trong bộ </sub>
nhớ của máy tính, nếu nó được khởi tạo thì hàm sẽ trả về giá
trị là TRUE và ngược lại là FALSE.
<sub>Ví dụ: </sub>
<b><?php</b>
<b> if (isset($domain)){</b>
<b> echo 'Biếến domain đã tồồn tại';</b>
<b> }</b>
<b> else{</b>
<b> echo 'Biếến domain chưa tồồn tại';</b>
<sub>Ví dụ: Lấy thông tin đăng ký từ form</sub>
<b><?php</b>
<b> if (isset($_POST['submit']))</b>
<b> {</b>
<b> $fullname = isset($_POST['fullname']) ? $_POST['fullname']:</b>
<b>'';</b>
<b> $address = isset($_POST['address']) ? $_POST['address'] : '</b>
<b>';</b>
<b> $email = isset($_POST['email']) ? $_POST['email'] : '';</b>
<b> $phone = isset($_POST['phone']) ? $_POST['phone'] : '';</b>
<b><sub>Hàm empty(): kiểm tra một biến có giá trị rỗng hoặc chưa </sub></b>
<b>được khởi tạo.</b>
<sub>Ví dụ: 6 trường hợp của biến $var, hàm empty() sẽ trả về </sub>
TRUE
<sub>$var = 0 hoặc $var = '0'</sub>
<sub>$var = NULL</sub>
<sub>$var = '';</sub>
<sub>$var = FALSE</sub>
<b><sub>Sử dụng hàm empty(): </sub></b><sub>để kiểm tra sự tồn tại và tính hợp lệ </sub>
của dữ liệu, hàm empty bao gồm chức năng của hàm isset()
<sub>Ví dụ: </sub>
<b><?php</b>
<b> $username = isset($_POST['username']) ? $_POST['username'] </b>
<b>: '';</b>
<b> $password = isset($_POST['password']) ? $_POST['password'] </b>
<b>: '';</b>
<b> if ($username == '') {</b>
<b> echo 'Bạn chưa nhập tến đăng nhập';</b>
<b> }</b>
<b> if ($password == '') {</b>
<b> echo 'Bạn chưa nhập mật khẩẩu';</b>
<b><sub>Xử lý lỗi là quá trình bắt lỗi do chương trình tạo ra và sau đó </sub></b>
thực hiện hành động xử lý thích hợp.
<b><sub>Cấp độ lỗi: </sub></b>
<b>Error Level</b> <b>Value Description</b>
E_ERROR 1 Lỗi run-time, nghiêm trọng, không thể khôi phục. Việc thực thi tập <sub>lệnh bị dừng ngay lập tức.</sub>
E_WARNING 2 Cảnh báo run-time. Không nghiêm trọng, Việc thực thi tập lệnh <sub>không bị dừng.</sub>
E_NOTICE 8 Thông báo run-time, cho biết tập lệnh có thể bị lỗi.
<b>Error Level</b> <b>Value</b> <b>Description</b>
E_USER_WARNIN
G 512 Một thông báo cảnh báo không nghiêm trọng do người dùng tạo ra.
E_USER_NOTICE 1024 Một thông báo thông báo do người dùng tạo. giống như <sub>một E_NOTICE.</sub>
E_STRICT 2048
Khơng hồn tồn là một lỗi, nhưng được kích hoạt bất cứ
khi nào PHP gặp mã có thể dẫn đến sự cố hoặc chuyển
tiếp khơng tương thích
<b><sub>Xử lý lỗi là quá trình bắt lỗi do chương trình tạo ra và sau đó </sub></b>
thực hiện hành động xử lý thích hợp.
<b><sub>Hàm die(): được sử dụng để hiển thị thông báo lỗi và kết </sub></b>
<b><sub>Ví dụ: </sub></b>
<sub>Nếu tập tin khơng tồn tại, thì chương trình hiển thị thơng báo </sub>
sau:
<i><b>Warning: fopen(sample.txt) [function.fopen]: failed to open </b></i>
<i><b>stream: No such file or directory in C:\wamp\www\project\test.php </b></i>
<i><b>on line 2</b></i>
<b><?php</b>
<b> </b><i><b>// Try to open a non-existent file</b></i>
<b><sub>Ví dụ (tt): Chương trình được viết lại như sau:</sub></b>
<b><?php</b>
<b> if(file_exists("sample.txt")){</b>
<b> $file = fopen("sample.txt", "r");</b>
<b> } else{</b>
<b> die("Error: The file you are trying to access doesn't exist</b>
<b>.");</b>