PHP – Sửa Máy Nhanh https://www.suamaynhanh.vn/danh-muc-phan-mem/laptrinh-php/ Miễn phí hướng dẫn sửa chữa, tháo lắp các thiết bị và cài đặt phần mềm. Wed, 12 Aug 2020 04:30:36 +0000 vi hourly 1 https://wordpress.org/?v=6.1.7 https://suamaynhanh.vn/wp-content/uploads/2018/06/cropped-cropped-cropped-ifix-logo-horiz-32x32.png PHP – Sửa Máy Nhanh https://www.suamaynhanh.vn/danh-muc-phan-mem/laptrinh-php/ 32 32 Hướng dẫn cài đặt song song 2 phiên bản PHP trên VPS sử dụng Directadmin https://suamaynhanh.vn/phan-mem/huong-dan-cai-dat-song-song-2-phien-ban-php-tren-vps-su-dung-directadmin/ https://suamaynhanh.vn/phan-mem/huong-dan-cai-dat-song-song-2-phien-ban-php-tren-vps-su-dung-directadmin/#respond Wed, 12 Aug 2020 04:30:36 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=17218 DirectAdmin hỗ trợ chạy hai phiên bản PHP cùng nhau. Hiện nay, sự kết hợp phổ biến nhất là PHP 5.6 …

The post Hướng dẫn cài đặt song song 2 phiên bản PHP trên VPS sử dụng Directadmin appeared first on Sửa Máy Nhanh.

]]>
DirectAdmin hỗ trợ chạy hai phiên bản PHP cùng nhau. Hiện nay, sự kết hợp phổ biến nhất là PHP 5.6 và 7.0.

Trong bài hướng dẫn này, mình sẽ sử dụng CustomBuild để chạy hai phiên bản PHP.

Trước khi làm theo hướng dẫn này, bạn sẽ cần phải chắc chắn rằng bạn đang chạy CustomBuild 2.0. Nếu không, vui lòng cập nhật (xem hướng dẫn tại đây).

Lưu ý: PHP 7 chỉ được hỗ trợ bởi DirectAdmin 1.50.1 và mới hơn.

Bước 1: Thay đổi cấu hình CustomBuild

Có hai cách để thay đổi cấu hình CustomBuild: trực tiếp sửa đổi tệp options.conf hoặc sử dụng dòng lệnh. Trong hướng dẫn này, mình sẽ sử dụng dòng lệnh.

Để thiết lập hai phiên bản PHP 5.6 và 7.0, đầu tiên hãy điều hướng đến thư mục CustomBuild:

cd /usr/local/directadmin/custombuild

Bước 2: Thiết lập các phiên bản PHP

Tiếp theo, chạy các lệnh sau đây để thiết lập các phiên bản:

./build set php1_mode php-fpm
./build set php2_mode php-fpm
./build set php1_release 7.0
./build set php2_release 5.6

Lưu ý: Sử dụng câu lệnh trên, cả hai phiên bản PHP sẽ được chạy trong chế độ php-fpm. Điều này là cần thiết nếu bạn đang sử dụng một proxy Nginx và Apache. Nếu bạn không sử dụng proxy ngược lại, bạn có thể thay đổi chế độ PHP nếu cần.

Sử dụng các phiên bản PHP cũ hơn 5.6 là rất không khuyến khích vì chúng đã hết được hỗ trợ, do đó và không còn được cập nhật hoặc duy trì nữa. Như vậy, khuyên bạn sử dụng PHP 7 là mặc định và sử dụng 5.6 là phiên bản PHP thứ 2.

Bước 3: Biên dịch lại PHP

Biên dịch lại PHP và viết lại cấu hình:

./build php n
./build rewrite_confs

Điều này có thể mất một thời gian dài, xin vui lòng không làm gián đoạn quá trình.

Bước 4: Thiết lập các phiên bản PHP

Bây giờ bạn có thể chọn một phiên bản PHP cho website của bạn. Tất cả các trang web hiện đang chạy trên máy chủ DirectAdmin của bạn sẽ sử dụng giá trị đặt cho php1_release.

multiple-php-directadmin

Nguồn: expertvn.com

The post Hướng dẫn cài đặt song song 2 phiên bản PHP trên VPS sử dụng Directadmin appeared first on Sửa Máy Nhanh.

]]>
https://suamaynhanh.vn/phan-mem/huong-dan-cai-dat-song-song-2-phien-ban-php-tren-vps-su-dung-directadmin/feed/ 0
Tìm hiểu hàm header trong PHP https://suamaynhanh.vn/phan-mem/tim-hieu-ham-header-trong-php/ https://suamaynhanh.vn/phan-mem/tim-hieu-ham-header-trong-php/#respond Thu, 27 Feb 2020 03:57:52 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=14774 Trong bài này chúng ta tìm hiểu về hàm header, đây là một hàm được dùng khá nhiều trong lập trình …

The post Tìm hiểu hàm header trong PHP appeared first on Sửa Máy Nhanh.

]]>
Trong bài này chúng ta tìm hiểu về hàm header, đây là một hàm được dùng khá nhiều trong lập trình web, ví dụ như dùng để chuyển hướng trang, dùng để khai báo định dạng file trả về từ Server, …

Trong tiếng anh thì có định nghĩa như sau: header() is used to send a raw HTTP header, khái niệm này bạn hãy tự dịch ra chứ mình cũng không biết dịch sao cho sát nghĩa nữa :3

Cú pháp của hàm header như sau:

 

1
header ($string, $replace = true, $http_response_code = null) {}

 

Trong đó:

  • $string: Chuỗi khai báo cho kết quả trả về từ Server, chuỗi này đóng vai trò quan trọng nhất vì nội dung của nó sẽ quyết định header sẽ làm gì.
  • $replace: Tham số này mặc định là true, nghĩa là định dạng của chuỗi $string sẽ được replace chứ không phải khai báo mới (trường hợp khai báo nhiều header).
  • $http_response_code: Mã code trả về từ Server. VD 404 là not found 301 là chuyển hướng có chủ đích

Lưu ý: Cũng như Session trong PHP, bạn phải chắc chắn rằng ở phía trên đoạn code sử dụng header không được xuất ra bất kì một ký tự nào, vì vậy thông thường chúng ta đặt header ở phía trên cùng của file, nơi mà chưa có những đoạn mã HTML.

Và bây giờ chúng ta tìm hiểu một số công dụng của hàm header nhé.

1. Header điều hướng trang

Bạn có thể sử dụng thẻ header để điều hướng, chuyển hướng trang với cú pháp như sau:

 

1
header('Location: <a href="http://www.domain.net/">http://www.domain.net/</a>');

 

Ví dụ: Chuyển hướng tới trang freetuts.net

 

1
header('Location: <a href="http://www.freetuts.net/">http://www.freetuts.net/</a>');

 

Khi chuyển hướng trang với hàm header bạn nên khai báo thêm response_code sẽ tốt hơn rất nhiều cho SEO. Chẳng hạn như bạn thay đổi domain cho website thì khi người dùng vào domain cũ bạn sẽ chuyển hướng nó sang domain mới, lúc này bạn nên sử dụng code là 301 vì đây là code khai báo chuyển hướng có điều kiện.

 

1
header('Location: <a href="http://www.domain.net/">http://www.domain.net/</a>', true, 301);

 

Còn trường hợp bạn muốn chuyển hướng page not found thì hãy sử dụng mã code 404.

 

1
header('Location: <a href="http://www.domain.net/">http://www.domain.net/</a>', true, 404);

 

2. Khắc phục lỗi font với hàm header

Bạn có thể sử dụng hàm header để khắc phục tình trạng lỗi font khi trả kết quả về không có định dạng thẻ meta utf8 bằng cách đặt đoạn code sau ở đầu file.

 

1
header('Content-Type: text/html; charset=utf-8');

 

3. Khai báo định dạng file

Để khai báo định dạng file thì ta sử dụng cú pháp sau:

 

1
header("Content-type: text/javascript");

 

Bạn có thể thay đổi text/javascript thành text/css để khai báo đây là file CSS.

Nếu bạn muốn khi người dùng vào file đó thì sẽ download thay vì hiển thị thì hãy sử dụng thẻ header sau:

 

1
2
header("Content-type: application/force-download");
  header("Content-Disposition: attachment; filename=\"download.js\"");

 

Ngoài ra còn khá nhiều ví dụ và bạn có thể click vào link này để xem thêm.

4. Lời kết

Hàm header này tương đối đơn giản, cái khó chính là cấu trúc của chuỗi header phải khai báo chính xác nên bắt buộc ta phải nhớ cấu trúc của nó. Riêng cá nhân mình thì cũng ít khi nhớ lắm, khi nào cần thì lên Google tìm kiếm là ra ngay.

Theo:freetuts.net

 

The post Tìm hiểu hàm header trong PHP appeared first on Sửa Máy Nhanh.

]]>
https://suamaynhanh.vn/phan-mem/tim-hieu-ham-header-trong-php/feed/ 0
Xử lý ngày tháng trong PHP https://suamaynhanh.vn/phan-mem/xu-ly-ngay-thang-trong-php/ https://suamaynhanh.vn/phan-mem/xu-ly-ngay-thang-trong-php/#respond Thu, 27 Feb 2020 03:56:07 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=14773 Vấn đề xử lý ngày tháng cực kì quan trọng khi bạn xử lý với các bài viết và đăng lên …

