
Tổng hợp căn bản về học lập trình PHP cho người mới bắt đầu (p2)

Chào mừng bạn đã quay lại với bài học lập trình PHP căn bản tại tuandc.com. Nếu bạn chưa đọc phần 1 của bài này, hãy xem lại tại đây. Trong phần này chúng ta sẽ đi hết 8 phần còn lại trong lập trình PHP căn bản.
9. Chuyển hướng trình duyệt trong PHP
Để chuyển hướng trong PHP ta có thể sử dụng hàm header()
. Cú pháp của hàm này như sau:
header ($string, $replace = true, $http_response_code = null) {}
Trong đó:
$string
: Chuỗi này sẽ cho biết làm gì tiếp theo.$replace
: Tham số này mặc định là true, tức là chuỗi thay thế, Và bạn cứ để vậy nếu không có nhiều header$http_response_code
: Mã code trả về của Server. như 404 là không tìm thấy hay 301 là chuyển hướng có chủ đích,…
Một số ví dụ cụ thể như sau
//Chuyển hướng đến 1 trang
header('Location: http://www.domain.net/');
//Chuyển hướng chủ đích đến một trang
header('Location: http://www.domain.net/', true, 301);
//Chuyển hướng 404 như chuyển từ các trang không tìm thấy về trang chủ
header('Location: http://www.domain.net/', true, 404);
//Chuyển hướng tải file thay vì sử dụng link tải
header("Content-type: application/force-download");
header("Content-Disposition: attachment; filename=\"download.js\"");
10. GET & POST
Có 2 phương thức thông dụng để gửi dữ liệu đến Server, đó là GET
và POST
.
Phương thức GET trong PHP
Phương thức này được gửi đến server bằng cách gửi các key và value gán phía sau dấu “?” của URL. ví dụ
http://www.test.com/index.htm?namea=value1&nameb=value2
Phương thức này không phải là phương thức bảo mật, nó không được mã hóa và hiển thị công khai. Tối đa ký tự cho phương thức này là 1024 ký tự. Có thể dùng phương thức này để tìm kiếm, lấy action
, lấy id bài viết,… không được phép dùng cho mật khẩu, số thẻ, các thông tin nhạy cảm,….
Để gửi các dữ liệu theo phương thức này bạn tạo Form như sau:
<form action="file php được truyền tới" method="GET">
Họ tên: <input type="text" name="name" />
Tuổi: <input type="text" name="age" />
<input type="submit" />
</form>
Các biến này sẽ được lấy như sau
$ten = $_GET["name"]
$tuoi = $_GET["age"]
Phương thức POST trong PHP
Phương thức này sử dụng HTTP header để truyền thông tin đến server. Phương thức này bảo mật hơn rất nhiều nhờ việc mã hóa và giải mã ở Server. Tuy nhiên nhiều trường hợp hacker vẫn có thể đánh cắp được dữ liệu của bạn. SSL được thêm vào để giúp bạn truyền dữ liệu an toàn hơn. Bạn có thể tham khảo bài viết: Hướng dẫn thêm chứng chỉ SSL miễn phí của CloudFlare
Để gửi dữ liệu dạng này bạn chỉ cần thay method GET
thành POST
trong form là được.
<form action="file php được truyền tới" method="POST">
Họ tên: <input type="text" name="name" />
Tuổi: <input type="text" name="age" />
<input type="submit" />
</form>
Để nhận dữ liệu này cũng tương tự
$ten = $_POST["name"]
$tuoi = $_POST["age"]
11. Chèn file (File Inclusion)
Bạn sử dụng cách này để chèn các file khác nhau vào một file, ví dụ như header, footer, sidebar,… Để chèn file vào ta có hai hàm đó là include()
và require()
.
Hàm include() trong PHP
Hàm này sẽ lấy toàn bộ nội dung của file được include
và insert vào file hiện tại. Khi phát sinh lỗi các nó vẫn hoạt động và sinh ra một số dòng cảnh báo. Cách sử dụng như sau:
<html>
<body>
<?php include("header.php"); ?>
<p>Ví dụ minh họa cách include header.php!</p>
</body>
</html>
Đoạn mã trên sẽ chèn nội dung file header.php
vào file hiện tại.
Hàm require() trong PHP
Tương tự như include
, tuy nhiên khi phát sinh lỗi, nó không hoạt động và báo ra lỗi nghiêm trọng. Điều này cần thiết nếu như file bạn cần chèn vào rất quan trọng trong toàn bộ nội dung hiển thị. Cách sử dụng tương tự.
<html>
<body>
<?php require("header.php"); ?>
<p>Ví dụ minh họa cách require header.php!</p>
</body>
</html>
12. Mở / Đóng và Đọc / Ghi file
Mở file trong PHP
Để mở file trong PHP ta sử dụng hàm fopen
. Cú pháp fopen($path, $option)
. Trong đó $path
là đường dẫn đến file, $option
là quyền thao tác.
Ví dụ
$path = 'demo.txt';
$fo = @fopen($path, "r");
// Kiểm tra file mở thành công không
if (!$fo) {
echo 'Mở file không thành công';
}
else{
echo 'Mở file thành công';
}
Đọc file trong PHP
Có 3 cách đọc file trong PHP là đọc từng ký tự sử dụng fgetc($fo)
, đọc từng dòng sử dụng fgets($fo)
, sử dụng feof($fo)
và vòng lặp while để đọc từng dòng và từng ký tự, và cuối cùng là đọc hết file sử dụng fread($fp, $size)
. Trong đó $fo
là đối tượng mở file @fopen
, $size
là kích thước file cần đọc. Có thể dùng filesize($path)
để lấy kích thước file.
Ví dụ về đọc từng ký tự file trong PHP
$fo = @fopen('demo.txt', "r");
// Kiểm tra file mở thành công không
if (!$fo) {
echo 'Mở file không thành công';
}
else
{
// Lặp qua từng ký tự để đọc
while(!feof($fo))
{
echo fgetc($fo);
}
}
Ví dụ về đọc từng dòng file trong php
$fo = @fopen('demo.txt', "r");
// Kiểm tra file mở thành công không
if (!$fo) {
echo 'Mở file không thành công';
}
else
{
// Lặp qua từng dòng để đọc
while(!feof($fo))
{
echo fgets($fo);
}
}
Ví dụ về đọc hết file trong PHP
$fo = @fopen('demo.txt', "r");
// Kiểm tra file mở thành công không
if (!$fo) {
echo 'Mở file không thành công';
}
else
{
// Đọc file và trả về nội dung
$data = fread($fo, filesize('demo.txt'));
echo $data;
}
Ghi file trong PHP
Để ghi file trong PHP sử dụng hàm fwrite($fo, $content)
. Trong đó $fo
là đối tượng mở file @fopen
, $content
là nội dung bạn muốn ghi vào. Ví dụ như sau:
$fo = @fopen('demo.txt', "w");
// Kiểm tra file mở thành công không
if (!$fo) {
echo 'Mở file không thành công';
} else
{
$data = 'Nội dung cần ghi vào file';
fwrite($fo, $data);
}
Đóng file trong PHP
Nếu mở file mà không đóng sẽ gây ra một số lỗi trầm trọng, để đóng file hãy sử dụng fclose($fo)
. $fo
là đối tượng mở file @fopen
, ví dụ cụ thể:
$fo = @fopen('demo.txt', "w");
// Kiểm tra file mở thành công không
if (!$fp)
{ echo 'Mở file không thành công';}
else
{ $data = 'Nội dung cần ghi vào file';
// Ghi file
fwrite($fp, $data);
// Đóng file
fclose($fp);
}
Các hàm xử lý file cần thiết khác
Kiểm tra sự tồn tại của File trong PHP
if (file_exists('demo.txt')) { echo 'File tồn tại'; }
$fp = @fopen('demo.txt', "w"); // Kiểm tra file mở thành công không
if (!$fp) {
echo 'Mở file không thành công'; }
else {
if (is_writable ('demo.txt')) {fwrite($fp, 'Welcome');}
fclose($fp); }
// Lấy nội dung file
echo file_get_contents('demo.txt');
file_put_contents('demo.txt', 'noi dung');
rename('demo.txt', 'demo2.txt');
Ghi chú: “r”, “w” là các chế độ thực hiện. Có 6 chế độ thực hiện như sau:
Mode | Mục đích |
---|---|
r |
Mở file và chỉ đọc. |
r+ |
Mở file để đọc và ghi |
w |
Mở file chỉ ghi, và tạo ra file nếu chưa tồn tại. |
w+ | Mở file đọc và ghi, và tạo ra file nếu chưa tồn tại. |
a |
Mở file chỉ để ghi |
a+ |
Mở file để đọc và ghi, tạo ra file nếu chưa tồn tại. |
13. Hàm trong PHP
Hàm là một trong những thứ cực kỳ quan trọng và phổ biến, không chỉ PHP mà hầu hết các ngôn ngữ lập trình đều có hàm. Cú pháp hàm như sau:
/* Định nghĩa hàm */
function ham()
{
echo "Đây là chuỗi được in ra từ hàm";
}
/* Gọi hàm */
ham();
Bạn cũng có thể truyền tham số vào hàm để xử lý như sau
function hamTinh($num1, $num2)
{
$sum = $numa + $numb;
echo "Tổng hai số là: $sum";
}
hamTinh(12, 23);
Hàm trả về giá trị được viết như sau
function hamTinh2($num1, $num2)
{
$sum = $numa + $numb;
return $sum;
}
$giaTriTraVe = hamTinh2(12, 23);
14. Cookie
Cookie được lưu trữ trên các client phục vụ cho việc theo dõi. Khi các trình duyệt của client truy cập một domain đã lưu cookie, các nội dung cookie sẽ được gửi đến server và có thể sử dụng biến $_COOKIE
hoặc $HTTP_COOKIE_VARS["name cookie"]
.
Thiết lập các cookie cho Client sử dụng PHP
setcookie(name, value, expire, path, domain, security);
Trong đó:
- Name − Thiết lập tên của Cookie, biến này được sử dụng để truy cập vào Cookie.
- Value − Là nội dung mà bạn thực sự muốn Cookie lưu trữ.
- Expiry − Là hạn sử dụng của cookie, tính từ 1/1/1970. Khi hết hạn, cookie sẽ không được sử dụng.
- Path − Là nơi mà Cookie có hiệu lực. Dấu chéo (/) cho phép Cookie có hiệu lực trên tất cả các thư mục.
- Domain − Xác định tên miền mà Cookie có hiệu lực.
- Security − Nó có thể được thiết lập thành 1 để chỉ rằng Cookie này chỉ được gửi bằng truyền dẫn an toàn sử dụng HTTPS, ngược lại nếu thiết lập thành 0, nó có nghĩa rằng Cookie có thể gửi bằng HTTP thông thường.
Ví dụ như sau:
<?php
setcookie("name", "Nguyen Van Minh", time()+3600, "/","", 0);
setcookie("age", "25", time()+3600, "/", "", 0);
?>
Các cookie trên sẽ hết hạn trong 1 giờ, được phép lưu trữ trên tất cả thư mục và nó có thể được gửi bằng http thông thường.
Truy cập vào các cookie sử dụng PHP
Bạn có thể truy cập vào các code bằng 2 cách sau
echo $_COOKIE["name"]. "<br />";
/* là tương đương với */
echo $HTTP_COOKIE_VARS["name"]. "<br />";
Nên sử dụng hàm isset để kiểm tra sự tồn tại của cookie
<?php
if( isset($_COOKIE["name"]))
echo "Chào mừng " . $_COOKIE["name"] . "<br />";
else
echo "Không tìm thấy cookie ...!!!" . "<br />";
?>
Xóa cookie sử dụng PHP
Để xóa những cookie mà website của bạn đã lưu trên client, bạn có thể thiết lập để chỉ ra cho trình duyệt biết cookie đã hết hạn bằng cách:
setcookie( "name", "", time()- 60, "/","", 0);
15. Phiên (Session)
Session hay còn gọi là phiên làm việc sẽ được tạo ra và lưu trữ trên server.
Tạo biến Session
Các biến session sẽ được lưu trữ trong mãng $_SESSION[]
. Ví dụ như để lưu trữ một người dùng đăng nhập bạn có thể tạo như sau:
$_SESSION['user'] = $user;
Sử dụng biến Session
Biến Session có thể được sử dụng như một biến lưu trữ hoặc có thể được dùng để kiểm tra các yêu cầu cần thiết. Ví dụ như sau
$user = $_SESSION['user'];
hay sử dụng isset()
để kiểm tra sự tồn tại của biến.
Hủy các biến Session
Để hủy một biến session xác định bạn sử dụng unset($_SESSION['user']);
Để hủy tất cả biến Session bạn sử dụng session_destroy();
16. Upload file
Tải các tệp tin như hình ảnh, âm thanh, video,… lên website là công việc yêu cầu bắt buột có của hầu hết website. Để làm được điều này, chúng ta sử dụng phương thức Upload file với biến $_FILES
.
Tạo form upload file trong PHP
<form method="post" action="" enctype="multipart/form-data">
<input type="file" name="avatar"/>
<input type="submit" name="uploadclick" value="Upload"/>
</form>
Mã xử lý cụ thể như sau:
<?php // Xử Lý Upload // Nếu người dùng click Upload if (isset($_POST['uploadclick'])){ // Nếu người dùng có chọn file để upload if (isset($_FILES['avatar'])){ // Nếu file upload không bị lỗi, // Tức là thuộc tính error > 0 if ($_FILES['avatar']['error'] > 0){echo 'File Upload Bị Lỗi'; } else{ // Upload file move_uploaded_file($_FILES['avatar']['tmp_name'], './folder/'.$_FILES['avatar']['name']); echo 'File Uploaded'; } } else{ echo 'Bạn chưa chọn file upload'; } } ?>
Ghi chú: hàm move_uploaded_file()
sẽ có 2 tham số là $client_path
và $server_path
, với $client_path
là đường dẫn file ở client, cái này sẽ được lấy từ form. và $server_path
là đường dẫn ở server bạn muốn lưu thêm tên của file ở cuối nữa. bạn có thể tùy biến tên này cho phù hợp tránh bị trùng như thêm ngày,…
Chúc bạn thành công !