The post Xử lý ngày tháng trong PHP appeared first on Sửa Máy Nhanh.

]]>
Vấn đề xử lý ngày tháng cực kì quan trọng khi bạn xử lý với các bài viết và đăng lên website. Ví dụ bạn cần in ra ngày tháng đăng bài viết hiển thị theo kiểu ngày / tháng / năm hoặc ngày – tháng -năm thì bắt buộc bạn phải biết cách sử dụng các hàm xử lý ngày tháng trong PHP thì mới làm được. Đó là vấn đề căn bản, vẫn còn nhiều vấn đề và tùy thuộc vào từng bài toán mà bạn sẽ có những hướng làm khác nhau.

Và trong bài này chúng ta cùng tìm hiểu một chút về cách xử lý ngày tháng trong PHP nhé.

1. Thiết lập time_zone tại Việt Nam

Để cấu hình thời gian đúng theo giờ Việt Nam thì bắt buộc ban phải thiết lập time zone cho nó. Để thiết lập time zone thì ta sử dụng cú pháp như sau:

 

1
date_default_timezone_set('Tên Time Zone');

 

Lệnh này sẽ ảnh hưởng tới tất cả các lệnh xử lý ngày tháng phía bên dưới nó nên để chắc chắn thì bạn nên để lệnh này ở đầu file của chương trình nhé. Ví dụ khi làm việc với Codeigniter Framework thì bạn nên để nó ở file index.php vì như vậy nó sẽ ảnh hưởng tới mọi controllers.

Để thiết lập time_zone ở Việt Nam thì bạn sử dụng lệnh sau:

 

1
date_default_timezone_set('Asia/Ho_Chi_Minh');

 

Để xem danh sách time zone thì bạn sử dụng đoạn code sau:

 

1
2
3
4
$timezone = DateTimeZone::listIdentifiers() ;
foreach ($timezone as $item){
    echo $item . '<br/>';
}

 

Chạy lên và bạn thử tìm từ khóa “Asia/Ho_Chi_Minh” thì nó sẽ có trong danh sách đó đấy 🙂

2. Định dạng ngày tháng với hàm date() trong PHP

Hàm date dùng để chuyển đổi thời gian theo format mà lập trình viên mong muốn, cú pháp như sau:

 

1
date ($format, $timestamp = 'time()')

 

Trong đó:

  • $format là định dạng mà hàm này sẽ trả về
  • $timestamp là thời gian truyền vào (kiểu INT), mặc định nó sẽ lấy thời gian hiện tại (chính là hàm time()).

Về danh sách các $format thì bạn hãy vào link này nhé, khá chi tiết và đầy đủ.

Sau đây mình sẽ liệt kê một số định dạng hay sử dụng nhất.

  • d: trả về ngày tháng (số)
  • D: trả về ngày của tháng (tiếng Anh)
  • m: trả về tháng của năm (số)
  • M: Trả về tháng của năm (tiếng Anh)
  • y: trả trả về năm (2 số cuối của năm)
  • Y: trả về năm đầy đủ 4 số
  • H: trả về số giờ (kiểu 24h)
  • h: trả về số giờ (kiểu 6h)
  • i: trả về số phút
  • s: trả về số giây
  • c: trả về thời gian kiểu ISO 8601, thường dùng tạo cho thẻ meta publish time trong SEO
  • .. Còn nữa nhưng bạn hãy vào link mình cung cấp ở trên để xem nhé.

Ví dụ: Lấy thời gian hiện tại theo định dạng ngày/tháng/năm – giờ:phút:giây

Chiếu theo các định dạng ở danh sách trên thì ta sẽ có chuỗi format như sau: d/m/Y - H:i:s

Vậy mã code PHP sẽ là:

 

1
echo date('d/m/Y - H:i:s');

 

Chạy lên tại thời điểm mình viết bài này sẽ có kết quả là: 07/05/2016 – 19:02:36.

3. Xử lý ngày tháng nâng cao trong PHP

Bây giờ chúng ta tìm hiểu một số cách xử lý nâng cao hay sử dụng nhất.

Truyền chuỗi vào định dạng format

Nếu bạn muốn truyền một chuỗi vào định dạng format thì tôi khuyên bạn nên đặt dấu / đằng trước mỗi ký tự, điều này sẽ giúp chuỗi không trùng với format key của PHP. Ví dụ bạn truyền vào format chuỗi “Bây giờ là H giờ” thì chữ i chính là số phút nên kết quả sẽ không như mong đợi.

 

1
echo date('Bây giờ là H giờ');

 

Chạy lên kết quả sẽ là: 840â16 710ờ Saturdayà 19 710ờ

Nhưng nếu sửa code lại như sau:

 

1
echo date('\B\â\y \g\i\ờ \l\à H \g\i\ờ');

 

Thì kết quả sẽ là: Bây giờ là 19 giờ

Chuyển đổi thời gian sang kiểu INT

Để chuyển đổi thời gian sang kiểu INT thì ta sử dụng hàm strtotime($time), ví dụ:

 

1
echo strtotime(date('Y-m-d H:i:s'));

 

Kết quả trong máy mình sẽ là:1462649606

Định dạng ngày tháng trong MySQL

Để lưu đúng định dạng ngày tháng trong MySQL thì bạn sử dụng format như sau:

 

1
date('Y-m-d H:i:s')

 

Nếu bạn muốn lưu trữ ngày tạo bài viết hoặc ngày comment hoặc ngày thực hiện một thao tác gì đó thì hãy sử dụng cú pháp đó nhé.

Xử lý cộng trừ ngày tháng với hàm mktime()

Hàm mktime sẽ tính toán đưa ra ngày chính xác bởi các tham số truyền vào, cú pháp như sau:

 

1
mktime ($hour, $minute, $second, $month, $day , $year);

 

Lưu ý: Hàm này sẽ trả về thời gian kiểu INT nên bạn phải sử dụng hàm date() để chuyển đổi ra định dạng mong muốn.

Ví dụ: Cho ngày 20/11/2016, hãy cộng thêm 12 ngày nữa để xem kết quả ra bao nhiêu.

 

1
2
$dateint = mktime(0, 0, 0, 11, (20 + 12), 2016);
echo date('d/m/Y', $dateint); // 02/12/2016

 

Bạn để ý nếu ngày 20 mà công thêm 12 ngày thì sẽ ra là ngày 32, lúc này tháng phải thăng lên 1 nên kết quả sẽ là: 02/12/2016

Ví dụ: Xem ngày mai, tháng tới, năm tới sẽ có ngày tháng năm bao nhiêu.

 

1
2
3
$tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
$nextyear  = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);

 

4. Lời kết

Nói về ngày tháng trong PHP thì có rất nhiều hàm và nhiều cách viết khác nhau, vì vậy nội dung trong bài mình không thể trình bày hết được nên nếu trong quá trình học và lập trình bạn hãy sử dụng Google để tra cứu thêm thông tin nhé. Hy vọng qua bài tìm hiểu cách xử lý ngày tháng trong PHP này sẽ giúp được phần nào cho các bạn.

Theo:freetuts.net

 

The post Xử lý ngày tháng trong PHP appeared first on Sửa Máy Nhanh.

]]>
https://suamaynhanh.vn/phan-mem/xu-ly-ngay-thang-trong-php/feed/ 0
Lệnh require – require_once – include – include_once trong PHP https://suamaynhanh.vn/phan-mem/lenh-require-require_once-include-include_once-trong-php/ https://suamaynhanh.vn/phan-mem/lenh-require-require_once-include-include_once-trong-php/#respond Thu, 27 Feb 2020 03:53:57 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=14771 Để xây dựng một trang web bằng PHP thì đòi hỏi ban phải sử dụng rất nhiều mã code khác nhau …

The post Lệnh require – require_once – include – include_once trong PHP appeared first on Sửa Máy Nhanh.

]]>
Để xây dựng một trang web bằng PHP thì đòi hỏi ban phải sử dụng rất nhiều mã code khác nhau và có thể lên đến hàng trăm hàng ngàn line, vì vậy nếu chúng ta chỉ code nó trong một file PHP duy nhất thì rất là tệ hại bởi rất khó để nâng cấp và bảo trì chúng. Với nhược điểm này hầu hết các ngôn ngữ lập trình cho phép chúng ta phân chia mã code thành nhiều file khác nhau  và muốn dùng file nào thì chỉ việc khai báo là được. Với C++ hay C# thì chúng ta có lệnh #include dùng để import các thư viện vào một file và sử dụng, vậy trong PHP cũng có một lệnh tương tự đó là lệnh requirerequire_onceinclude và include_once.

Trong bài này mình sẽ hướng dẫn các bạn cách sử dụng và phân biệt khi nào thì nên sử dụng từng lệnh cụ thể nhé.

Trước tiên bạn tạo cho tôi 2 file đó là file index.php và file import.php nhé.

1. Lệnh require – require_once – include – include_once

Lệnh requirerequire_onceinclude và include_once dùng để import một file PHP A vào một file PHP B với mục đích giúp file PHP B có thể sử dụng được các thư viện trong file PHP A.

Ví dụ bạn đang xây dựng một ứng dụng quản lý sinh viên, lúc này bạn cần một số hàm kết nối và xử lý dữ liệu cho sinh viên thì bạn sẽ đặt nó trong một file student.php riêng và bất kì một file khác muốn sử dụng thì chỉ cần import file student.php đó vào.

Về cú pháp thì cả bốn lệnh đều có chung cú pháp như sau:

 

1
2
3
4
require "/path.php";
require_once "/path.php";
include "/path.php";
include_once "/path.php";

 

Trong đó path.php là đường dẫn tuyệt đối nhé các bạn, nghĩa là path là một đường dẫn trên Server chứ không phải trên trình duyệt browser (nghĩa là đường dẫn tương đối).

Bây giờ chúng ta cùng tìm hiểu cụ thể hơn về cách sử dụng nhé.

Lệnh require:

Dùng để import một file PHP khác vào file hiện tại, lúc này file hiện tại có thể sử dụng mọi tài nguyên của file import đó.

Ví dụ: Bạn mở file import.php lên và nhập vào nội dung sau.

 

1
2
3
4
function show_message()
{
    echo 'Đây là hàm show_message trong file import.php';
}

 

Tiếp theo bạn vào file index.php nhập nội dung sau:

 

1
2
3
4
5
// Import file import.php
require "/import.php";
// Sử dụng hàm show_message trong file import.php
show_message();

 

Chạy file index.php lên bạn sẽ thấy nó xuất ra câu thông báo “Đây là hàm show_message trong file import.php“.

Nếu bạn cố ý require hai lần cùng một file thì lập tức sẽ bị thông báo lỗi vì hàm show_message() đã được định nghĩa. Lý do là khi ta require hai lần thì lần thứ hai đã bị đụng tên hàm. Bây giờ bạn thay đổi nội dung file index.php như sau:

 

1
2
3
4
5
6
// Import file import.php
require "require.php";
require "require.php";
// Sử dụng hàm show_message trong file import.php
show_message();

 

Lập tức sẽ bị thông báo lỗi như hình dưới đây.

Lệnh require_once:

Lệnh này có chức năng chẳng khác gì lệnh require, tuy nhiên điểm khác biệt đó là lệnh require_once chỉ import đúng một lần, nghĩa là khi bạn sử dụng hai lệnh require_once cùng một file thì ở lệnh require_once thứ hai nó sẽ thấy là đã xử lý rồi nên nó sẽ không thực thi nữa.

Ví dụ: Bạn thay đổi nội dung file index.php như sau

 

 

1
2
3
4
5
6
// Import file import.php
require_once "/import.php";
require_once "/import.php";
// Sử dụng hàm show_message trong file import.php
show_message();

 

Chạy lên chương trình vẫn hoạt động bình thường.

Lệnh include:

Công dụng và tính chất giống như lênh require.

Ví dụ:

 

1
2
3
4
5
// Import file import.php
include "/import.php";
// Sử dụng hàm show_message trong file import.php
show_message();

 

Tương tự như require. Tuy nhiên nếu bạn cố ý include hai lần thì sẽ KHÔNG xuất hiện lỗi mà đó chỉ là một cảnh báo, đây chính là sự khác nhau giữa hai lệnh này.

Lệnh include_once:

Công dụng và tính chất giống với lệnh require_once.

Ví dụ:

 

1
2
3
4
5
// Import file import.php
include_once "/import.php";
// Sử dụng hàm show_message trong file import.php
show_message();

 

2. Sự khác nhau giữa require và include

Chúng ta sẽ nói về sự khác nhau giữa require và include, require_once và include_once luôn. Tuy nhiên mình sẽ giải thích cặp đầu tiên đó là require và include thôi, cặp còn lại sẽ tương tự nhé các bạn.

Giống nhau giữa require và include:

Cả hai lệnh đều có nhiệm vụ import một file PHP vào một file PHP khác.

Khác nhau giữa require và include:

Nếu khi import một file bằng lệnh require thì nếu chương trình bị lỗi thì lập tức trình biên dịch sẽ dừng và xuất ra thông báo lỗi. Còn nếu sử dụng lệnh include thì đó chỉ là một cảnh báo nên chương trình vẫn chạy cho đến cuối chương trình.

3. Lời kết

Qua bài này mình đã giới thiệu cách sử dụng các lệnh require, require_once, include và include_once trong PHP, đồng thời mình cũng nói sự khác nhau giữa các cặp require và include trong PHP. Hy vọng qua bài này bạn sẽ hiểu rõ hơn những cặp lệnh dùng để chèn file trong PHP.

Theo:freetuts.net

 

 

 

The post Lệnh require – require_once – include – include_once trong PHP appeared first on Sửa Máy Nhanh.

]]>
https://suamaynhanh.vn/phan-mem/lenh-require-require_once-include-include_once-trong-php/feed/ 0
Đường dẫn tương đối và đường dẫn tuyệt đối trong PHP https://suamaynhanh.vn/phan-mem/duong-dan-tuong-doi-va-duong-dan-tuyet-doi-trong-php/ https://suamaynhanh.vn/phan-mem/duong-dan-tuong-doi-va-duong-dan-tuyet-doi-trong-php/#comments Thu, 27 Feb 2020 03:45:02 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=14772 Khi làm việc với cấu trúc folder thì chúng ta có hai khái niệm đó là đường dẫn tương đối và …

The post Đường dẫn tương đối và đường dẫn tuyệt đối trong PHP appeared first on Sửa Máy Nhanh.

]]>
Khi làm việc với cấu trúc folder thì chúng ta có hai khái niệm đó là đường dẫn tương đối và đường dẫn tuyệt đối. Và trong lập trình web PHP cũng vậy, bạn sẽ phải hiểu rõ hai khía niệm này thì lỡ khi đi phỏng vấn người ta có hỏi thì biết đường trả lời nhé.

# Đường dẫn tương đối là gì?

Đường dẫn tương đối là đường dẫn có điểm xuất phát từ thư mục hiện tại đang đứng. Ví dụ bạn đang ở folder public và bạn muốn trỏ tới một file tên là index.php nằm trong thư mục public thì lúc này đường dẫn chúng ta sẽ là /index.php.

Để di chuyển lùi một folder trong đường dẫn tương đối thì ta sử dụng ký tự ../.

Ví dụ: Cho cấu trúc folder như sau

Giả sử ta đang ở file cate.php nằm trong thư mục course. Bây giờ muốn truy xuất qua file post.php nằm trong thư mục blog thì lúc này đường dẫn tương đối sẽ là:

1
../blog/post.php

Còn truy xuất file post.php nằm trong thư mục course sẽ cùng cấp nên đường dẫn lúc này là:

1
/post.php

Khi các bạn sử dụng PHP để đọc hay viết file thì phải sử dụng đường dẫn tương đối nhé.

# Đường dẫn tuyệt đối là gì?

Đường dẫn tuyệt đối là đường dẫn có đầu đủ cấu trúc của URL  của một website.

Ví dụ: Các đường dẫn tuyệt đối sau

  • https://freetuts.net
  • https://freetuts.net/hoc-php

Tương tự với đường dẫn tương đối bạn muốn trở về một folder thì hãy sử dụng ký tự ../.

Ví dụhttps://freetuts.net/public/../demo sẽ tương đương với https://freetuts.net/demo

Thông thường khi chúng ta lấy nội dung từ một website khác thì sẽ sử dụng đường dẫn tuyệt đối bởi vì code PHP không có quyền truy cập trực tiếp một file ở Server khác.

Theo:freetuts.net

 

The post Đường dẫn tương đối và đường dẫn tuyệt đối trong PHP appeared first on Sửa Máy Nhanh.

]]>
https://suamaynhanh.vn/phan-mem/duong-dan-tuong-doi-va-duong-dan-tuyet-doi-trong-php/feed/ 1
Hàm isset() và empty() trong php https://suamaynhanh.vn/phan-mem/ham-isset-va-empty-trong-php/ https://suamaynhanh.vn/phan-mem/ham-isset-va-empty-trong-php/#respond Thu, 27 Feb 2020 03:40:46 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=14769 Hàm isset() trong PHP mình cũng đã sử dụng khá nhiều lần trong series này rồi nhưng vẫn có một số bạn …

The post Hàm isset() và empty() trong php appeared first on Sửa Máy Nhanh.

]]>
Hàm isset() trong PHP mình cũng đã sử dụng khá nhiều lần trong series này rồi nhưng vẫn có một số bạn mail hỏi sự khác nhau giữa hàm isset() và hàm empty() trong PHP như thế nào?, khi nào thì sử dụng hàm isset() và khi nào thì sử dụng hàm empty()? Nên trong bài này mình sẽ giới thiệu hai hàm này và hướng dẫn cách sử dụng nó, cũng như là sự khác nhau của nó.

1. Hàm isset trong PHP

Hàm isset() được dùng để kiểm tra một biến nào đó đã được khởi tạo trong bộ nhớ của máy tính hay chưa, nếu nó đã khởi tạo (tồn tại) thì sẽ trả về TRUE và ngược lại sẽ trả về FALSE.

Ví dụ: Kiểm tra biến $domain có tồn tại hay không

 

1
2
3
4
5
6
if (isset($domain)){
    echo 'Biến domain đã tồn tại';
}
else{
    echo 'Biến domain chưa tồn tại';
}

 

Vậy khi nào thì sử dụng hàm isset()?

Như bạn biết nếu trong quá trình biên dịch nếu trong code có sử dụng một biến không tồn tại thì trình biên dịch sẽ ngưng xử lý và thông báo lỗi ngay, chính vì vậy thông thường những trường hợp mà ta không chắc chắn là biến đó luôn tồn tại thì trước khi sử dụng hãy kiểm tra nó.

Ví dụ: Lấy thông tin đăng ký từ form

Đây là ví dụ thông dụng nhất mà có lẽ nhiều ban newbie vẫn mắc phải. Thông thường khi lấy thông tin từ FORM (xem bài post và get trong php) thì bạn nên kiểm tra nó có tồn tại không rồi hãy lấy, nếu không người dùng sẽ sử dụng firebug đổi một số name của các thẻ input thì chương trình sẽ lỗi ngay.

 

1
2
3
4
5
6
7
if (isset($_POST['submit']))
{
    $fullname = isset($_POST['fullname']) ? $_POST['fullname'] : '';
    $address = isset($_POST['address']) ? $_POST['address'] : '';
    $email = isset($_POST['email']) ? $_POST['email'] : '';
    $phone = isset($_POST['phone']) ? $_POST['phone'] : '';
}

 

Ví dụ: Lấy trang hiện tại trên URL dùng để phân trang

Trong thuật toán phân trang chúng ta lấy page trên URL để xác định record hiển thị cho trang đó. Chính vì page nằm trên URL nên rất nguy hiểm nếu như chúng ta lấy mà không kiểm tra nó tồn tại hay không vì nếu người dùng chỉ cần bỏ cái page=x đó đi thì chương trình sẽ bị lỗi ngay.

 

1
$current_page = isset($_GET['page']) ? $_GET['page'] : '1';

 

Ví dụ: Thực hiện nối chuỗi trong khi biến $domain chưa chắc chắn là tồn tại

 

1
2
3
4
5
6
7
8
9
// Mệnh đề if này không được thực hiện
// => biến $sologan ko tồn tại
$website = 'freetuts.net';
if ($website != 'freetuts.net'){
    $sologan = 'Đây không phải là website freetuts.net';
}
 
// Nên đoạn code này sai
$sologan .= ' vui lòng ghi rõ nguồn khi public nội dung này ở website khác';

 

Rõ ràng đoạn code này chạy sẽ bị lỗi ngay bởi vì biến $sologan sẽ không tồn tại vì câu lệnh bên trong mệnh đề if không được chạy.

Trên là những ví dụ thông thường hay xảy ra trong thực tế nên vẫn còn khá nhiều trường hợp bạn nên sử dụng hàm isset() trong php.

2. Hàm empty() trong PHP

Hàm empty() trong php dùng để kiểm tra một biến nào đó có giá trị rỗng hoặc chưa được khởi tạo hay không.

Giả sử ta có biến $var và giá trị của nó sẽ là rỗng nếu nó nằm một trong các trường hợp sau:

  • $var = 0 hoặc $var = '0'
  • $var = NULL
  • $var = '';
  • $var = FALSE
  • $var không tồn tại

Như vậy có 6 trường hợp hàm empty() sẽ đúng. Tuy nhiên trường hợp cuối cùng là $var không tồn tại là hơi đặc biệt một chút, vấn đề này rất giống với hàmisset() đúng không nào.

Ví dụ: Ví dụ các trường hợp trên

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$var = '0';
var_dump(empty($var));
$var = 0;
var_dump(empty($var));
$var = '';
var_dump(empty($var));
$var = FALSE;
var_dump(empty($var));
$var = NULL;
var_dump(empty($var));
var_dump(empty($bien_khong_ton_tai));

 

Trong đó ở ví dụ thứ 6 biến $bien_khong_ton_tai chưa được khởi tạo nhưng vẫn không bị lỗi và khi sử dụng nó trong hàm empty() thì sẽ trả về TRUE.

Vậy khi nào nên sử dụng hàm empty()?

Thông thường chúng ta sử dụng hàm empty() để validate dữ liệu bởi vì nó có thêm chức năng của hàm isset() nên sẽ không bao giờ xuất hiện lỗi.

Vi dụ: kiểm tra dữ liệu khi người dùng đăng nhập

 

1
2
3
if (empty($_POST['username'])){
    echo 'Bạn chưa nhập tên đăng nhập';
}

 

Nếu sử dụng hàm isset() thì ta sẽ làm như sau:

 

1
2
3
4
5
6
7
8
9
$username = isset($_POST['username']) ? $_POST['username'] : '';
$password = isset($_POST['password']) ? $_POST['password'] : '';
if ($username == '') {
    echo 'Bạn chưa nhập tên đăng nhập';
}
if ($password == '') {
    echo 'Bạn chưa nhập mật khẩu';
}

 

Rõ ràng nếu ta dùng hàm empty() thì nhìn code gọn hơn phải không nào.

3. Lời kết

Trong bài này mình đã giới thiệu hai hàm thường dùng để validate dữ liệu đó là hàm isset() và hàm empty() trong php, mỗi hàm mình có liệt kê cách sử dụng nên từ đó bạn có thể suy ra khi nào nên sử dụng isset() và khi nào nên sử dụng empty().

Và có một điểm mình muốn nhấn mạnh khi sử dụng hàm empty() đó là hàm này sẽ trả về TRUE nếu biến kiểm tra không tồn tại, điều này rất giống với hàm isset() nên ta có thể nói hàm empty() có luôn chức năng của hàm isset().

Theo: freetuts.net

 

 

 

The post Hàm isset() và empty() trong php appeared first on Sửa Máy Nhanh.

]]>
https://suamaynhanh.vn/phan-mem/ham-isset-va-empty-trong-php/feed/ 0
Tìm hiểu thuật toán phân trang trong php https://suamaynhanh.vn/phan-mem/tim-hieu-thuat-toan-phan-trang-trong-php/ https://suamaynhanh.vn/phan-mem/tim-hieu-thuat-toan-phan-trang-trong-php/#respond Thu, 27 Feb 2020 03:37:03 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=14770 1. Giới thiệu thuật toán phân trang Vì là văn viết nên việc diễn giải thuật toán sẽ gặp khó khăn …

The post Tìm hiểu thuật toán phân trang trong php appeared first on Sửa Máy Nhanh.

]]>
1. Giới thiệu thuật toán phân trang

Vì là văn viết nên việc diễn giải thuật toán sẽ gặp khó khăn rất nhiều để người đọc có thể hiểu được, nên trong bài này nếu bạn không hiểu thì có thể tham khảo một số video trên youtube, có rất nhiều video cho bạn lựa chọn.

Thuật toán phân trang thực chất nó cũng giống như việc bạn chia kẹo ở lớp một vậy, giả sử tôi có 100 cái kẹo, bây giờ tôi muốn mỗi bạn nhận 5 cái kẹo, hỏi có bao nhiêu bạn sẽ nhận được? Đơn giản phải không nào, ta lấy 100/5 = 20 bạn. Và trước khi đi vào vấn đề tôi xin đưa ra 3 bài toán như sau:

Bài toán 1: Giả sử trong CSDL của tôi có 1000 sản phẩm, bây giờ tôi muốn chia ra mỗi kho sẽ chứa 50 sản phẩm. Hỏi cần bao nhiêu kho chứa? Câu trả lời cũng đơn giản, 1000/50 = 20 kho chứa. Trong bài toán này số nhà kho cần để chứa hết sản phẩm chính là số trang mà ta tính được, 1000 sản phẩm chính là tổng số record trong CSDL, 50 chính là giới hạn một trang sẽ hiển thị bao nhiêu record.

Bài toán 2. Giả sử CSDL có 1990 sản phẩm,  bây giờ tôi muốn chia mỗi kho chứa 50 sản phẩm. Hỏi bao cần bao nhiêu kho chứa? Ta thấy nếu lấy 1990/50 = 19 (nếu làm tròn). nhưng nếu cần 19 kho thôi thì 40 sản phẩm bị dư đó đặt ở đâu? À đơn giản ta phải lấy thêm 1 kho nữa để chứa nó, vậy ta có tổng cộng 20 kho. Trong bài toán này giải thích cũng giống như bài toán 1, nhưng có một điều khác là trường hợp tổng số record khi chia cho các trang sẽ dư một vài record, như thế ta bắt buộc phải kiếm thêm một kho nữa để chứa.

Bài toán 3: Tiếp tục bài toán 1, giả sử mỗi sản phẩm sẽ được đánh dấu từ 1 -> 1000, và được cất vào kho theo thứ tự tăng dần. Bây giờ tôi muốn các bạn tìm xem ở kho thứ 5 được bắt đầu từ sản phẩm thứ mấy? Và kết thúc ở sản phẩm thứ mấy? để giải bài này ta phải tính toán một chút. Ta thấy mỗi kho sẽ chứa 50 sản phẩm và:

  • Kho thứ nhất bắt đầu từ 1 -> 50
  • Kho thứ hai bắt đầu từ 51 -> 100
  • Kho thứ ba bắt đầu từ 101 -> 150
  • Kho thứ tư bắt đầu từ 151 -> 200
  • Kho thứ năm bắt đầu từ 201 -> 250

Quá đơn giản :D. Bây giờ tôi muốn tìm ở kho thứ 15 bắt đầu từ số nào và kết thúc ở số nào ? Hì hì hơi căng, các bạn rãnh tính đi chứ tôi hơi bận :D. Nhưng bạn có nhận thấy rằng có một quy luật nào đó không? Tôi thì nhận thấy rằng ta có một quy luật để tính như sau:

product_start = ((kho_hien_tai - 1) * so_san_pham_trong_mot_kho) + 1. Không tin bạn tính nhé

  • Tính kho thứ 5: product_start = (5-1)*50 + 1 = 201
  • Tính kho thứ 10: product_start = (10-1)*50 + 1 = 451

Với bài toán 3 này liên hệ trong thuật toán phân trang như thế nào? Như bạn biết trong câu lệnh select sẽ có hai tham số là limit và start, limit chính là số record trên một trang và start chính là số thứ tự record bắt đầu, liên hệ với bài toán 3 thì chính là số thứ tự của sản phẩm ở kho thứ x.

Nhưng trong MYSQL thì số record sẽ được tính bắt đầu từ số 0 nên với công thức tính trên ta viết lại như sau:

product_start = ((kho_hien_tai - 1) * so_san_pham_trong_mot_kho) + 1.

Kết luận: Các bước phân trang như sau:

  • Bước 1: Tính tổng số record trong CSDL
  • Bước 2: Xác định số record trên một trang
  • Bước 3: Tính tổng số trang dưa vào tổng số record và số record trên một trang
  • Bước 4: Sau khi có tổng số record thì in ra trình duyệt

2. Thuật toán phân trang đơn giản

Để cho các bạn dễ hình dung tôi sẽ viết một lớp phân trang đơn giản có sử dụng OOP. Các bạn tạo file index.php và điền nội dung này vào:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
class Pagination
{
    protected $_config = array(
        'current_page'  => 1, // Trang hiện tại
        'total_record'  => 1, // Tổng số record
        'total_page'    => 1, // Tổng số trang
        'limit'         => 10,// limit
        'start'         => 0, // start
        'link_full'     => '',// Link full có dạng như sau: domain/com/page/{page}
        'link_first'    => '',// Link trang đầu tiên
    );
    
    /*
     * Hàm khởi tạo ban đầu để sử dụng phân trang
     */
    function init($config = array())
    {
        /*
         * Lặp qua từng phần tử config truyền vào và gán vào config của đối tượng
         * trước khi gán vào thì phải kiểm tra thông số config truyền vào có nằm
         * trong hệ thống config không, nếu có thì mới gán
         */
        foreach ($config as $key => $val){
            if (isset($this->_config[$key])){
                $this->_config[$key] = $val;
            }
        }
        
        /*
         * Kiểm tra thông số limit truyền vào có nhỏ hơn 0 hay không?
         * Nếu nhỏ hơn thì gán cho limit = 0, vì trong mysql không cho limit bé hơn 0
         */
        if ($this->_config['limit'] < 0){
            $this->_config['limit'] = 0;
        }
        
        /*
         * Tính total page, công tức tính tổng số trang như sau:
         * total_page = ciel(total_record/limit).
         * Tại sao lại như vậy? Đây là công thức tính trung bình thôi, ví
         * dụ tôi có 1000 record và tôi muốn mỗi trang là 100 record thì
         * đương nhiên sẽ lấy 1000/100 = 10 trang đúng không nào 😀
         */
        $this->_config['total_page'] = ceil($this->_config['total_record'] / $this->_config['limit']);
        
        /*
         * Sau khi có tổng số trang ta kiểm tra xem nó có nhỏ hơn 0 hay không
         * nếu nhỏ hơn 0 thì gán nó băng 1 ngay. Vì mặc định tổng số trang luôn bằng 1
         */
        if (!$this->_config['total_page']){
            $this->_config['total_page'] = 1;
        }
        
        /*
         * Trang hiện tại sẽ rơi vào một trong các trường hợp sau:
         *  - Nếu người dùng truyền vào số trang nhỏ hơn 1 thì ta sẽ gán nó = 1
         *  - Nếu trang hiện tại người dùng truyền vào lớn hơn tổng số trang
         *    thì ta gán nó bằng tổng số trang
         * Đây là vấn đề giúp web chạy trơn tru hơn, vì đôi khi người dùng cố ý
         * thay đổi tham số trên url nhằm kiểm tra lỗi web của chúng ta
         */
        if ($this->_config['current_page'] < 1){
            $this->_config['current_page'] = 1;
        }
        
        if ($this->_config['current_page'] > $this->_config['total_page']){
            $this->_config['current_page'] = $this->_config['total_page'];
        }
        
        /*
         * Tính start, Như bạn biết trong mysql truy vấn sẽ có limit và start
         * Muốn tính start ta phải dựa vào số trang hiện tại và số limit trên mỗi trang
         * và áp dụng công tức start = (current_page - 1)*limit
        */
        $this->_config['start'] = ($this->_config['current_page'] - 1) * $this->_config['limit'];
    }
    
    /*
     * Hàm lấy link theo trang
     */
    private function __link($page)
    {
        // Nếu trang < 1 thì ta sẽ lấy link first
        if ($page <= 1 && $this->_config['link_first']){
            return $this->_config['link_first'];
        }
        // Ngược lại ta lấy link_full
        // Như tôi comment ở trên, link full có dạng domain.com/page/{page}.
        // Trong đó {page} là nơi bạn muốn số trang sẽ thay thế vào
        return str_replace('{page}', $page, $this->_config['link_full']);
    }
    
    /*
     * Hàm lấy mã html
     * Hàm này ban tạo giống theo giao diện của bạn
     * tôi không có config nhiều vì rất rối
     * Bạn thay đổi theo giao diện của bạn nhé
     */
    function html()
    {  
        $p = '';
        // Kiểm tra tổng số trang lớn hơn 1 mới phân trang
        if ($this->_config['total_record'] > $this->_config['limit'])
        {
            $p = '<ul>';
            
            // Nút prev và first
            if ($this->_config['current_page'] > 1)
            {
                $p .= '<li><a href="'.$this->__link('1').'">First</a></li>';
                $p .= '<li><a href="'.$this->__link($this->_config['current_page']-1).'">Prev</a></li>';
            }
            
            // lặp trong khoảng cách giữa min và max để hiển thị các nút
            for ($i = 1; $i <= $this->_config['total_page']; $i++)
            {
                // Trang hiện tại
                if ($this->_config['current_page'] == $i){
                    $p .= '<li><span>'.$i.'</span></li>';
                }
                else{
                    $p .= '<li><a href="'.$this->__link($i).'">'.$i.'</a></li>';
                }
            }
            // Nút last và next
            if ($this->_config['current_page'] < $this->_config['total_page'])
            {
                $p .= '<li><a href="'.$this->__link($this->_config['current_page'] + 1).'">Next</a></li>';
                $p .= '<li><a href="'.$this->__link($this->_config['total_page']).'">Last</a></li>';
            }
            
            $p .= '</ul>';
        }
        return $p;
    }
}

Qua phần comment tôi có giải thích rồi. Và các bạn lưu ý ở 4 bước trên tôi có tính một số đoạn code giúp hệ thống chạy đúng an toàn và bảo mật hơn.

Cách sử dụng:

1
2
3
4
5
6
7
8
9
10
11
12
13
$config = array(
    'current_page'  => isset($_GET['page']) ? $_GET['page'] : 1, // Trang hiện tại
    'total_record'  => 1900, // Tổng số record
    'limit'         => 10,// limit
    'link_full'     => 'index.php?page={page}',// Link full có dạng như sau: domain/com/page/{page}
    'link_first'    => 'index.php',// Link trang đầu tiên
);
$paging = new Pagination();
$paging->init($config);
echo $paging->html();

Và đây là tổng hợp code cho bài này:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<?php
class Pagination
{
    protected $_config = array(
        'current_page'  => 1, // Trang hiện tại
        'total_record'  => 1, // Tổng số record
        'total_page'    => 1, // Tổng số trang
        'limit'         => 10,// limit
        'start'         => 0, // start
        'link_full'     => '',// Link full có dạng như sau: domain/com/page/{page}
        'link_first'    => '',// Link trang đầu tiên
    );
    
    /*
     * Hàm khởi tạo ban đầu để sử dụng phân trang
     */
    function init($config = array())
    {
        /*
         * Lặp qua từng phần tử config truyền vào và gán vào config của đối tượng
         * trước khi gán vào thì phải kiểm tra thông số config truyền vào có nằm
         * trong hệ thống config không, nếu có thì mới gán
         */
        foreach ($config as $key => $val){
            if (isset($this->_config[$key])){
                $this->_config[$key] = $val;
            }
        }
        
        /*
         * Kiểm tra thông số limit truyền vào có nhỏ hơn 0 hay không?
         * Nếu nhỏ hơn thì gán cho limit = 0, vì trong mysql không cho limit bé hơn 0
         */
        if ($this->_config['limit'] < 0){
            $this->_config['limit'] = 0;
        }
        
        /*
         * Tính total page, công tức tính tổng số trang như sau:
         * total_page = ciel(total_record/limit).
         * Tại sao lại như vậy? Đây là công thức tính trung bình thôi, ví
         * dụ tôi có 1000 record và tôi muốn mỗi trang là 100 record thì
         * đương nhiên sẽ lấy 1000/100 = 10 trang đúng không nào 😀
         */
        $this->_config['total_page'] = ceil($this->_config['total_record'] / $this->_config['limit']);
        
        /*
         * Sau khi có tổng số trang ta kiểm tra xem nó có nhỏ hơn 0 hay không
         * nếu nhỏ hơn 0 thì gán nó băng 1 ngay. Vì mặc định tổng số trang luôn bằng 1
         */
        if (!$this->_config['total_page']){
            $this->_config['total_page'] = 1;
        }
        
        /*
         * Trang hiện tại sẽ rơi vào một trong các trường hợp sau:
         *  - Nếu người dùng truyền vào số trang nhỏ hơn 1 thì ta sẽ gán nó = 1
         *  - Nếu trang hiện tại người dùng truyền vào lớn hơn tổng số trang
         *    thì ta gán nó bằng tổng số trang
         * Đây là vấn đề giúp web chạy trơn tru hơn, vì đôi khi người dùng cố ý
         * thay đổi tham số trên url nhằm kiểm tra lỗi web của chúng ta
         */
        if ($this->_config['current_page'] < 1){
            $this->_config['current_page'] = 1;
        }
        
        if ($this->_config['current_page'] > $this->_config['total_page']){
            $this->_config['current_page'] = $this->_config['total_page'];
        }
        
        /*
         * Tính start, Như bạn biết trong mysql truy vấn sẽ có limit và start
         * Muốn tính start ta phải dựa vào số trang hiện tại và số limit trên mỗi trang
         * và áp dụng công tức start = (current_page - 1)*limit
        */
        $this->_config['start'] = ($this->_config['current_page'] - 1) * $this->_config['limit'];
    }
    
    /*
     * Hàm lấy link theo trang
     */
    private function __link($page)
    {
        // Nếu trang < 1 thì ta sẽ lấy link first
        if ($page <= 1 && $this->_config['link_first']){
            return $this->_config['link_first'];
        }
        // Ngược lại ta lấy link_full
        // Như tôi comment ở trên, link full có dạng domain.com/page/{page}.
        // Trong đó {page} là nơi bạn muốn số trang sẽ thay thế vào
        return str_replace('{page}', $page, $this->_config['link_full']);
    }
    
    /*
     * Hàm lấy mã html
     * Hàm này ban tạo giống theo giao diện của bạn
     * tôi không có config nhiều vì rất rối
     * Bạn thay đổi theo giao diện của bạn nhé
     */
    function html()
    {  
        $p = '';
        // Kiểm tra tổng số trang lớn hơn 1 mới phân trang
        if ($this->_config['total_record'] > $this->_config['limit'])
        {
            $p = '<ul>';
            
            // Nút prev và first
            if ($this->_config['current_page'] > 1)
            {
                $p .= '<li><a href="'.$this->__link('1').'">First</a></li>';
                $p .= '<li><a href="'.$this->__link($this->_config['current_page']-1).'">Prev</a></li>';
            }
            
            // lặp trong khoảng cách giữa min và max để hiển thị các nút
            for ($i = 1; $i <= $this->_config['total_page']; $i++)
            {
                // Trang hiện tại
                if ($this->_config['current_page'] == $i){
                    $p .= '<li><span>'.$i.'</span></li>';
                }
                else{
                    $p .= '<li><a href="'.$this->__link($i).'">'.$i.'</a></li>';
                }
            }
            // Nút last và next
            if ($this->_config['current_page'] < $this->_config['total_page'])
            {
                $p .= '<li><a href="'.$this->__link($this->_config['current_page'] + 1).'">Next</a></li>';
                $p .= '<li><a href="'.$this->__link($this->_config['total_page']).'">Last</a></li>';
            }
            
            $p .= '</ul>';
        }
        return $p;
    }
}
$config = array(
    'current_page'  => isset($_GET['page']) ? $_GET['page'] : 1, // Trang hiện tại
    'total_record'  => 1900, // Tổng số record
    'limit'         => 10,// limit
    'link_full'     => 'index.php?page={page}',// Link full có dạng như sau: domain/com/page/{page}
    'link_first'    => 'index.php',// Link trang đầu tiên
);
$paging = new Pagination();
$paging->init($config);
echo $paging->html();
?>
<style>
    li{float:left; margin: 3px; border: solid 1px gray;}
    a{padding: 5px;}
    span{display:inline-block; padding: 0px 3px; background: blue; color:white }
</style>

3. Lời kết

Ở phần 2 tôi cũng không nói nhiều vì qua những đoạn code tôi đã có comment rõ ràng rồi. Sẽ hơi khó với những bạn chưa rành với thuật toán phân trang này.

Theo:freetuts.net

 

 

The post Tìm hiểu thuật toán phân trang trong php appeared first on Sửa Máy Nhanh.

]]>
https://suamaynhanh.vn/phan-mem/tim-hieu-thuat-toan-phan-trang-trong-php/feed/ 0
Session và cookie trong php https://suamaynhanh.vn/phan-mem/session-va-cookie-trong-php/ https://suamaynhanh.vn/phan-mem/session-va-cookie-trong-php/#respond Thu, 27 Feb 2020 03:31:27 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=14768 Session và Cookie dùng để lưu trữ dữ liệu tạm thời và từ đó hệ thống có thể đưa ra những …

The post Session và cookie trong php appeared first on Sửa Máy Nhanh.

]]>
Session và Cookie dùng để lưu trữ dữ liệu tạm thời và từ đó hệ thống có thể đưa ra những quyết định về quyền hạn hoặc là những tùy chọn riêng tư. Cả hai tuy có chung chức năng là lưu trữ dữ liệu nhưng bên trong nó lại khác nhau. Session dùng để lưu trữ dữ liệu trên Server và đồng thời nó sẽ có một đoạn code dữ liệu được lưu trữ ở client (cookie). Còn Cookie thì lưu trữ dữ liệu trên máy Client. Để hiểu rõ hơn thì ta phải vào tìm hiểu cụ thể.

1. Session trong PHP

Biến Session trong PHP được dùng để lưu trữ thông tin của người dùng hoặc là lưu trữ tùy chọn cấu hình hệ thống cho người dùng. Đặc biệt mỗi client sẽ có một ID session khác nhau nên việc thông tin Session ở Client A bị ảnh hưởng qua Client B là điều không thể. Thông thường chúng ta sử dụng Session để lưu thông tin đăng nhập, giỏ hàng hoặc những dữ liệu mang tính chất tạm thời và mỗi client sẽ có dữ liệu khác nhau.

Đăng ký session

Trước khi bạn sử dụng session bạn phải khai báo cho PHP biết bằng cách đặt dòng lệnh session_start() phía trên đầu mỗi file. Nếu bạn dùng nhiều file include lẫn nhau thì đặt nó ở file chính.

Ví dụ:

 

1
2
3
4
5
6
7
8
9
10
11
12
<?php session_start(); ?>
 
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <div>TODO write content</div>
    </body>
</html>

 

Dòng lệnh session_start() sẽ đăng ký phiên làm việc của người dùng trên Server, từ đó Server sẽ tạo ra một ID riêng không trùng lặp để nhận diện cho client hiện tại. Dòng này bắt buộc có.

Lưu trữ session

Tất cả Session được lưu trữ trong biến toàn cục $_SESSION, vì thể để lưu thêm dữ liệu Session hay là thay đổi dữ liệu của Session thì ta sẽ thao tác trên biến đó. Lưu ý với bạn trước khi dùng phép lấy giá trị Session bạn phải kiểm tra sesion đó có tồn tại không rồi hãy lấy.

Để lưu một giá trị mới vào Session ta dùng cú pháp như sau: $_SESSION['session_name'] = $session_value

Để lấy giá trị Session ta dùng cú pháp sau: $tenbien = $_SESSION['session_name']. Như tôi đề cập ở trên trước khi bạn lấy giá trị Session bạn nên kiểm tra nó có tồn tại không rồi hãy lấy.

Ví dụ:

Bạn tạo một file session.php và copy nội dung này vào:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php session_start();
// Nếu click vào nút Lưu Session
if (isset($_POST['save-session']))
{
    // Lưu Session
    $_SESSION['name'] = $_POST['username'];
}
?>
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <h1>
            <?php
            // Hiển thị thông tin lưu trong Session
            // phải kiểm tra có tồn tại không trước khi hiển thị nó ra
            if (isset($_SESSION['name']))
            {
                echo 'Tên Đăng Nhập Là: ' . $_SESSION['name'];
            }
            ?>
        </h1>
        <form method="POST" action="">
            <input type="text" name="username" value=""/> <br/>
            <input type="submit" name="save-session" value="Lưu Session"/>
        </form>
    </body>
</html>

 

Bạn hãy nhập tên vào sau đó nhấn vào button Lưu Session. sau đó bạn refresh lại trang bạn sẽ thấy thông tin bạn đã được lưu trữ trên Server nên có hiển thị ra.

Xóa session

Tất cả các giá trị Session đều lưu trữ trong biến $_SESSION nên để xóa nó các bạn chỉ việc dùng hàm unset($_SESSION['session_name']), trong đó hàm unset dùng để giải phóng một biến ra khỏi bộ nhớ.

Nếu bạn muốn xóa hết tất cả các Session thì ta dùng hàm session_destroy().

Ví dụ:

 

1
2
3
4
5
// Xóa session name
unset($_SESSION['name']);
 
// Xóa hết session
session_destroy();

 

Còn rất nhiều hàm khác các bạn tham khảo tại đây.

2. Cookie trong PHP

Cookie thường được dùng để lưu trữ các tùy chọn riêng của trang web từng user, nó là một file nhỏ được Server chỉ định lưu trữ trên máy tính của Client và PHP có thể truy xuất tới được. Và để sử dụng được Cookie thì trình duyệt phải hỗ trợ chức năng này, nếu không thì Cookie trở nên vô dụng.

Cookie sẽ không bị mất khi bạn đóng ứng dụng, nó phụ thuộc vào thời gian sống mà bạn thiết lập cho nó. Ví dụ bạn thiết lập Cookie lưu trữ thông tin đăng nhập trong vòng 15 phút thì sau 15 phút mà bạn không có một thao tác thay đổi trên nó thì Cookie của bạn sẽ bị chết. Đây chính là sự lợi hại của việc sư dụng Cookie.

Lưu trữ Cookie

Để lưu trữ Cookie ta dùng cú pháp sau và phải đặt trước thẻ html: setcookie($name, $value, $expire, $path, $domain).

Trong đó:

  • $name: là tên của Cookie
  • $value: giá trị của Cookie
  • $expire: thời gian sống của Cookie
  • $path : đường dẫn lưu trữ Cookie
  • $domain: tên của domain

Ví dụ: lưu trữ tên đăng nhập username = ‘thehalfheart’ trong một giờ

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!DOCTYPE html>
 
<?php
    setcookie('username', 'thehalfheart', time() + 3600);
?>
 
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
    </body>
</html>

 

Lấy giá trị Cookie

Tất cả Cookie được lưu trữ trong biến toàn cục $_COOKIE nên để lấy giá trị Cookie ta dùng cú pháp sau: $bien = $_COOKIE['cookie_name']Cũng như lưu ý ở phần Session bạn nên kiểm tra có tồn tại Cookie không trước khi lấy nhé, nếu không sẽ bị thông báo lỗi nếu nó không tồn tại.

Ví dụ: Lấy giá tri username vừa lưu trữ ở trên

 

1
2
3
4
if (isset($_COOKIE['username']))
{
echo $_COOKIE['username'];
}

 

Xóa Cookie

Để xóa Cookie bạn chỉ việc thiết lập thời gian sống của nó sang quá trị âm nhiều hơn hoặc bằng giá trị sống lúc bạn thiết lập.

Ví dụ: xóa Cookie đã thiết lập ở trên

 

1
setcookie("username", "", time()-3600);

 

Lời Kết

Bài này chúng ta đã nghiên cứu được 2 cách lưu trữ dữ liệu tạm thời của người dùng đó là Session và Cookie.Cảm ơn các bạn đã theo dõi bài viết này.

Theo:freetuts.net

 

 

The post Session và cookie trong php appeared first on Sửa Máy Nhanh.

]]>
https://suamaynhanh.vn/phan-mem/session-va-cookie-trong-php/feed/ 0
Các hàm kiểm tra dữ liệu trong php https://suamaynhanh.vn/phan-mem/cac-ham-kiem-tra-du-lieu-trong-php/ https://suamaynhanh.vn/phan-mem/cac-ham-kiem-tra-du-lieu-trong-php/#respond Thu, 27 Feb 2020 03:25:36 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=14767 Trong bài này tôi sẽ đưa ra một số hàm kiểm tra dữ liệu có sẵn trong PHP dùng để kiểm tra dữ …

The post Các hàm kiểm tra dữ liệu trong php appeared first on Sửa Máy Nhanh.

]]>
Trong bài này tôi sẽ đưa ra một số hàm kiểm tra dữ liệu có sẵn trong PHP dùng để kiểm tra dữ liệu hay là các biến trong PHP, các hàm này sẽ có ích cho các bạn trong việc làm web sử dụng ngôn ngữ php này.

1. isset($var)

Dùng để kiểm tra biến $var có tồn tại hay không. Thông thường bạn hay dùng để kiểm tra một biến trước khi xử lý thao tác đến nó.

2. empty($var)

Kiểm tra biến $var có phải giá trị trống hay không. Tất cả các giá trị như: số 0, giá trị null, giá trị rỗng, giá trị false đều được quy về là empty. Nếu biến $var không tồn tại thì hàm này vẫn không báo lỗi và sẽ trả kết quả về false

3. is_array($var)

Kiểm tra biến $var có phải kiểu mảng hay không

4. is_string($var)

Kiểm tra biến $var có phải kiểu chuỗi hay không.

5. is_int($var) hoặc is_integer($var)

Kiểm tra biến $var có phải kiểu INT hay không.

6. is_float($var)

Kiểm ta biến $var có phải kiểu float hay không

7. is_double($var)

Kiểm tra biến $var có phải kiểu double hay không.

8. is_null($var)

Kiểm tra biến $var có phải giá trị null không

9. in_array($needle, $haystackarray)

Kiểm tra giá trị $needle có trong mảng $haystackarray hay không

10. array_key_exists($key, $searcharray)

Kiểm tra key $key có trong mảng $searcharray hay không

Lời Kết

Phía trên là các hàm kiểm tra dữ liệu thông dụng. Trong bài viết này chưa có nhiều nhưng tôi nghĩ bấy nhiêu cũng đủ cho các bạn mới học nắm bắt và sử dụng, các bạn chỉ cần biết đến bài này và sau này các bạn làm nếu tôi có sử dụng một hàm nào đó thì biết đường tìm đến bài này mà đọc lại nhé.

Theo:freetuts.net

 

The post Các hàm kiểm tra dữ liệu trong php appeared first on Sửa Máy Nhanh.

]]>
https://suamaynhanh.vn/phan-mem/cac-ham-kiem-tra-du-lieu-trong-php/feed/ 0
Upload file lên server với php https://suamaynhanh.vn/phan-mem/upload-file-len-server-voi-php/ https://suamaynhanh.vn/phan-mem/upload-file-len-server-voi-php/#respond Thu, 27 Feb 2020 03:23:00 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=14766 1. Upload lên Server bằng code PHP Để upload file lên Server thì ban phải sử dụng form có thuộc tính enctype="multipart/form-data" và phương …

The post Upload file lên server với php appeared first on Sửa Máy Nhanh.

]]>
1. Upload lên Server bằng code PHP

Để upload file lên Server thì ban phải sử dụng form có thuộc tính enctype="multipart/form-data" và phương thức POST, thẻ input sẽ có type="file".

Khi bạn upload một file lên thì trên Server sẽ nhận được 5 thông số cho một file, và PHP sẽ dựa vào các thông số đó để tiến hành upload, các thông số đó là:

  • name: Tên của file bạn upload
  • type: Kiểu file mà bạn upload (hình ảnh, word, …)
  • tmp_name: Đường dẫn đến file upload ở client
  • error: Trạng thái của file bạn upload, 0 => không có lỗi
  • size: Kích thước của file bạn upload

Bây giờ ta sẽ làm một ví dụ upload file để bạn dễ hiểu hơn nhé.

Bước 1: Bạn tạo file upload.php trong thư mục WWW của Vertrigo Server, sau đó copy nội dung này vào

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <form method="post" action="" enctype="multipart/form-data">
            <input type="file" name="avatar"/>
            <input type="submit" name="uploadclick" value="Upload"/>
        </form>
        <?php
            // Xử Lý Upload
            var_dump($_FILES);
        ?>
    </body>
</html>

 

Bạn lưu ý rằng để upload file được thì form phải có thuộc tính enctype=”multipart/form-data” như trong code trên nhé.

Cũng giống như POST và GET, tất cả các file bạn upload lên sẽ được lưu trữ trong một biến cục bộ tên là $_FILES, nên trong đoạn code trên mình có var_dump($_FILES<strong>)</strong> để xem thông tin file mình upload lên. Bây giờ bạn chạy file này lên, chọn upload một file bất kỳ và nhấn vào button Upload, bạn sẽ thấy 5 thông tin mà tôi đề cập ở trên.

Bước 2: Bạn tạo một folder upload cùng cấp với file upload.php, sau đó sửa lại file upload.php như sau:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
<body>
    <form method="post" action="" enctype="multipart/form-data">
        <input type="file" name="avatar"/>
        <input type="submit" name="uploadclick" value="Upload"/>
    </form>
    <?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';
        }
    }
?>
</body>
</html>

 

Phần comment bên trong code tôi đã giải thích rõ cho các bạn rồi. Riêng hàm move_uploaded_file($client_path, $server_path) sẽ có 2 tham số truyền vào, tham số $client_path là đường dẫn đến file ở client, tham số $server_path là đường dẫn các bạn muốn lưu trên Server (đường dẫn có kèm theo tên file). Nếu bạn muốn kiểm tra định dạng file trước khi upload thì có thể sử dụng thông số type để kiểm tra.

2. Lời kết

Trong bài này tôi chỉ hướng dẫn các bạn upload file với php đơn giản và không có kiểm tra định dang file trước khi upload lên server, vì vậy nếu bạn muốn kiểm tra định dạng file trước khi upload thì hãy sử dụng các thông số mà mình đề cập ở trên nhé.

Theo:freetuts.net

 

 

The post Upload file lên server với php appeared first on Sửa Máy Nhanh.

]]>
https://suamaynhanh.vn/phan-mem/upload-file-len-server-voi-php/feed/ 0
Các hàm xử lý file trong php https://suamaynhanh.vn/phan-mem/cac-ham-xu-ly-file-trong-php/ https://suamaynhanh.vn/phan-mem/cac-ham-xu-ly-file-trong-php/#respond Thu, 27 Feb 2020 03:19:15 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=14763 Việc xử lý file trong php rất quan trọng vì trong các ứng dụng thực tế ta hay dùng file để lưu trữ dữ …

The post Các hàm xử lý file trong php appeared first on Sửa Máy Nhanh.

]]>
Việc xử lý file trong php rất quan trọng vì trong các ứng dụng thực tế ta hay dùng file để lưu trữ dữ cache cho website hoặc là lưu trữ một thứ gì đó để cho nhằm giúp ứng dụng chạy nhanh hơn, vì thế tôi viết bài này giúp các bạn làm quen với một số hàm liên quan đến file như đọc file, ghi file, tạo folder mới, xóa folder, xóa file.

1. Mở file

Để mở một file ta dùng cú pháp sau: open($path, $option). Trong đó $path là đường dẫn đến file cần mở, $option là quyền cho phép thao tác trên file.

Ta có danh sách các quyền sau:

Mode Diễn giải
r Read only
r+ Read + Write
w Write only
w+ Write + Read. Nếu file này tồn tại thì nội dung cũ sẽ bị xóa đi và ghi lại nội dung mới, còn nếu file chưa tồn tại thì nó tạo file mới
a Mở dưới dạng append dữ liệu, chỉ có write và nếu file tồn tại nó sẽ ghi tiếp nội dung phía dưới, ngược lại nếu file không tồn tại nó tạo file mới
a+ Mở dưới dạng append dữ liệu, bao gồm write và read. Nếu file tồn tại nó sẽ ghi tiếp nội dung phía dưới, ngược lại nếu file không tồn tại nó tạo file mới
b Mở dưới dạng chế độ binary

Ví dụ:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Mở một file, ta dùng dấu @ đặt trước hàm fopen
// để phòng trường hợp đường dẫn $path ta truyền
// vào bị sai nó sẽ không bung lỗi ra màn hình.
// Đường dẫn $path có thể là đường dẫn tương đối
// hoặc tuyệt đối đều được
 
$path = 'demo.txt';
$fp = @fopen($path, "r");
 
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else{
    echo 'Mở file thành công';
}

 

2. Đọc file

Có 3 cách đọc file thông thường trong PHP đó là đọc từng dòng, đọc từng ký tự và đọc hết file.

Ta dùng hàm fgetc($fp) để đọc theo từng ký tự, dùng fgets($fp) để đọc theo từng dòng. Đối với đọc từng dòng và đọc từng ký tự ta phải dùng hàm feof($fp) đặt trong vòng lặp while để sau khi đọc xong nó sẽ chuyển sang dòng mới hoặc ký tự mới.

Để đọc hết tất cả file ta dùng hàm fread($fp, $size), trong đó $fp là đối tượng lúc mở file còn $size là kích cỡ của file cần đọc. Để lấy kích cỡ của file cần đọc ta dùng hàm filesize($path).

Ví dụ: Đọc file từng ký tự

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$fp = @fopen('demo.txt', "r");
 
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    // Lặp qua từng ký tự để đọc
    while(!feof($fp))
    {
        echo fgetc($fp);
    }
}

 

Ví dụ: Đọc file từng dòng

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$fp = @fopen('demo.txt', "r");
 
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    // Lặp qua từng dòng để đọc
    while(!feof($fp))
    {
        echo fgets($fp);
    }
}

 

Ví dụ: Đọc hết file

 

1
2
3
4
5
6
7
8
9
10
11
12
$fp = @fopen('demo.txt', "r");
 
// Kiểm tra file mở thành công không
if (!$fp) {
    echo 'Mở file không thành công';
}
else
{
    // Đọc file và trả về nội dung
    $data = fread($fp, filesize('demo.txt'));
    echo $data;
}

 

3. Ghi file

Để ghi nội dung vào file ta dùng hàm fwrite($fp, $content) trong đó $fp là đối tượng trả về lúc mở file, còn $content là nội dung muốn ghi vào.

Việc ghi file phụ thuộc vào lúc bạn mở file như thế nào. Ví dụ lúc bạn mở file ghi đè thì lúc ghi file nó sẽ ghi đè, lúc bạn mở file ghi kiểu append thì lúc ghi file nó sẽ thêm xuống cuối file, nếu bạn mở file chỉ cho đọc thì bạn không thể ghi file được.

Ví dụ:

 

1
2
3
4
5
6
7
8
9
10
11
$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
{
    $data = 'freetuts.net file functions tutorial';
    fwrite($fp, $data);
}

 

4. Đóng File

Việc mở file để sử dụng mà không đóng file rất nguy hiểm, vì thế sau khi sử dụng xong bạn nên đóng file để an toán hơn. Để đóng file ta dùng hàm fclose($fp) trong đó $fp là đối tượng trả về lúc bạn mở file.

Ví dụ:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$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
{
    $data = 'freetuts.net file functions tutorial';
    // Ghi file
    fwrite($fp, $data);
 
    // Đóng file
    fclose($fp);
}

 

5 Các hàm xử lý file khác

Sau đây là một số hàm xử lý file khác.

Kiểm tra file có tồn tại không

Ta dùng hàm file_exists($path), trong đó $path là đường dẫn đến file cần kiểm tra, ví dụ:

 

1
2
3
4
if (file_exists('demo.txt'))
{
    echo 'File tồn tại';
}

 

Kiểm tra file có được cấp quyền ghi không

a dùng hàm is_writable ($path) trong đó $path là đường dẫn đến file cần kiểm tra .

Ví dụ:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
$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 một file mà không cần dùng hàm fread

Ta dùng hàm  file_get_contents($path) để lấy nội dung của một file, trong đó $path là đường dẫn đến file cần lấy. $path có thể là đường link đến một trang web trên internet thì nó sẽ trả về nội dung html của trang web đó.

Ví dụ:

 

1
2
3
4
5
// Lấy nội dung file txt
echo file_get_contents('demo.txt');
 
// Lấy nội dung đường link <a href="http://www.freetuts.net/">http://www.freetuts.net</a>
echo file_get_contents('<a href="http://www.freetuts.net/">http://www.freetuts.net</a>');

 

Ghi nội dung file mà không cần dùng hàm fwrite

Trước khi dùng hàm này bạn nên dùng hàm is_writable để kiểm tra file có được phép ghi không.

Ta dùng hàm file_put_contents($path, $noidung) để ghi nội dung cho một file, trong đó $path là đường dẫn đến file cần ghi, $noidung là nội dung bạn muốn ghi vào file.

Ví dụ:

 

1
file_put_contents('demo.txt', 'noi dung');

 

Đổi tên file

Để đổi tên file ta dùng hàm rename($oldname, $newname), trong đó $oldname là đường dẫn đến file cần đổi tên, $newname là đường dẫn mới có kèm tên file cần đổi . Nếu bạn chỉ muốn đổi tên thôi thì đường dẫn của cả 2 biến giống nhau, chỉ khác nhau ở cái tên file. Nếu tên file mới bị trùng thì file đó sẽ bị ghi đè.

Ví dụ:

 

1
rename('demo.txt', 'demo2.txt');

 

Copy file

Để copy sang file mới ta dùng hàm copy($source, $dest), trong đó $source là path file cần copy và $dest là path file cần di chuyển tới. Nếu bạn muốn đổi luôn tên thì đường dẫn $dest bạn khai báo một cái tên khác.

Ví dụ:

 

1
2
3
4
if (!copy('demo2.txt', 'demo3.txt'))
{
    echo 'Copy thất bại';
}

 

Xóa file

Ta dùng hàm unlink($path) để xóa file, trong đó $path là đường dẫn đến file cần xóa, ví dụ:

 

1
2
3
4
if (file_exists('demo.txt'))
{
    unlink('demo.txt');
}

 

Kiểm tra một đường dẫn folder có tồn tại không

Ta dùng hàm is_dir($filename), trong đó $filename là đường dẫn đến folder cần kiểm tra.

Ví dụ:

 

1
2
3
if(is_dir('system')){
    echo 'Folder Tồn Tại';
}

 

Tạo một folder mới

Ta dùng hàm mkdir($path) để tạo folder mới, trong đó $path là đường dẫn đến folder cần tạo. Bạn lưu ý folder cuối cùng chính là tên folder bạn cần tạo và tất cả các folder trước nó bạn chắc chắn là phải có, nếu không sẽ bị lỗi.

Ví dụ:

 

1
2
3
4
// Kiểm tra folder parent chưa có chưa, nếu có thì tạo folder con
if(is_dir('parent/sub')){
    mkdir('parent/sub');
}

 

6. Lời kết

Trên là những hàm xử lý file hay dùng. Cảm ơn đã theo dõi bài viết.

Theo:freetuts.net

 

 

 

The post Các hàm xử lý file trong php appeared first on Sửa Máy Nhanh.

]]>
https://suamaynhanh.vn/phan-mem/cac-ham-xu-ly-file-trong-php/feed/ 0
Kỹ thuật đặt cờ hiệu trong php https://suamaynhanh.vn/phan-mem/ky-thuat-dat-co-hieu-trong-php/ https://suamaynhanh.vn/phan-mem/ky-thuat-dat-co-hieu-trong-php/#respond Mon, 24 Feb 2020 06:05:37 +0000 https://suamaynhanh.vn/?post_type=wtg_soft&p=14746 1. Kỹ thuật đặt cờ hiệu là gì? Tương tự bài trước mình sẽ đưa ra một ví dụ thực tế …

The post Kỹ thuật đặt cờ hiệu trong php appeared first on Sửa Máy Nhanh.

]]>
1. Kỹ thuật đặt cờ hiệu là gì?

Tương tự bài trước mình sẽ đưa ra một ví dụ thực tế để các bạn dễ hình dung.

Ví dụ 1: Quy trình của đội bóng trước khi ra sân.

Giả sử có một đội bóng trước khi ra sân  thi đấu các bác sỹ kiểm tra sức khỏe của từng người, Nếu một trong những cầu thủ ra sân có sử dụng chất kích thích thì cả đội bóng sẽ không được thi đâu và sẽ bị kỉ luật. Cách làm như sau: tôi sẽ duyệt qua từng người và kiểm tra, chỉ cần có 1 cầu thủ thôi là kết luận đc đội bóng này không đủ điều kiện. Đây gọi là kỹ thuật đặt cờ hiệu.

Ví dụ 2: Kiểm tra xem các số từ 1 đến 1000 có số nào chia hết cho 40 không?

Để giải bài này tôi sẽ dùng kỹ thuật đặt cờ hiệu lặp từ 1 cho tới 1000 rồi chia lấy dư cho 40, chỉ cần có một số chia hết cho 40 là tôi có thể quyết định rằng tồn tại số chia hết cho 40 trong khoảng từ 1 đến 1000. Sau đây là hàm có sử dụng kỹ thuật này.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Khai báo cờ và gán cho cờ có giá trị là không tìm thấy
$flag = false;
 
// duyệt qua từng số
for ($i = 1; $i <= 1000; $i++){
    if ($i % 40 == 0){
        $flag = true;
    }
}
 
if ($flag == true){
    echo 'Có';
}
else {
    echo 'Không';
}

 

2. Khi nào sử dụng kỹ thuật đặt cờ hiệu

Kỹ thuật đặt cờ hiệu dùng để duyệt mảng danh sách và kiểm tra từng phần tử để đưa ra kết quả cuối cùng.

Kỹ thuật này thường dùng để kiểm tra các dữ liệu đầu vào trước khi lưu vào hệ thống, kiểm tra một số tồn tại trong danh sách không, kiểm tra trong danh sách có số nguyên tố không, … Đây là một vài ví dụ thôi chứ thực tế bạn có thể dùng nó cho nhiều trường hợp lắm.

3. Lời kết

Các bạn thấy kỹ thuật này cũng khá là ngắn gọn phải không nào, nó được sử dụng rất nhiều trong việc lập trình web php nên hy vọng qua bài này các bạn biết vận dụng nó trong dự án của riêng mình nhé.

Theo:freetuts.net

 

The post Kỹ thuật đặt cờ hiệu trong php appeared first on Sửa Máy Nhanh.

]]>
https://suamaynhanh.vn/phan-mem/ky-thuat-dat-co-hieu-trong-php/feed/ 0