Kiến thức – Tân Hồng IT https://tanhongit.com Kiến thức tin học, máy tính, lập trình, thủ thuật tiện ích Mon, 09 Mar 2020 03:45:51 +0000 en-US hourly 1 https://wordpress.org/?v=5.3.2 https://tanhongit.com/wp-content/uploads/2020/02/favicon-tanhongit.png Kiến thức – Tân Hồng IT https://tanhongit.com 32 32 Cách làm việc với code của người khác https://tanhongit.com/cach-lam-viec-voi-code-cua-nguoi-khac/ https://tanhongit.com/cach-lam-viec-voi-code-cua-nguoi-khac/#respond Mon, 09 Mar 2020 03:41:49 +0000 https://tanhongit.com/?p=2525 Xem code hay làm việc với code của người khác là một kỹ năng cơ bản của developer. Dành thời gian tìm hiểu và code đó thậm chí có thể trở thành của riêng bạn. Hôm nay tôi sẽ xem xét một số phương pháp tốt nhất để làm việc với code của người khác, […]

The post Cách làm việc với code của người khác appeared first on Tân Hồng IT.

]]>
Xem code hay làm việc với code của người khác là một kỹ năng cơ bản của developer. Dành thời gian tìm hiểu và code đó thậm chí có thể trở thành của riêng bạn.

Hôm nay tôi sẽ xem xét một số phương pháp tốt nhất để làm việc với code của người khác, đọc code di sản (legacy) một cách hiệu quả. Đây không phải là một chủ đề dễ dàng để viết đầy đủ.

lam viec code nguoi khac
Cách làm việc với code của người khác

Để làm cho quá trình làm việc với code của người khác dễ thở hơn, tôi tập trung vào các mục chính sau:

  • Tương tác
  • Quan sát
  • Chạy thử nghiệm – Test
  • Fix Bugs thiết kế dành cho người mới
  • Tìm Tài nguyên sẵn có
  • Sử dụng một IDE tốt
  • Đọc sách & Blogs
  • Đóng góp Tài liệu
  • Hãy cẩn trọng

Tương tác

Các lead developer là ai? Họ ở đâu? Có phải họ có mặt trực tiếp trong văn phòng của bạn? Nếu vậy, hãy nói chuyện với họ hoặc gửi email cho họ. Những người này hẳn là có kiến thức tốt nhất về dự án.

Bạn có phải là nhân viên làm việc từ xa (remote) hoặc freelancer? Công ty hoặc dự án có các kênh thông tin liên lạc không? Các developer dùng IRC, Slack, Twitter, email, Trello hay cái gì khác?

Hãy chắc chắn rằng bạn đang cùng nơi với họ. Một chỉ trích thường nhằm vào Zend Framework 2 là không có cộng đồng năng động. Không hẳn vậy, vì kênh IRC của họ đang hoạt động hàng ngày. Hãy đảm bảo bạn đang sinh hoạt cùng chỗ với các developer và các thành viên khác trong team.

Quan sát

Khi bạn lần đầu vào một dự án, đừng quá khắt khe với bản thân. Đừng mong đợi biết được tất cả mọi thứ ngay từ đầu. Tôi từng nghe nói về chuyện mất ba tuần đến ba tháng làm việc hàng ngày với codebase (code nền tảng đã có sẵn) trước khi một developer có thể thực sự làm việc hiệu quả với codebase đó.

Một số người có quan niệm sai lầm rằng bạn có thể, bằng cách nào đó, chỉ cần nhảy vào và ngay lập tức làm việc hiệu quả. Có lẽ họ đã xem quá nhiều phim của Hollywood như Swordfish.

Các codebase mất thời gian để học vì chúng được xây dựng từ những ý tưởng, định kiến, niềm tin và cách tiếp cận của tất cả các developer làm việc trong dự án. Vì bạn là người mới, bạn sẽ không có bất kỳ kiến thức nền nào cả.

Dưới đây là 5 cách hay để bắt đầu:

  • Dành thời gian xem lướt qua mọi thứ
  • Đặt câu hỏi
  • Cài đặt thử
  • Thử sử dụng cái vừa cài đặt thử
  • Đọc qua các comment trong code và các tài liệu liên quan

Đừng khắt khe với bản thân, hãy cho mình cơ hội để có được một sự khởi đầu tốt. Sau một thời gian, bạn sẽ bắt đầu hiểu rõ hơn về cách ứng dụng được xây dựng.

Tại giai đoạn này, hãy tiến nhanh hơn bằng cách hỏi các developer khác và các senior developer. Bạn hẳn đã có một danh sách các câu hỏi khi bạn lướt qua codebase.

Hãy dành thời gian ra để hỏi các developer khác lời giải thích cho các khúc mắc của bạn. Đừng e ngại, hãy hành động và nhận được câu trả lời mà bạn cần.

Chạy Test

1411369515running-phpunit-1024x649.png

Bất kỳ codebase tốt nào đều có các test. Nếu không thì thật không hay. Thực ra có thể là các developer team này chưa bao giờ thực hiện test, nhưng tôi sẽ hơi quan ngại nếu họ không làm điều này.

Nếu có test, hãy chạy thử. Có pass hết không? Tôi đã gặp nhiều codebase có một bộ các test mà không ai có thể chạy qua được. Liệu chúng đã được cập nhật chưa?

Sau khi bạn đã thử chạy chúng, hãy đọc. Nếu chúng được viết tốt, chúng sẽ mô tả cách ứng dụng làm việc, nó sẽ làm gì, và các thành phần kết dính với nhau như thế nào. Sẽ mất thời gian để đi sâu vào những thứ này.

Fix Bugs thiết kế cho người mới

Một cách dễ dàng để bắt đầu là tìm hiểu tại sao xuất hiện bug và fix các bug dành cho người mới hoặc junior developer trong dự án. Hai ví dụ tốt là Joind.In và ownCloud, trong hình dưới đây là bug tracker của ownCloud:

1411369550owncloud-1024x732.png

Bạn có thể thấy các ticket đã được đánh dấu rõ ràng. Hãy đọc qua và tham gia fix chúng. Những bug này không đòi hỏi quá cao về kỹ thuật, nhưng bạn sẽ có thể dễ dàng hòa mình vào dự án, xây dựng sự tự tin và kiến thức.

Thành tựu và kỹ thuật phức tạp thì rất tuyệt vời, nhưng nếu hiện tại không đạt được ngay hoặc sẽ mất rất nhiều thời gian, chúng sẽ không giúp gì cho sự tự tin và nhiệt huyết của bạn. Hãy bắt đầu từ những cái dễ và nhỏ.

Tìm tài nguyên sẵn có

Một trong những điều tốt nhất bạn có thể làm khi tiếp quản một codebase, hoặc khi tham gia vào một team hiện có, là tập hợp được nhiều tài nguyên nhất có thể. Không biết cần tìm gì ư? Dưới đây là một số ý tưởng để giúp bạn bắt đầu:

  • Bạn có quyền truy cập vào kho lưu trữ mail không?
  • Dự án hoặc công ty có wiki không?
  • Tài liệu dự án nào đã được biên soạn?
  • Bạn đã đọc qua version control history chưa?
  • Những người đóng góp có viết các commit message có ý nghĩa và nhất quán không?

Sử dụng một IDE tốt

1411369591phpstorm-syntax-highlighting-1024x794.png

IDE tốt thì quý như vàng. Dù bạn là một developer Ruby, Python, Go, Java, PHP hay ngôn ngữ nào khác, hãy tìm một IDE tốt dành riêng hoặc tùy chỉnh cho ngôn ngữ bạn lựa chọn.

Tôi đánh giá cao những người theo chủ nghĩa thuần túy, thích VIM hoặc Emacs, điều đó OK thôi. Nhưng tôi là một người yêu IDE và IDE mà tôi lựa chọn là PhpStorm. Có rất nhiều những lựa chọn khác, chẳng hạn như Eclipse, TextMate, SublimeText, và VisualStudio.

Một khi bạn đã tìm thấy IDE cho mình, hãy bắt đầu sử dụng các tính năng nó cung cấp. Ở đây tôi lấy ví dụ cho PhpStorm, bạn có thể áp dụng những nguyên tắc này cho IDE bạn chọn.

Bắt đầu duyệt qua code và xem nó có theo một chuẩn nào không. Không nhất thiết phải là một chuẩn chính thức như PHP PSRs. Xem thử liệu developer có theo một phong cách nhất quán không hay là lộn xộn. Sử dụng các công cụ như mess detector và cyclomatic complexity tester để đánh giá chất lượng code.

Có tài liệu hướng dẫn nào không? Nếu có thì IDE của bạn sẽ có thể sử dụng chúng khi bạn kiểm tra code. Tiếp theo, sử dụng một trình gỡ lỗi (debugger), chẳng hạn như xhprof, Xdebug hoặc Zend Debugger, rồi chạy ứng dụng xem nó hoạt động như thế nào.

Nó làm gì? Cấu trúc dữ liệu nào nó tạo ra và sử dụng? Nó có lặp lại các khối code không cần thiết không? Có nhiều thứ hơn nữa cần xem xét, nhưng sử dụng các tính năng mà IDE cung cấp sẽ giúp bạn dễ thở hơn nhiều.

Đọc và Học hỏi

Điều này đúng cho cá nhân tôi. Càng học hỏi nhiều, chúng ta càng trở nên khôn lớn và làm được việc. Chúng ta không phải là người đầu tiên trên con đường chúng ta đang đi. Nhiều, rất nhiều những người khác đã đi trước chúng ta và đã mắc những lỗi tương tự như chúng ta.

Hãy tiết kiệm cho mình một chút thời gian khi nghĩ về quá trình học tập khó khăn của những người đi trước và học hỏi từ họ. Nhiều developer giỏi cũng vừa là các tác giả viết sách và các blogger.

Một trong những tác giả yêu thích của tôi là Martin Fowler, người đã xuất bản một cuốn sách tuyệt vời về chủ đề tái cấu trúc (refactoring). Cũng có những cuốn sách khác rất tuyệt vời, chẳng hạn như Design Patterns, và các trang web như SourceMaking.com.

Tự tìm hiểu và tiếp tục học hỏi từ các nguồn tài nguyên như vậy. Nó không hề dễ dàng, nhưng phần thưởng là rất xứng đáng.

Đóng góp Tài liệu

Đây là một trong những điều mà tôi không làm đủ. Thật dễ dàng khi ngồi ngoài và chỉ trích một codebase, framework hay dự án phần mềm. Thay vì làm điều đó, hãy bắt tay vào tham gia đóng góp.

Tài liệu không phải là dành cho các lập trình viên thất bại, các nhà thiết kế đồ họa hay những người không am hiểu kỹ thuật. Các dự án phần mềm lớn nhất luôn đề xuất rằng nơi tốt nhất để bắt đầu là tài liệu hướng dẫn.

Một trong những dự án nổi bật nhất mà thực hiện điều này là Linux Kernel. Còn cách nào tốt hơn để học một cái gì đó hơn là tài liệu? Sau tất cả, nếu bạn thực sự biết điều gì đó thì bạn mới có thể làm tài liệu về nó.

Vì vậy, nếu là một dự án mã nguồn mở, hãy nhảy vào, tìm hiểu về nó, đọc qua code, ghi chép lại, và sau đó đóng góp tài liệu. Nếu đó là một ứng dụng nội bộ, hãy là người đầu tiên bắt đầu làm tài liệu; thậm chí nếu không có ai khác ngoài bạn.

Có thể sẽ không có tài liệu; nhưng điều đó thật sự khủng khiếp. Mọi dự án đều phải bắt đầu từ một nơi nào đó. Khi bạn làm việc với code, hãy viết ra những gì bạn biết.

Những developer giỏi nhất mà tôi biết, ví dụ như Lorna Jane, bắt đầu viết blog theo cách này. Cô viết blog để lưu giữ những gì đã học được, mà sau này trở thành một trong những blog PHP phổ biến nhất.

Hãy cẩn trọng

Điểm cuối cùng: Hãy suy nghĩ cẩn trọng đối với các developer mà bạn đang xem và làm việc trên di sản của họ. Bạn không biết về sự nghiệp và trình độ học vấn của họ, và những thứ này đã hạn chế họ như thế nào, khi họ viết ra những dòng code mà bạn đang đọc.

Hơn nữa, level kĩ năng hiện tại của bạn đang ở mức nào? Sẽ là tùy tiện khi chúng ta trẻ hơn, non hơn, và ít kinh nghiệm, lại đi phán xét người khác.

Chúng ta nghĩ rằng chúng ta biết tất cả và những kỳ vọng, những khái niệm và phương pháp tiếp cận của chúng ta là những cách đúng và chính xác. Nhưng có thực sự đúng là như vậy không? Tôi tin rằng, khi chúng ta trưởng thành và lớn hơn một chút, chúng ta cũng trở nên khôn ngoan hơn và chấp nhận vô vàn các phương pháp tiếp cận phát triển phần mềm mà đã từng tồn tại.

Chúng ta có thể không cần phải đồng ý với họ, nhưng họ không hẳn là đã sai. Họ có thể có rất nhiều điều để dạy chúng ta, có thể giúp chúng ta lớn khôn. Vì vậy, hãy luôn cố gắng và suy nghĩ ân cần với những người khác và vị trí của họ. Đừng trở thành một người mới đáng ghét, chỉ ngón tay và đổ lỗi. Hành xử kiểu này sẽ không giúp ích cho bất kì ai, đặc biệt là chính bản thân bạn.

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

via viblo and sitepoint

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Cách làm việc với code của người khác appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/cach-lam-viec-voi-code-cua-nguoi-khac/feed/ 0
Lộ trình học PHP từ cơ bản đến nâng cao chuyên nghiệp https://tanhongit.com/lo-trinh-hoc-php-tu-co-ban-den-nang-cao-chuyen-nghiep/ https://tanhongit.com/lo-trinh-hoc-php-tu-co-ban-den-nang-cao-chuyen-nghiep/#respond Thu, 27 Feb 2020 22:59:57 +0000 https://tanhongit.com/?p=2452 Các bạn đang muốn học lập trình Website? các bạn chưa biết nên bắt đầu từ đâu và các bạn chưa biết mình nên theo lập trình web phía Back-end hay Full-Stack như thế nào? Bài viết này sẽ cho các bạn  biết về lộ trình học lập trình website từ cơ bản đến nâng […]

The post Lộ trình học PHP từ cơ bản đến nâng cao chuyên nghiệp appeared first on Tân Hồng IT.

]]>
Các bạn đang muốn học lập trình Website? các bạn chưa biết nên bắt đầu từ đâu và các bạn chưa biết mình nên theo lập trình web phía Back-end hay Full-Stack như thế nào? Bài viết này sẽ cho các bạn  biết về lộ trình học lập trình website từ cơ bản đến nâng cao với ngôn ngữ chủ đạo là PHP.

lo trinh hoc php
Lộ trình học PHP từ căn bản đến nâng cao

Tìm hiểu sơ qua về ngôn ngữ PHP

PHP là ngôn ngữ kịch bản phổ biến nhất trên website hiện nay. Nó được viết tắt của “Hypertext Preprocessor” là một ngôn ngữ lập trình mã nguồn mở được chạy ở phía server nhằm sinh ra mã html trên client rất phổ biến và được dùng trong phát triển ứng dụng Website.

Với đặt tính nhanh, linh hoạt, hữu dụng trong thực tế và được tối ưu hoá qua nhiều phiên bản, dễ học nên PHP trở thành một ngôn ngữ lập trình web rất phổ biến và được ưa chuộng để phát triển mọi ứng dụng web từ blog đến các website nối tiếng.

Ví dụ như các ông lớn Facebook, Yahoo, Google đều ứng dụng với ngôn ngữ này.

Vậy trước khi bắt tay vào học ngôn ngữ PHP, chúng ta có cần có trước những kiến thức cơ bản nào khác không. Đáp án đối với bản thân mình là nên có.

Mặc dù chúng ta có thể bắt tay vào học PHP ngay cũng được, nhưng bạn sẽ gặp rất nhiều trở ngại trong quá trình học. Cho nên dù không nhiều thì ít, các bạn vẫn nên chuẩn bị cho bản thân một số kiến thức dưới đây trước khi học PHP.

Kiến thức nên có trước khi bắt đầu học lập trình PHP

Học html cơ bản

HTML là ngôn ngữ đánh dấu siêu văn bản giúp cho bạn tạo khung xương của website

Bạn nên học qua về HTML, HTML5

Học CSS cơ bản

Bạn nên học CSS, CSS3, Bootstrap sẽ giúp bạn trang trí cho website thêm phần sinh động.

Học Javascript

Có Javascript sẽ giúp cho website trở nên tương tác hơn.

  • Javasript cơ bản
  • jQuery: Thư viện hiệu ứng của Javascript

Với bộ 3 HTML + CSS + Javascript này bạn đã trở thành một lập trình viên front-end có đủ kiến thức rồi. Học xong 3 phần trên, các bạn sẽ rất dễ nắm bắt những công nghệ mới khi tiếp xúc sau này.

Học MySQL

Database là một phần không thể thiếu của bất cứ ứng dụng nào. Nó là thứ để lưu trữ các dữ liệu của ứng dụng và người dùng. Trong PHP thì người ta thường ưa chuộng MySQL.

Vì thế bạn nên học MySQL để biết về cách tạo dựng và quản lý database như thế nào nhé!

Giờ hãy bắt đầu vào lộ trình học PHP căn bản đến nâng cao.

Lộ trình học PHP căn bản

Ta sẽ học về lý thuyết những kiến thức cơ bản nhất.

  1. Ngôn ngữ lập trình PHP là gì và hướng dẫn thiết lập môi trường để lập trình PHP
  2. Cú pháp trong PHP, Khai báo hằng và biến trong PHP
  3. Những kiểu dữ liệu trong PHP
  4. Toán tử và biểu thức trong PHP
  5. Biểu Thức Điều Kiện Trong PHP (Lệnh if, else, switch)
  6. Các loại Vòng lặp trong PHP (for, while, do while)
  7. Vòng lặp Foreach trong PHP (Các loại vòng lặp phần 2)
  8. lệnh Break, Continue và các hàm (function) exit, die thường dùng trong PHP
  9. Hàm (Function) Trong PHP
  10. Mảng (Array) Trong PHP
  11. Các hàm xử lý mảng (Array) trong PHP
  12. Chuỗi (String) Và Các Hàm Xử Lý Chuỗi Trong PHP

Học PHP nâng cao thêm một chút nữa

  1. Phương thức GET và POST trong PHP
  2. Cookie là gì? Cookie trong PHP
  3. Session trong PHP
  4. Các hàm xử lý và làm việc với file trong PHP
  5. Xử lý date time ngày tháng trong PHP
  6. Những hàm kiểm tra dữ liệu trong PHP (isset, empty,…)
  7. Xử lý ngoại lệ trong PHP.
  8. Xử lý lỗi (Error) trong PHP
  9. Những lệnh require, require_once, include, include_once trong PHP

Tiếp sau đó bạn sẽ cần học về Form trong php, truyền dữ liệu trong php từ form và kiểm tra form nhập liệu.

Gửi Emaill trong PHP.

Học cách sử dụng XML, DOM, Parsers trong PHP.

Các hàm bảo mật trong PHP

Học PHP nâng cao – Lập trình PHP hướng đối tượng OOP

Trong Phần học PHP nâng cao, Nội dung quan trọng nhất là Lập trình hướng đối tương OOP, nên ta sẽ có từng bài học theo lộ trình sau:

  1. Lập trình hướng đối tượng là gì?
  2. Class, properties, method of Object
  3. Magic methords
  4. Trừu tượng hoá dữ liệu
  5. Hàm khởi tạo và huỷ trong PHP
  6. Biến có sẵn được định nghĩa trước trong PHP
  7. Tính kế thừa trong php
  8. Các mức truy cập visibility private protected và public trong kế thừa
  9. Kế thừa lồng nhau trong php
  10. Tính đóng gói và đa hình trong php
  11. Lớp trừu tượng abstract trong php hướng đối tượng
  12. Get set và magics methods __get __set
  13. Autoloading require, require_one
  14. Ghi chú với docblocks
  15. Interface là gì?
  16. Trait là gì?
  17. Self và this khác nhau như thế nào?
  18. Final class là gì?

Nâng cao thêm – Học PHP và MySQL

Để học tốt chương trình học PHP và MySQL, chúng ta phải nắm vững kiến thức về lập trình frontend, bao gồm HTML, CSS, và Javascript. Tư duy logic tốt, khả năng xử lý vấn đề thực tiễn, khả năng tìm hiểu tài liệu, và ngoại ngữ sẽ là một lợi thế.

  1. MySQL là gì?
  2. Mối liên hệ giữa MySQL và PHP
  3. Tạo CSDL
  4. Tạo Bảng (table)
  5. Kết nối và truy vấn CSDL MySQL
  6. Thiết lập quan hệ giữa các bảng trong CSDL (khóa chính, khóa ngoại, contrains…)
  7. Chọn (Select) dữ liệu MySQL
  8. Thêm (Insert) dữ liệu MYSQL
  9. Chỉnh sửa (Update) dữ liệu MYSQL
  10. Xoá (Delete) dữ liệu MySQL
  11. Cơ chế prepared câu SQL trong PHP
  12. Thao tác với CSDL trong PHP thông qua PDO

Lập trình phát triển ứng dụng PHP

  1. Hiển thị sản phẩm trên trang chủ và theo từng chuyên mục sản phẩm
  2. Tìm kiếm và phân trang trong PHP
  3. Đăng ký, đăng nhập, ghi nhớ đăng nhập, quên mật khẩu trong php
  4. Upload file trong PHP
  5. Đếm số người Online
  6. Hệ thống bình chọn bằng PHP và MySQL
  7. Tạo Giỏ hàng trong PHP
  8. Xây dựng chức năng checkout
  9. Tích hợp thanh toán trực tuyến vào giỏ hàng
  10. Tìm kiếm với PHP và Ajax
  11. Sử dụng Google reCAPTCHA với PHP
  12. Quản lý đơn hàng bằng php và mysql
  13. Tạo trang quản lý sản phẩm
    1. Quản lý menu
    2. Quản lý sản phẩm: thêm, xoá, sửa, update.
    3. Chức năng Quản lý User.
    4. Quản lý chuyên mục.

Tìm Hiểu Mô Hình MVC Với PHP

Học Framework của PHP

Học Laravel

Nguồn tài nguyên, tài liệu tốt nhất để học Lập trình PHP

Các bạn có thể tham khảo một số nguồn tài liệu chuyên về PHP bên dưới.

  1. Học tập từ tài liệu trên W3 Schools
  2. Đọc documents trên php.net

Ngoài ra các bạn cũng có thể đăng lý học những khoá học chất lượng từ Udemy.com, Tutorialspoint.com hoặc học qua video hướng dẫn trên Youtube.

Tất cả đều nhằm mục đích hỗ trợ cho việc học tập của các bạn, Việc còn lại phụ thuộc vào sự cần cù và đam mê của các bạn để trong quá trình học không bị chán nản mà bỏ giữa chừng nhé!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!
CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

 

The post Lộ trình học PHP từ cơ bản đến nâng cao chuyên nghiệp appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/lo-trinh-hoc-php-tu-co-ban-den-nang-cao-chuyen-nghiep/feed/ 0
Bài 16: Các hàm xử lý và làm việc với file trong PHP https://tanhongit.com/bai-16-cac-ham-xu-ly-va-lam-viec-voi-file-trong-php/ https://tanhongit.com/bai-16-cac-ham-xu-ly-va-lam-viec-voi-file-trong-php/#respond Sat, 22 Feb 2020 09:39:45 +0000 https://tanhongit.com/?p=2040 Bài viết này sẽ xoay quanh về nội dung của các hàm xử lý và làm việc với file trong PHP.  Đối với một ngôn ngữ lập trình, làm việc với file và thư mục là điều bắt buộc mà không thể tránh khỏi. Vấn đề xử lý file trong PHP rất quan trọng khi […]

The post Bài 16: Các hàm xử lý và làm việc với file trong PHP appeared first on Tân Hồng IT.

]]>
Bài viết này sẽ xoay quanh về nội dung của các hàm xử lý và làm việc với file trong PHP.  Đối với một ngôn ngữ lập trình, làm việc với file và thư mục là điều bắt buộc mà không thể tránh khỏi. Vấn đề xử lý file trong PHP rất quan trọng khi các bạn muốn làm một số chức năng như cache hay log file nhằm giúp ứng dụng web chạy nhanh hơn,…

ham xu ly file trong php
Các hàm xử lý và làm việc với file trong PHP

Việc nắm vững kiến thức về xử lý file và quyền hạn của file, thư mục khi học PHP không những giúp bạn dễ dàng lưu trữ thông tin cho website mà còn giúp bạn tăng tính bảo mật cho các file và thư mục quan trọng.

Quá trình làm việc với một file trong PHP diễn ra như sau: Mở file –> Thao tác (Đọc, Ghi ) –> Đóng file. 

Các loại File được hỗ trợ trong PHP

  • File quản lý hệ thống
  • File logs
  • Loại file.txt
  • File.log
  • File.csv
  • Dạng file hình ảnh file.gif, file.jpg …
  • File cài đặt chương trình (program.ini)

Mở file với fopen

Để mở file trong PHP chúng ta dùng hàm fopen với cú pháp:

fopen($path, $mode);

Trong đó:

  • $path là đường dẫn đến file các bạn muốn mở.
  • $mode là thuộc tính bao gồm các quyền hạn truy cập vào file.

Danh sách ký hiệu thuộc tính $mode gồm quyền hạn truy cập vào file.

Mode Chú thích
r Chỉ được đọc (Read only)
r+ Được quyền đọc và ghi (Read + write)
w Chỉ được viết (write only)
x Tạo file mới chỉ để ghi.
w+ Được quyền đọc và viết (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 Được quyền chỉ để viết 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+ Được quyền cả viết lẫn đọc. 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
x+ Quyền tạo file mới để đọc và ghi.
b Mở dưới dạng chế độ binary

Hàm fopen() sẽ mở một file dựa vào đường dẫn truyền vào. Nếu truyền vào một URL, hàm sẽ sẽ tìm kiếm một trình xử lý giao thức(wrapper) cho URL đó, nếu không có trính xử lý nào đươc cung cấp, nó sẽ cảnh báo cho người dùng và sau đó tiếp tục như đối với các file bình thường.

Ví dụ:

<?php
$open = @fopen('data.txt', 'r'); // dùng @ đặt trước hàm fopen để ngăn chặn thông báo lỗi khi truyền sai đường dẫn file
if (!$open)
    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 thông thường trong PHP đó là đọc từng dòng, đọc từng ký tự và đọc hết file. Chúng ta sẽ đi vào từng cách đọc trên nhé!

Sử dụng hàm feof trong đọc file

Trước khi tìm hiểu các cách đọc file trong PHP mình xin giới thiệu các bạn hàm feof().

Hàm này có tác dụng đặt trong vòng lặp để sau khi đọc xong nó sẽ chuyển sang dòng mới hoặc ký tự mới đối với từng trường hợp đọc file.

Hàm feof() hữu ích khi lặp lại những dữ liệu không xác định được độ dài.

Đọc file từng dòng

Để đọc file từng dòng ta dùng hàm fgets($fp).

Ở cách này trước tiên chúng ta sẽ dùng feof để sau khi đọc xong nó sẽ chuyển sang dòng mới, và dùng hàm fgets để in ra từng dùng của file.

<?php
$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
{
    echo 'Mở file thành công <br>';
    // Lặp qua từng dòng để đọc
    while(!feof($fp))
    {
        echo fgets($fp);
    }
}
?>

Ở phương pháp đọc file theo từng dòng này, ngoài cách duyệt từng dòng bằng việc dùng hàm feof trong vòng lặp while như trên thì ta còn có một cách khác đó là chuyển file sang dạng mảng với mỗi phần tử trong mảng là 1 dòng của file, sau đó chỉ cần duyệt mảng và xuất ra màn hình.

$array = @file('demo.txt'); // chuyển đổi file sang mảng
foreach ($array as $value) {
    echo $value;
}

Trong đó: Hàm file() đọc nội dung của file và đưa vào một mảng. Mỗi phần tử của mảng tương ứng với một dòng của file.

Đọc file từng ký tự

Để đọc file từng dòng ta dùng hàm fgetc($fp).

Ở cách này trước tiên chúng ta sẽ dùng feof để sau khi đọc xong nó sẽ chuyển sang dòng mới, và dùng hàm fgetc để in ra từng dùng của file.

<?php
$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
{
    echo 'Mở file thành công <br>';
    // Lặp qua từng ký tự để đọc
    while(!feof($fp))
    {
        echo fgetc($fp);
    }
}
?>

Đọc hết file với fread

Thông số trong hàm fread() chứa tên của file dùng để đọc dữ liệu và thông số thứ hai là một số lượng bytes nhất định để đọc dữ liệu.

Cú pháp: fread($file,$filesize)

<?php
$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
{
    echo 'Mở file thành công <br>';
    echo fread($file, filesize('demo.txt'));
} ?>

Ghi, Chèn dữ liệu vào file trong PHP

Để 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

Để ghi file thì bắt buộc file của bạn phải được mở ở chế độ mode có cho phép ghi file và tiếp đó dùng hàm fwrite để ghi dữ liệu.

Vì vậy mà việc ghi file sẽ 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.

<?php
$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
{
    echo 'Mở file thành công <br>';
    fwrite($fp,'Đã mở file thành công, hãy tiếp tục thao tác mới');
}
?>

Đóng File

Quá trình làm việc với một file trong PHP diễn ra như sau: Mở file –> Thao tác (Đọc, Ghi ) –> Đóng file. Quy trình này là mặc định đối với nhiều ngôn ngữ lập trình khác nhau, chúng ta luôn phải tuân thủ theo quy trình đã mở thì phải đóng.

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 và thu hồi tài nguyên hệ thống.

Để đóng file ta dùng hàm fclose($fp). Trong đó $fp là đối tượng trả về lúc bạn mở file.

<?php
$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
{
    echo 'Mở file thành công <br>';
    fwrite($fp,'Đã mở file thành công, hãy tiếp tục thao tác mới');
    fclose($fs); //đóng file
}
?>

Vì thế những ví dụ ở phần đọc file bạn đều phải bổ sung thêm hàm đóng file vào thì code mới đúng và hoàn chỉnh các bạn nhé!

Các hàm xử lí file khác

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

Trong PHP có cung xấp cho chúng ta hàm file_exists($path) để kiểm tra sự tồn tại của file, hàm sẽ trả về true nếu file tồn tại và ngược lại false nếu không. Trong đó $path là đường dẫn đến file cần test.

Bạn cũng có thể sử dụng hàm này khi bạn tạo ra một tập tin mới và bạn muốn đảm bảo rằng các tập tin chưa từng tồn tại trên server.

<?php
if (file_exists('STDIO.txt'))
{
    echo 'File exists';
}
?>

Kiểm tra cấp quyền với file

Để kiểm tra file có được cấp quyền gì không thì chúng ta dùng hàm is_writable() . Hàm này sẽ trả về true nếu được quyền ghi và ngược lại false nếu không được quyền ghi.

<?php
$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, 'Được phép ghi');}
    else{
        echo 'Không Được phép ghi';}
    fclose($fp);
}

Lấy nội dung của file hàm file_get_contents

Cú pháp: file_get_contents($path)

Trong đó $path là đường dẫn đến file, hoặc 1 đường link URL dẫn tới trang web chứa file.

echo file_get_contents('demo.txt');

Đổ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 đè.

rename('demo.txt', 'newdemo.txt');

Copy file

Cú pháp: copy($source, $newpath)

Trong đó $source là path file cần copy và $newpathlà path file cần di chuyển tới.

copy('demo.txt', 'newdemo.txt');

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.

<?php
if (file_exists('demo.txt'))
{
    if(unlink('demo.txt'))
        echo 'Xoá thành công';
    else
        echo 'Không thành công';
}
?>

Ghi toàn bộ nội dung chuỗi ra file

Đây là cách ghi toàn bộ một chuỗi ra file ngắn gọn (thay cho việc phải sử dụng fopen, fread, fclose).

Cú pháp: file_put_contents($path, $contents)

file_put_contents('demo.txt', 'đây là nội dung sẽ được ghi ra file');

Tạo một thư mục ( folder) mới

Cú pháp: mkdir($path)

Trong đó $path là đường dẫn đến folder cần tạo.

Ví dụ:

mkdir('webdevelopment/php/phpcanban');
Lưu ý: tên folder cuối cùng lằn trong link 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.
Từ ví dụ trên ta sẽ nhận ra rằng ta đã phải có folder webdevelopment và trong nó là folder con có tên là php thì mới tạo thêm được.

Kiểm tra sự tồn tại đường dẫn thư mục

Cú pháp kiểm tra sự tồn tại của thư mục trong php là is_dir(path)

if(is_dir('phpcanban')){
    echo 'Folder này hiện đang tồn Tại';
}

Kết thúc

Qua bài viết trên mình đã nói qua về những hàm cần thiết về xử lý file cần biết trong PHP, Các bạn hãy thao khảo tìm mốt số bài tập thực hành để nâng cao hiểu biết của bản thân hơn nhé!

Ngoài ra còn rất nhiều hàm xử lý về file khác mà mình chưa nói tới, các bạn có thể tham khảo tại đây.

Bài viết tiếp theo mình sẽ sơ lược qua về vấn đề xử lý thời gian, ngày tháng trong PHP các bạn hãy đón đọc nhé!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Bài 16: Các hàm xử lý và làm việc với file trong PHP appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-16-cac-ham-xu-ly-va-lam-viec-voi-file-trong-php/feed/ 0
Vai trò Apache và PHP Hoạt Động Cùng Nhau Như Thế Nào https://tanhongit.com/vai-tro-apache-va-php-hoat-dong-cung-nhau-nhu-the-nao/ https://tanhongit.com/vai-tro-apache-va-php-hoat-dong-cung-nhau-nhu-the-nao/#respond Wed, 19 Feb 2020 12:35:47 +0000 https://tanhongit.com/?p=2009 Hầu hết chúng ta đều biết Apache là một phần mềm web server trong khi đó PHP là một ngôn ngữ kịch bản scripting language được sử dụng phổ biến trên server cùng với Apache. Tuy nhiên chính xác thì vai trò cũng như chức năng của Apache và PHP cụ thể như thế nào và chuyện gì xảy […]

The post Vai trò Apache và PHP Hoạt Động Cùng Nhau Như Thế Nào appeared first on Tân Hồng IT.

]]>
Hầu hết chúng ta đều biết Apache là một phần mềm web server trong khi đó PHP là một ngôn ngữ kịch bản scripting language được sử dụng phổ biến trên server cùng với Apache. Tuy nhiên chính xác thì vai trò cũng như chức năng của Apache và PHP cụ thể như thế nào và chuyện gì xảy ra nếu chỉ server chỉ được cài đặt Apache hoặc PHP?

apache and php
Apache và PHP Hoạt Động Cùng Nhau Như Thế Nào

Trước tiên bạn cần nắm rõ được một request khi gửi tới server sẽ được xử lý như thế nào.

Vai Trò Của Apache

Khi một HTTP request được gửi tới server máy chủ thì nó sẽ được xử lý trước tiên bởi một phần mềm được gọi là HTTP web server (hay thường gọi vắn tắt là phần mềm web server hoặc web server) được cài đặt trên server. Hiện nay Apache là một trong những phần mềm web server được sử dụng phổ biến trên thế giới tuy nhiên không phải là phần mềm web server duy nhất, ngoài Apache chúng ta còn có thể sử dụng phần mềm web server khác cũng khá phổ biến có tên là NGINX (đọc là en-zin-iks).

Ví dụ sử dụng client (chẳng hạn như trình duyệt web) chúng ta thực hiện gửi một request tới server với địa chỉ http://localhost/index.html, máy chủ khi nhận được request sẽ chuyển request này cho phần mềm web server để xử lý (trường hợp của chúng ta là Apache). Apache sẽ tìm kiếm tập tin index.html trong thư mục gốc và trả về cho client. Trường hợp không tìm thấy tập tin index.html Apache sẽ trả về lỗi 404 not found.

vai trò của apache

Tuy nhiên như bạn biết HTML là ngôn ngữ đánh dấu (markup language) và nó không thể thực hiện được các công việc như truy cập tới cơ sở dữ liệu, lưu trữ session, xử lý dữ liệu form… Để làm các công việc này chúng ta cần tới ngôn ngữ scripting như PHP (hoặc Ruby, Java…).

Vai Trò Của PHP

PHP là ngôn ngữ lập trình kịch bản giúp thực hiện các tác vụ mạnh mẽ như đã đề cập ở trên. Tuy nhiên PHP lại không phải là một phần mềm web server, nói cách khác việc xử lý HTTP request gửi tới server cần được xử lý bởi web server (Apache) như chúng ta đã tìm hiểu ở trên.

Để PHP có thể tham gia vào quá trình xử lý request của web server (Apache) thì chúng ta sẽ cần tích hợp một thư viện có tên là mô-đun PHP mod_php vào trong Apache web server.

Sau khi Apahce được tích hợp và kích hoạt mod_php thì lúc này khi server nhận được một request gửi tới từ phía client với địa chỉ URL là http://localhost/index.php nó vẫn sẽ chuyển request này cho Apache để xử lý như thường lệ. Tuy nhiên lúc này Apache nhận thấy tập tin index.php là một tập tin PHP và do đó nó sẽ thông qua mod_php để nhờ PHP xử lý tập tin index.php này và trả về kết quả. Sau khi nhận được kết quả xử lý từ PHP, Apache lúc này mới chuyển trả kết quả về cho client.

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Vai trò Apache và PHP Hoạt Động Cùng Nhau Như Thế Nào appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/vai-tro-apache-va-php-hoat-dong-cung-nhau-nhu-the-nao/feed/ 0
Mô hình Client-Server là gì và cách hoạt động Client-Server https://tanhongit.com/mo-hinh-client-server-la-gi-va-cach-hoat-dong-client-server/ https://tanhongit.com/mo-hinh-client-server-la-gi-va-cach-hoat-dong-client-server/#respond Wed, 19 Feb 2020 12:22:49 +0000 https://tanhongit.com/?p=2004 Mô hình client-server là một mô hình nổi tiếng trong mạng máy tính, được áp dụng rất rộng rãi và là mô hình của mọi trang web hiện có. Ý tưởng của mô hình này là máy con (đóng vài trò là máy khách) gửi một yêu cầu (request) để máy chủ (đóng vai trò […]

The post Mô hình Client-Server là gì và cách hoạt động Client-Server appeared first on Tân Hồng IT.

]]>
Mô hình client-server là một mô hình nổi tiếng trong mạng máy tính, được áp dụng rất rộng rãi và là mô hình của mọi trang web hiện có. Ý tưởng của mô hình này là máy con (đóng vài trò là máy khách) gửi một yêu cầu (request) để máy chủ (đóng vai trò người cung ứng dịch vụ), máy chủ sẽ xử lý và trả kết quả về cho máy khách.

Trong mô hình này, chương trình ứng dụng được chia thành 2 thành phần: Server Client. Client hay còn gọi là máy khách, nó bao gồm máy tính và các thiết bị điện tử nói chung. Server hay còn gọi là máy chủ, là nơi cài đặt các chương trình dịch vụ và lưu trữ tài nguyên.

mo hinh client server
Mô hình client – server

Việc yêu cầu của máy khách, đáp ứng, xử lý, và phản hồi của máy chủ tạo thành một dịch vụ. Dịch vụ này hoạt động trên nền web nên nó được gọi là dịch vụ web (hay web service).

Ngoài ra, việc giao tiếp giữa Client với Server phải dựa trên các giao thức chuẩn. Các giao thức chuẩn được sử dụng phổ biến nhất hiện nay là : giao thức TCP/IP, giao thức SNA của IBM, OSI, ISDN, X.25 hay giao thức LAN-to-LAN NetBIOS.

Vì sao các Website thường sử dụng mô hình client-server

  • Dữ liệu và tài nguyên được tập trung lại và tăng tính toàn vẹn của các dữ liệu.
  • Sự linh động trong việc mở rộng được hệ thống mạng.
  • Không phụ thuộc vào cùng một nền tảng, chỉ cần chung một định dạng giao tiếp (protocol) là có thể hoạt động được.

Chỉ có điều nhược điểm của mô hình này là tính an toàn và bảo mật các thông tin trên mạng. Do phải trao đổi các dữ liệu giữa hai máy ở hai khu vực khác nhau nên dễ dàng xảy ra hiện tượng thông tin trên mạng bị mất bí mật và từ đó vai trò của quản trị mạng trở nên quan trọng lên rất nhiều.

Bảng so sánh mô hình client server với các mô hình khác

Mô hình mạng / tiêu chí đánh giá Client Server Peer-to-Peer Hybrid
Khả năng bảo mật thông tin và độ an toàn Khả năng bảo mật và an toàn thông tin cao. Có thể điều chỉnh quyền truy cập thông tin. Khả năng bảo mật và an toàn thông tin kém. Phần lớn phụ thuộc vào mức độ quyền được chia sẻ. Khả năng bảo mật và an toàn thông tin cao. Có thể điều chỉnh quyền truy cập thông tin.
Khả năng cài đặt Cài đặt khá khó khăn. Cài dặt dễ dàng. Cài đặt khá khó khăn.
Yêu cầu về phần cứng và phần mềm Bao gồm:+ Máy chủ+ Hệ điều hành

+ Phần cứng

Chỉ cần ít phần cứng bổ sung. Ngoài ra không cần máy chủ và hệ điều hành như 2 mô hình trên. Bao gồm:+ Máy chủ+ Hệ điều hành

+ Phần cứng

Yêu cầu về quản trị mạng Cần phải có quản trị mạng Không cần quản trị mạng Cần phải có quản trị mạng
Có khả năng xử lý và lưu trữ tập trung không? Không Không
Chi phí cài đặt Chi phí cao Chi phí thấp Chi phí thấp

Cách thức mô hình client server hoạt động như thế nào ?

Quy trình hoạt đông được chia làm 2 bước:

Client

Các máy trạm trong mô hình này gọi là máy khách (client). Đây là nơi tiếp nhận những thao tác yêu cầu từ người dùng và sau đógởi các yêu cầu xử lý về máy chủ (server).

Phần phía Client là nơi trung gian tổ chức giao tiếp giữa người dùng với môi trường làm việc trên máy khách (client) và với phía Server. Sau khi tiếp nhận yêu cầu của người dùng, máy khách client sẽ thành lập các query string để gửi về phía Server.

Server

Phần phía Server quản lý các giao tiếp môi trường giữa Server và với các Client, tiếp nhận các yêu cầu dưới dạng các xâu ký tự (query string). Sau khi phân tích các query string được request từ máy khách client, phần phía Server sẽ xử lý dữ liệu và gửi kết quả trả lời về phía các Client.

Sau đó sẽ hiện lên màn hình đến cho người dùng.

Ưu điểm mô hình client-server là gì?

Ưu điểm của mô hình client server là với mô hình client server thì mọi thứ dường như đều nằm trên bàn của người sử dụng, nó có thể truy cập dữ liệu từ xa (bao gồm các công việc như gửi và nhận file, tìm kiếm thông tin,…) với nhiều dịch vụ đa dạng mà mô hình cũ không thể làm được.

Mô hình client-server cung cấp một nền tảng lý tưởng cho phép tích hợp các kỹ thuật hiện đại như mô hình thiết kế hướng đối tượng, hệ chuyên gia, hệ thông tin địa lý (GIS)…

Nhược điểm mô hình client server là gì?

Như đã nói ở các phần trên, nhược điểm duy nhất của mô hình này là tính an toàn và bảo mật các thông tin trên mạng. Do phải trao đổi các dữ liệu giữa hai máy ở hai khu vực khác nhau ở xa nhau nên dễ dàng xảy ra hiện tượng thông không được an toàn.

Một số ví dụ về mô hình client server

Mail Server

Ở bên phía Client, người dùng soạn thảo Email và sẽ gửi đến Mail Server, phía bên Mail Server sẽ tiếp nhận và lưu trữ, tìm kiếm địa chỉ của mail được gửi đến và gửi đi.

Web Server

Lưu trữ các trang Web. khi người dùng ở phía máy Client nhập địa chỉ của trang web, Client sẽ gửi yêu cầu đến máy chủ Web và máy chủ Web sẽ gửi toàn bộ nội dung của trang web về cho phía Client.

File Server

Lưu trữ các tập tin. Nhận và truyền đi các tập tin về phía Client , người dùng có thể download – upload các tập tin lên Server qua Web browser hoặc là giao thức FTP

Các cấu hình cơ sở dữ liệu Client/Server

Nhìn chung mọi ứng dụng cơ sở dữ liệu đều bao gồm các phần:

  • Thành phần xử lý ứng dụng (Application processing components)
  • Thành phần phần mềm cơ sở dữ liệu (Database software componets)
  • Bản thân cơ sở dữ liệu (The database itself)

Các mô hình về xử lý cơ sở dữ liệu khác nhau là bởi các trường hợp của 3 loại thành phần nói trên định vị ở đâu. Bài viết này này xin giới thiệu 5 mô hình kiến trúc dựa trên cấu hình phân tán về truy nhập dữ liệu của hệ thống máy tính Client/Server.

  1. Mô hình cơ sở dữ liệu tập trung (Centralized database model)
  2. Mô hình cơ sở dữ liệu theo kiểu file – server (File – server database model)
  3. Mô hình xử lý từng phần cơ sở dữ liệu (Database extract processing model)
  4. Mô hình cơ sở dữ liệu Client/Server (Client/Server database model)
  5. Mô hình cơ sở dữ liệu phân tán (Distributed database model)

Ngoài ra ta còn có một mô hình ngược lại là mô hình master-slaver, trong đó máy chủ (đóng vai trò ông chủ) sẽ gửi dữ liệu đến máy con (đóng vai trò nô lệ) bất kể máy con có cần hay không.

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Mô hình Client-Server là gì và cách hoạt động Client-Server appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/mo-hinh-client-server-la-gi-va-cach-hoat-dong-client-server/feed/ 0
Bài 15: Session trong PHP https://tanhongit.com/bai-15-session-trong-php/ https://tanhongit.com/bai-15-session-trong-php/#respond Tue, 18 Feb 2020 17:21:21 +0000 https://tanhongit.com/?p=1985 Ở bài 14 mình đã cho các bạn biết về khái niệm và cách thiết lập cookie trong PHP, tiếp tục series học PHP căn bản, sang bài này mình sẽ giới thiệu Session trong PHP là gì, hiểu nó và cách sử dụng nó như thế nào! Session là một biến được sử dụng […]

The post Bài 15: Session trong PHP appeared first on Tân Hồng IT.

]]>
bài 14 mình đã cho các bạn biết về khái niệm và cách thiết lập cookie trong PHP, tiếp tục series học PHP căn bản, sang bài này mình sẽ giới thiệu Session trong PHP là gì, hiểu nó và cách sử dụng nó như thế nào!

Session là một biến được sử dụng để lưu lại dữ liệu của người sử dụng website hoặc là lưu trữ tùy chọn cấu hình hệ thống cho người dùng. Không giống với cookie, biến session được lưu trên một tập tin trên máy chủ.

session trong php
Bài 15: Session trong PHP

Các ứng dụng thường dùng đối với Session

  • Session dùng theo dõi và kết nối giữa các phiên làm việc của người dùng
  • Session dùng để tạo các ứng dụng giỏ hàng, đăng nhập,…
  • Đếm sngười dùng đang online,…
  • Bạn muốn truyền giá trị từ trang này sang trang khác.
  • Thay thế cho cookie nếu trình duyệt đó không hỗ trợ cookies.

Quy cách mà Session hoạt động

Khi một session bắt đầu, những điều sau sẽ xảy ra:

  • Đầu tiên, PHP tạo một định danh duy nhất cho session cụ thể đó, định danh này là chuỗi kí tự ngẫu nhiên của 32 số hexa, như 3c7foj34c3jj973hjkop2fc937e3443.
  • Một cookie được gọi là PHPSESSID sẽ được gửi tự động đến máy tính người dùng để lưu trữ chuỗi định danh session duy nhất ở trên.
  • Một file được tạo tự động trên Server trong thư mục tạm thời đã được chỉ định và nó mang tên của định danh duy nhất và được bắt đầu bằng sess_. Ví dụ như: sess_3c7foj34c3jj973hjkop2fc937e3443.

Khi PHP script muốn lấy giá trị từ một biến session, PHP tự động lấy chuỗi định danh session duy nhất này từ PHPSESSID cookie, sau đó tìm file mang tên đó trong thư mục tạm thời của nó, một xác thực có thể được hoàn thành bằng việc so sánh các giá trị đó.

Một session kết thúc khi người dùng tắt trình duyệt hoặc sau khi rời khỏi site này, Server sẽ chấm dứt session sau một thời gian đã định trước, thường là 30 phút.

Đăng ký bắt đầu tạo một 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.

Đầu tiên hàm này kiểm tra một session đã được bắt đầu hay chưa, nếu chưa thì nó sẽ bắt đầu một session. Luôn nhớ rằng lời gọi hàm session_start() này được đề nghị đặt ở đầu của mỗi file (trước các thẻ html).

Các biến session được lưu trữ trong mảng liên hợp là $_SESSION[”]. Các biến này có thể được truy cập trong suốt vòng đời của một phiên session.

<?php
// bắt đầu session (luôn đặt ở đầu file)
session_start();
?>
<!DOCTYPE html>
<html>
<body>
<?php
// Tạo biến session
$_SESSION["user_id"] = "123456";
$_SESSION["username"] = "tanhongit";
echo "Các biến session đã được tạo.";
?>
</body>
</html>
<?php	//Start the session	
session_start();	
?>	
<!DOCTYPE html>	
<html>	
<body>	
<?php	
//Set session variables	
$_SESSION["favcolor"] = "green";	
?>

Lấy và đọc giá trị của Session trong PHP

Bạn hãy tạo 2 file có nội dung code bên dưới. Bạn hãy chạy làn lượt từng file trên trình duyệt và xem kết quả nhé!

Lưu ý rằng các biến session không được chuyển riêng lẻ đến từng trang mới, thay vào đó chúng được truy cập từ session mà chúng ta khai báo ở đầu mỗi trang (session_start()) và các giá trị biến session được lưu trữ trong biến toàn cầu $_SESSION:

<?php
// bắt đầu session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
 
<?php
// Tạo biến session
$_SESSION["user_id"] = "123456";
$_SESSION["username"] = "tanhongit";
echo "Các biến session đã được tạo.";
?>
</body>
</html>
<?php
// bắt đầu session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
    <?php
    // hiển thị các biến session được tạo ở file session_demo1.php
    echo "user_id là: " . $_SESSION["user_id"] . "<br>";
    echo "username là: " . $_SESSION["username"];
    ?>
</body>
</html>

kết quả bạn sẽ thấy sau khi chạy lần lượt 2 file là thông tin của session được lưu lại:

user_id là: 123456
username là: tanhongit

Ngoài ra để tránh gặp lỗi, các bạn hãy nhớ luôn sử dụng hàm isset() để kiểm tra xem nó có tồn tại hay không rồi hẵn láy nhé! Ví dụ về hàm isset() mình đã có làm nhiều trong các bài viết trước rồi, và mình cũng sẽ có viết riêng 1 bài nói về hàm isset() cho các bạn tham khảo nhé!

Để in tất cả các biến session, sử dụng hàm print_r():

print_r($_SESSION);

Chỉnh sửa, thay đổi giá trị của biến Session trong PHP

Để thay đổi giá trị của một session, ta chỉ cần thiết lập giá trị mới đè lên giá trị cũ của session đó.

<?php
// bắt đầu session
session_start();
?>
<!DOCTYPE html>
<html>
<body>
    <?php    
    $_SESSION["username"] = "tanhongitcom";
    print_r($_SESSION);
    ?>
</body>
</html>

Kết quả: Array ( [user_id] => 123456 [username] => tanhongitcom )

Qua ví dụ dưới đây sẽ cho các bạn thấy rõ hơn về sự thay đổi giá trị của Session.

Ví dụ: Xuất ra số lần truy cập vào trang web thông qua session

<?php
session_start();

if (isset($_SESSION['count'])) {
    $_SESSION['count'] += 1;
} else {
    $_SESSION['count'] = 1;
}
$mess = "Bạn đã truy cập trang này " .  $_SESSION['count'] . " lần trong session này.";
?>
<html>
<body>
    <?php echo ($mess); ?>
</body>
</html>

Sau khi bắt đầu 1 session, ta tạo 1 biến session có tên là count, tiếp tục với biểu thức điều kiện if sẽ kiểm tra số lần load vào trang này và xuất ra tổng số lần. Bạn thử load lại nhiều lần sẽ thấy giá trị của nó thay đổi lần lượt tăng thêm 1.

Các xoá, huỷ một session trong PHP

  • Xóa tất cả biến session đã tạo ta sử dựng hàm session_unset()
  • Xóa luôn toàn bộ session, ta sử dụng hàm session_destroy()
  • Hoặc sử dụng hàm unset() để xóa một biến.

Trong đó hàm unset() dùng để giải phóng một biến ra khỏi bộ nhớ.

// Xóa session username
unset($_SESSION['username']);
  
// Xóa hết session
session_destroy();

BÀI TẬP

  1. Xây dựng ứng dụng lưu phiên đăng nhập người dùng
  2. Xây dựng ứng dụng lưu thông tin giỏ hàng

Kết thúc

Vậy là qua bài viết trên mình đã giới thiệu cho các bạn về session, qua 2 bài vừa rồi nói về cookie, session là 2 khái niệm bạn sẽ phải đụng chạm rất nhiều vào các ứng dụng, các dự án sau này. Các bạn hãy áp dụng thật nhiều để nắm rõ cách sử dụng và hoạt động của nó nhé! Qua bài viết tiếp theo chúng ta sẽ qua một khái niệm mới về file và các hàm xử lý file trong PHP.

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

CHÚC CÁC BẠN THÀNH CÔNG VÀ VUI VẺ

The post Bài 15: Session trong PHP appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-15-session-trong-php/feed/ 0
Bài 13: Phương thức GET và POST trong PHP https://tanhongit.com/bai-13-phuong-thuc-get-va-post-trong-php/ https://tanhongit.com/bai-13-phuong-thuc-get-va-post-trong-php/#respond Tue, 18 Feb 2020 11:45:18 +0000 https://tanhongit.com/?p=1978 Tiếp tục series học PHP căn bản, ở bài 13 này chúng ta sẽ học về 2 phương thức truyền tải dữ liệu thông dụng trong mô hình Client-Server đó là Get và Post. Các bạn có thể xem lại khái niệm của Client-Server.  Phương thức GET trong PHP Khi người dùng phía client sử […]

The post Bài 13: Phương thức GET và POST trong PHP appeared first on Tân Hồng IT.

]]>
Tiếp tục series học PHP căn bản, ở bài 13 này chúng ta sẽ học về 2 phương thức truyền tải dữ liệu thông dụng trong mô hình Client-Server đó là GetPost. Các bạn có thể xem lại khái niệm của Client-Server. 

get va post trong php
Phương thức GET và POST trong PHP

Phương thức GET trong PHP

Khi người dùng phía client sử dụng phương thức GET gửi dữ liệu lên server thông qua các tham số (parameter) trên thanh địa chỉ URL của Browser. Các tham số trên URL bắt đầu bằng dấu chấm hỏi ( ? ) và được ngăn cách với nhau bởi dấu và ( & ). Server sẽ phân tích tất cả những thông tin đằng sau dấu hỏi (?) chính là phần dữ liệu mà Client gửi lên.

Ví dụ: ta có URL https://tanhongit.net/?p=7740&preview=true

Khi truy cập, từ Server sẽ hiểu giá trị p = 7740 và giá trị preview = true.

Lưu ý 1: khi muốn truyền nhiều cặp giá trị lên Server chúng ta sẽ sử dụng dấu và ( & ), và vị trí các cặp giá trị không quan trọng. Nghĩa là từ ví dụ trên, giá trị preview nằm trước giá trị p cũng được.

Đó là ví dụ về phần Client truy cập từ thanh địa chỉ URL. Chúng ta bây giờ sẽ chuyên sang các vấn đề trong code PHP.

Trong code khi các dữ liệu mà Client gửi lên bằng phương thức GET đều được lưu trong một biến toàn cục mà PHP tự tạo ra đó là biến $_GET. ( $_GET là một biến toàn cục lưu trữ dưới dạng mảng bất tuần tự.)

<?php
$_GET = [
    'name' => 'TanHongIT',
    'website' => 'tanhongit.net'
];
?>  //biến $_GET là một mảng chứa nhiều phần tử

Lưu ý về phương thức GET trong PHP

  • Phương thức GET được giới hạn gửi tối đa chỉ 1024 ký tự.
  • Không bao giờ sử dụng phương thức GET nếu gửi password hoặc thông tin nhay cảm lên Server.
  • GET không thể gửi dữ liệu nhị phân, ví dụ như hình ảnh hoặc các loại tài liệu lên Server.
  • Dữ liệu gửi bởi phương thức GET có thể được truy cập bằng cách sử dụng biến môi trường QUERY_STRING.
  • PHP cung cấp mảng liên hợp $_GET để truy cập tất cả các thông tin đã được gửi bởi phương thức GET.

Ví dụ thực hành

Ví dụ 1: Bạn khởi tạo 1 file demo.php nằm trong thư mục WWW của WampServer hoặc tạo trong thư mục htdocs nếu bạn dùng Xampp, sau đó bạn dán đoạn code bên dưới vào.

<?php
$_GET = [
    'title' => 'TanHongIT',
    'website' => 'tanhongit.net'
];
?> 
<!DOCTYPE html>
<html lang="en">
<body>
    <form action="<?php $_PHP_SELF ?>" method="GET">
        <?php foreach ($_GET as $key => $value){  
            echo $key . ' - ' . $value . '<br>';
        } ?>
        <input type="submit">
    </form>
</body>
</html>

khi truy cập vào http://localhost/demo.php?title=tanhongit&website=tanhongit.net hoặc http://localhost//demo.php thì kết quả đều ra như sau:

title - TanHongIT
website - tanhongit.net

Ở ví dụ trên mình sử dụng phương thức GET ngay trong 1 file duy nhất, mình đã sử dụng vòng lặp Foreach để lấy toàn bộ key và value có trong biến $_GET là một mảng có nhiều phần tử.

GET còn có thể sử dụng để truyền dữ liệu từ file này sang file khác. hãy làm tiếp ví dụ 2.

Ví dụ 2: Tạo 2 file, 1 file có tên get_demo.php và một file demo.html

Đầu tiên, ở trong file demo.html ta sẽ tạo 1 form để lấy dữ liệu nhập vào từ bàn phím và gửi lên server.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div class="container">
        <form action="get_demo.php" method="GET"> <!--thêm thuộc tính action chuyển hướng đến file get_demo.php -->
            <div class="form-group">
                <label for="">Title</label>
                <input type="text" class="form-control" id="" placeholder="Nhập vào title..." name="title"> <!--tạo một trường có tên là title để truyền dữ liệu lên file get_demo.php-->
            </div>

            <div class="form-group">
                <label for="">Website</label>
                <input type="text" class="form-control" id="" placeholder="Nhập vào url website..." name="web"> <!--tạo một trường có tên là web để truyền dữ liệu lên file get_demo.php-->
            </div>

            <button type="submit" class="btn btn-primary">Submit</button>
        </form>
    </div>
</body>
</html>

Ở file demo.html mình có tạo 2 trường nhập liệu trong form có tên là title web để truyền dữ liệu nhập từ bàn phím vào file get_demo.php

Tiếp theo ta viết code để phía Server xuất ra màn hình sau khi nó đã nhận dữ liệu được nhập vào từ file demo.html thông qua file get_demo.php

<?php
echo 'Kết quả nhập liệu của bạn là: <br>';
echo 'Title: ' . $_GET['title'] . '<br>';
echo 'Website: ' . $_GET['web'];

Hãy test thử bằng cách chạy file demo.html lên theo đường link http://localhost/demo.html sau đó nhập vào các trường dữ liệu và nhấn vào button Submit. Lập tức Server sẽ tự động chuyển link sang file get_demo.php và xuất ra thông tin bạn đã nhập liệu.

demo get php url method get php

Lưu ý 2: Vì đây là phương thức GET nên khi truyền dữ liệu bạn sẽ có 2 cách truyền, 1 là truyền dữ liệu từ form sau đó gửi lên Server, 2 là ta có thể truyền tham số trực tiếp thông qua paramter trên địa chỉ URL

Ví dụ: http://localhost/get_demo.php?title=hello&web=chaomoinguoi.com

Kết quả nhận được sau khi Enter sẽ như hình dưới:

Lưu ý 3: Dùng phương thức GET thì dữ liệu luôn được gửi một cách tường minh, chúng ta có thể thấy mọi thông tin trên URL và có thể chỉnh sửa trực tiếp cho nên nó không bảo mật tốt.
Vì thế khi muốn tạo dữ liệu nào đó ta không nên sử dụng phương thức GET mà phải dùng POST vì GET luôn để lộ thông tin trên địa chỉ URL nên rất dễ bị hack đánh cắp dữ liệu.

Phương thức POST trong PHP

Phương thức POST sẽ trái ngược với phương thức GET về tính bảo mật cũng như tốc độ.

Về phương thức GET, chúng ta có thể xem thông tin trên thanh địa chỉ URL, dữ liệu được gửi đi bằng GET sẽ thông qua các paramter trên URL. POST thì ngược lại, nó không gửi dữ liệu đi bằng paramter trên URL mà thông qua HTTP header, vì vậy việc bảo mật phụ thuộc vào giao thức HTTP mà website đó đang sử dụng.

Parameters được truyền trong request body nên có thể truyền dữ liệu lớn, hạn chế tùy thuộc vào cấu hình của Server. Không cache và bookmark được cũng như không được lưu lại trong browser history. POST không có bất kì hạn chế nào về kích thước dữ liệu sẽ gửi, có thể gửi dữ liệu nhị phân, hình ảnh.

Nội dung dữ liệu được gửi đi bằng phương thức POST sẽ luôn bị ẩn đi và chúng ta không thể thấy được.

Phương thức Post trong mô hình Client-Server

Các bạn hãy tìm hiểu và làm ví dụ bên dưới để hiểu cách phương thức POST truyền dữ liệu lên Server như thế nào nhé!

Phía Client gửi lên

Với phương thức GET, dữ liệu sẽ được thấy trên URL, nhưng phương thức POST thì hoàn toàn ngược lại, POST sẽ phải gửi dữ liệu qua form HTML và các giá trị sẽ được định nghĩa trong các thẻ input gồm các kiểu (textbox, radio, checkbox, password, textarea, hidden) và được nhận dang thông qua tên (name) của các thẻ input đó.

Bạn hãy tạo file demo.html trong thư mục WWW của WampServer hoặc tạo trong thư mục htdocs nếu bạn dùng Xampp và chèn đoạn code bên dưới vào.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div class="container">
        <form action="post_demo.php" method="POST"> <!--thêm thuộc tính action chuyển hướng đến file post_demo.php và sử dụng phương thức method = post-->
            <div class="form-group">
                <label for="">Title</label>
                <input type="text" class="form-control" id="" placeholder="Nhập vào title..." name="title"> <!--tạo một trường có tên (name) là title để truyền dữ liệu lên file post_demo.php-->
            </div>
            <div class="form-group">
                <label for="">Website</label>
                <input type="text" class="form-control" id="" placeholder="Nhập vào url website..." name="web"> <!--tạo một trường có tên (name) là web để truyền dữ liệu lên file post_demo.php-->
            </div>
            <button type="submit" class="btn btn-primary">Submit</button>
        </form>
    </div>
</body>
</html>

Phần code trên mục đích dùng để nhập liệu từ phía Client để gửi lên Server. Giờ chúng ta sang phần Server.

Phía Server nhận dữ liệu và trả về

Tất cả các dữ liệu gửi bằng phương thức POST đều được lưu trong một biến toàn cục $_POST do PHP tự tạo ra, vì thế từ bây giờ bạn chỉ cần thao tác lấy hoặc gửi dữ liệu thông qua biến $_POST này là được.

Ở file demo.html mình có tạo 2 trường nhập liệu trong form có tên là title web để truyền dữ liệu nhập từ bàn phím vào file post_demo.php. Tiếp theo ta sẽ code trên file post_demo.php để lấy dữ liệu và xuất ra màn hình.

<?php
echo 'Kết quả nhập liệu của bạn là: <br>';
echo 'Title: ' . $_POST['title'] . '<br>';
echo 'Website: ' . $_POST['web'];

Hãy test thử bằng cách chạy file demo.html lên theo đường link http://localhost/demo.html sau đó nhập vào các trường dữ liệu và nhấn vào button Submit. Lập tức Server sẽ tự động chuyển link sang file post_demo.php và xuất ra thông tin bạn đã nhập liệu.

demo post php

Nhưng có một điều khác biệt ở đây bạn cần quan tâm đó là khi sử dụng GET, đường dẫn URL sẽ tiết lộ bất kỳ thông tin mà bạn đã nhập liệu, còn khi đã dùng POST thì bị ẩn.

Điều này chứng minh POST sẽ có tính bảo mật hơn GETPOST sẽ phù hợp với các chức năng về tạo dữ liệu, đăng ký, đăng nhập,…

Những lưu ý cần biết trong phương thức POST trong PHP

  • Phương thức POST không có bất kì hạn chế nào về kích thước dữ liệu sẽ gửi.
  • Phương thức POST có thể sử dụng để gửi ASCII cũng như dữ liệu nhị phân.
  • Dữ liệu gửi bởi phương thức POST thông qua HTTP header, vì vậy việc bảo mật phụ thuộc vào giao thức HTTP. Bằng việc sử dụng Secure HTTP, bạn có thể chắc chắn rằng thông tin của mình là an toàn.
  • PHP cung cấp mảng liên hợp $_POST để truy cập tất cả các thông tin được gửi bằng phương thức POST.

Kiểm tra isset với GET và POST trong PHP

Trước khi lấy một dữ liệu nào đó từ client bạn phải kiểm tra nó đã tồn tại không rồi mới lấy.Vì nếu không kiểm tra trước khi lấy, phía client chưa cung cấp đầy đủ dữ liệu mà server lại nhận thì sẽ có lỗi ngay. Vì thế ở những trường hợp mà ta không chắc chắn một biến luôn tồn tại hoặc một trường dữ liệu được nhập đầy đủ thì hãy kiểm tra nó trước khi gửi request.

Để kiểm tra ta sẽ dùng hàm isset(). Hàm isset() trong PHP có chức năng kiểm tra xem biến có tồn tại hay không. Nó sẽ trả về TRUE nếu biến đó có tồn tại và ngược lại FALSE nếu biến đó không tồn tại. Hàm isset() sẽ dùng cho cả 2 phương thức GET và POST.

Cú pháp: isset($bien);

Trong đó: $bien là biến mà bạn muốn kiểm tra sự tồn tại.

Từ ví dụ về phần POST trong PHP ở trên, nếu bạn trực tiếp truy cập vào http://localhost/post_demo.php mà chưa nhập đầy đủ thông tin ở http://localhost/demo.html thì sẽ xuất hiện lỗi ngay.

Vậy từ ví dụ trên ta chỉ cần thêm vào file file post_demo.php như sau:

<?php
echo 'Kết quả nhập liệu của bạn là: <br>';
if (isset($_POST['title']) && isset($_POST['web'])) {
    echo 'Title: ' . $_POST['title'] . '<br>';
    echo 'Website: ' . $_POST['web'];
}

Bây giờ bạn hãy thử truy cập lại http://localhost/post_demo.php , nếu chưa đươc nhập đủ dữ liệu ở http://localhost/demo.html thì nó sẽ không hiện gì cả, còn nhập đầy đủ các trường dữ liệu thì nó mới hiện lên cho ta xem.

Kết luận: Hàm isset() thật sự rất hữu ích đối với chúng ta trong việc ràng buộc dữ liệu nên các bạn hãy thường xuyên sử dụng để hiểu rõ và áp dụng dễ dàng hơn sau này nhé!

So sánh giống và khác nhau giữa GET và POST

GET và POST hầu như chẳng có gì giống nhau ngoài tác dụng là truyền tải dữ liệu lên Server.

Cho nên mình sẽ nói về những đặc điểm khác nhau của 2 phương thức này nhé!

  1. Giới hạn dữ liệu: GET giới hạn gửi tối đa chỉ 1024 ký tự. Còn POST không có bất kì hạn chế nào về kích thước dữ liệu sẽ gửi.
  2. Khả năng: Phương thức POST có thể sử dụng để gửi ASCII cũng như dữ liệu nhị phân, các loại tệp, hình ảnh còn GET thì không.
  3. Tốc độ: GET nhanh hơn rất nhiều so với POST về quá trình thực thi – vì dữ liệu gửi đi luôn được web browser lưu cached lại. Khi dùng phương thức POST thì server luôn thực thi và trả kết quả cho client, còn dùng GET thì web browser cached sẽ kiểm tra có kết quả tương ứng đó trong bộ nhớ cached chưa, nếu có thì trả về ngay mà không cần đưa tới server.
  4. Bảo mật: Phương thức POST bảo mật hơn GET vì dữ liệu được gửi ngầm, không xuất hiện trên URL, mắt thường không nhìn thấy được và dữ liệu cũng không được lưu lại. Trong khi đó với GET thì dữ liệu gửi đi được tường minh bạn có thể hiển thị lại được các dữ liệu này trên URL.

Link tham khảo: https://www.diffen.com/difference/GET-vs-POST-HTTP-Requests

Khi nào nên dùng GET và POST trong PHP

Cả 2 phương thức đều có những ưu và nhược điểm khác nhau, vậy khi nào chúng ta nên dùng GET và khi nào nên dùng POST.

Phương thức GET có tốc độ thực thi nhanh như độ bảo mật lại rất kém nên GET chỉ nên dùng cho các công việc lấy dữ liệu từ server về client, như vậy quá trình truy xuất sẽ nhanh hơn.

Đối với POST sẽ có độ bảo mật cao nên phù hợp với các công việc tạo dữ liệu, upload, truyền tải thông tin lên server, những công việc mang tính bảo mật cao.

Ví dụ:

  • Khi upload hình ảnh lên web thì ta sẽ dùng POST, còn khi muốn tải ảnh từ Web server về ta sẽ dùng GET.
  • Khi đăng ký, đăng nhập hoặc comment vào một website ta sẽ dùng POST, còn khi lấy tin bài viết từ web ra thì ta dùng GET.
  • Khi request sử dụng câu lệnh select thì dùng GET, khi request có sử dụng lệnh insert update, delete thì nên dùng POST.
  • Ngoài ra khi cần xử lý các thông tin nhạy cảm ví dụ như email, password thì bạn phải sử dụng POST.

Kết thúc

Qua bài viết trên mình đã nếu ra những nội dung liên quan đến 2 phương thức method truyền tải dữ liệu thông dụng trong PHP là GET và POST. Các bạn cần phải hiểu rõ những tính chất của mỗi phương thức này và khi nào nên dùng nó tùy vào từng trường hợp cụ thể.

Nhưng có một điều lưu ý rằng những nội dung, dữ liệu quan trọng hoặc cần truyền tải một loại thông tin gì đó lên server thì ta phải dùng POST để tăng tính bảo mật cho Website nhé!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

via tanhongit.net

CHÚC CÁC BẠN THÀNH CÔNG

The post Bài 13: Phương thức GET và POST trong PHP appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-13-phuong-thuc-get-va-post-trong-php/feed/ 0
Bài 12: Chuỗi (String) Và Các Hàm Xử Lý Chuỗi Trong PHP https://tanhongit.com/bai-12-chuoi-string-va-cac-ham-xu-ly-chuoi-trong-php/ https://tanhongit.com/bai-12-chuoi-string-va-cac-ham-xu-ly-chuoi-trong-php/#respond Tue, 18 Feb 2020 10:11:55 +0000 https://tanhongit.com/?p=1967 Tiếp tục series học PHP căn bản, bài này mình sẽ giới thiệu về chuỗi (String) trong PHP và tổng hợp một số hàm xử lý chuỗi nhé! Về chuỗi mình trước đây đã từng có nói sơ qua ở bài 3. các kiểu dữ liệu trong PHP rồi, nhưng ở bài này mình sẽ […]

The post Bài 12: Chuỗi (String) Và Các Hàm Xử Lý Chuỗi Trong PHP appeared first on Tân Hồng IT.

]]>
Tiếp tục series học PHP căn bản, bài này mình sẽ giới thiệu về chuỗi (String) trong PHP và tổng hợp một số hàm xử lý chuỗi nhé! Về chuỗi mình trước đây đã từng có nói sơ qua ở bài 3. các kiểu dữ liệu trong PHP rồi, nhưng ở bài này mình sẽ giới thiệu lại luôn nhé!

string ham xu ly chuoi trong php
Chuỗi (String) và các hàm xử lý chuỗi trong PHP

Chuỗi trong PHP là gì?

Kiểu chuỗi trong PHP nói đơn giản nó là 1 dãy các ký tự, nó bao gồm string(chuỗi) và kiểu char(ký tự). Để khai báo chuỗi cho 1 biến, các bạn chỉ cần gán 1 chuỗi vào biến đó.

Chuỗi phải được bao quanh bằng dấu nháy đơn  hoặc dấu nháy kép . Chuỗi sử dụng nháy đơn là một chuỗi tĩnh, còn chuỗi sử dụng nháy kép là một chuỗi động, thay đổi tùy theo giá trị của biến.

Không có giới hạn về độ dài của chuỗi, có thể dài tùy ý nếu bộ nhớ cho phép.

Ví dụ:

$string_1 = "Chào mừng đến với tanhongit.net";
$string_2 = "abc 123 hello";

Các chuỗi được giới hạn bởi các dấu nháy kép được PHP xử lý bằng 2 cách sau đây:

  • 1. Các chuỗi kí tự bắt đầu với (\) được thay thế với một kí tự đặc biệt
  • 2. Các biến (bắt đầu với $) được thay thế bằng biểu diễn chuỗi của giá trị của nó.

Các quy tắc thay thế:

  • \n được thay thế bằng ký tự newline (dòng mới)
  • \r được thay thế bởi ký tự carriage-return, được hiểu là đưa con trỏ về đầu dòng nhưng không xuống dòng.
  • \t được thay thế bởi ký tự tab
  • $ được thay thế bằng một dấu $
  • \” được thay thế bằng một dấu nháy kép “
  • \\ được thay thế bằng một dấu nháy đơn \

Các hàm xử lý chuỗi trong PHP

strlen($string)

Hàm này có tác dụng đếm xem chuỗi $string có bao nhiêu ký tự và xuất ra màn hình độ dài của chuỗi.

<?php
      $string = 'tanhongit.net';
      echo strlen($string);
      //kết quả : 13
?>

strpos($string, $keyword)

Hàm này có tác dụng kiểm tra xem đoạn ký tự $keyword có tồn tại trong chuỗi $string hay không và xuất ra màn hình vị trí bắt đầu tồn tại của $keyword đó trong chuỗi.

<?php
      $string = 'tanhongit.net';
      echo strpos($string,'it');
      //kết quả trả về vị trí bắt đầu của chuỗi cần tìm: 7
?>

explode($separator, $string, $limit)

Hàm này sẽ chuyển một chuỗi $string thành một mảng gồm các phần tử là các ký tự trong mảng. Điều kiện tách mảng sẽ là chuỗi ký tự $separator, và giới hạn phần tử sẽ là $limit.

<?php
      $string = 'tanhongit.net welcome';
      var_dump(explode('t',$string)); //nếu không thêm vào giới hạn tách phần tử $limit thì chuỗi sẽ được tách tối đa phần tử
      /*array (size=4)
      0 => string '' (length=0)
      1 => string 'anhongi' (length=7)
      2 => string '.ne' (length=3)
      3 => string ' welcome' (length=8) */

      var_dump(explode('t',$string,2)); //có thêm giới hạn tách chuỗi chỉ gồm 2 phần tử
      /*array (size=2)
      0 => string '' (length=0)
      1 => string 'anhongit.net welcome' (length=20) */
?>

implode($separator, $array)

Hàm này có tác dụng nối tất cả các phần tử của mảng $array thành chuỗi với mỗi phần tử cách nhau bằng chuỗi $separator.

<?php
      $array = array('tanhongit.net','welcome','123456');
      var_dump(implode('-', $array)); 
      //kết quả: 'tanhongit.net-welcome-123456'

      var_dump(implode(' ', $array)); 
      //kết quả : 'tanhongit.net welcome 123456'
?>

str_word_count($string)

Hàm này sẽ đếm tổng số lượng trả về số từ trong chuỗi $string.

<?php
      $string = 'tanhongit.net welcome';
      var_dump(str_word_count($string));
      /*Kết quả: 3 */
?>

substr($string,$start,$length)

Hàm này có tác dụng cắt ra một chuỗi con nằm trong chuỗi $string bắt đầu từ ký tự có vị trí thứ $start và chiều dài chuỗi con là $length

<?php
      $string = 'tanhongit.net welcome';
      echo substr($string,0,9) . '<br>'; // output: tanhongit
      echo substr($string,-4) . '<br>'; // output: come
      echo substr($string,-4,3) . '<br>'; // output: com
      echo substr($string,5) . '<br>'; // output: ngit.net welcome
?>

Nếu $startsố dương thì vị trí bắt đầu sẽ tính từ trái sang phải trong chuỗi. Ngược lại, nếu $startsố âm thì vị trí bắt đầu sẽ được tính từ phải sang trái của chuỗi.

strstr($string, $start_string)

Tác dụng của hàm này sẽ tách một chuỗi con từ chuỗi $string được tính bắt đầu từ $start_string cho đến hết chuỗi cha.

<?php
      $string = 'tanhongit.net welcome';
      echo strstr($string,'net') . '<br>'; // output: net welcome
      echo strstr($string,'n') . '<br>'; // output: nhongit.net welcome
      echo strstr($string,'.') . '<br>'; // output: .net welcome
?>

strtolower($string)

Hàm có tác dụng chuyển chuỗi $string sang dạng chữ thường.

<?php
      $string = 'TANHONGIT.NET';
      echo strtolower($string); //output: tanhongit.net
?>

strtoupper($string)

Hàm có tác dụng chuyển đổi chuỗi $string sang dạng in hoa.

<?php
      $string = 'tanhongit.net';
      echo strtoupper($string); //output: TANHONGIT.NET
?>

strip_tags($string, $allow)

Hàm này sẽ loại bỏ toàn bộ các thẻ html có trong chuỗi $string, trừ các thẻ được cho phép $allow.

<?php
      $string = '<p><b><i>tanhongit.net</i></b></p>';
      echo strip_tags($string); //output: tanhongit.net
      echo strip_tags($string, '<b>'); //output : <b>tanhongit.net</b>
      echo strip_tags($string, '<i>'); //output : <i>tanhongit.net</i>
?>

 

Sẽ còn cập nhật…

Kết thúc

Bài viết này mình đã liệt kê một số hàm thường được sử dụng để xử lý chuỗi trong PHP, Nếu các bạn muốn xem thêm hãy truy cập link này để tham khảo nhé!

Vậy là trong lộ trình học php căn bản thì tới đây mình đã liệt kê hết các kiến thức về chuỗi giúp các bạn học tập. Cho nên sang bài tiếp theo chúng ta sẽ qua một số phương thức bắt buộc phải biết trong PHP nhé!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

via tanhongit.net

CHÚC CÁC BẠN THÀNH CÔNG

The post Bài 12: Chuỗi (String) Và Các Hàm Xử Lý Chuỗi Trong PHP appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-12-chuoi-string-va-cac-ham-xu-ly-chuoi-trong-php/feed/ 0
Bài 11: Các hàm xử lý mảng (Array) trong PHP https://tanhongit.com/bai-11-cac-ham-xu-ly-mang-array-trong-php/ https://tanhongit.com/bai-11-cac-ham-xu-ly-mang-array-trong-php/#respond Tue, 18 Feb 2020 09:54:49 +0000 https://tanhongit.com/?p=1962 Khái niệm và những vấn đề liền quan về các loại mảng có trong PHP mình đã giới thiệu ở bài 10 : Mảng trong PHP. Tiếp tục series học PHP căn bản, bài này mình sẽ liệt kê các hàm dùng để xử lý mảng hay dùng trong PHP để các bạn tiện tra […]

The post Bài 11: Các hàm xử lý mảng (Array) trong PHP appeared first on Tân Hồng IT.

]]>
Khái niệm và những vấn đề liền quan về các loại mảng có trong PHP mình đã giới thiệu ở bài 10 : Mảng trong PHP. Tiếp tục series học PHP căn bản, bài này mình sẽ liệt kê các hàm dùng để xử lý mảng hay dùng trong PHP để các bạn tiện tra cứu cũng như học tập nhé!

cac ham xu ly mang php
Bài 11: Các hàm xử lý mảng PHP

is_array($array)

Hàm có tác dụng kiểm tra xem một biến có phải mảng hay không. Trả về true nếu là mảng và ngược lại sẽ trả về false.

<?php
   $bien1 = array("tanhongit.net", "php căn bản");
   $bien2 = '';
   var_dump(is_array($bien1)); // Kết quả trả về true 
   var_dump(is_array($bien2)); // Kết quả trả về false
?>

in_array($value,$array)

Hàm có tác dụng kiểm tra xem mảng $array có tồn tại giá trị $value hay không. Nếu có sẽ trả về true và ngược lại trả về false.

<?php
   $bien1 = array("tanhongit.net", "php căn bản");
   var_dump(in_array("tanhongit.net",$bien1)); // Kết quả trả về true 
   var_dump(in_array("hello",$bien1)); // Kết quả trả về false
?>

array_values($array)

Chuyển mảng $array sang dạng mảng chỉ mục.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    var_dump(array_values($array));

    /* Kêt quả của mảng là array (size=2)
        0 => string 'tanhongit.net' (length=13)
        1 => string '123456' (length=6)
    ) */
?>

array_count_values($array)

Đếm số lần xuất hiện của các phần tử giống nhau trong mảng $array và trả về một mảng kết quả với các value là các giá trị đếm đó.

<?php
    $array = array('tanhongit.net', 'hello', '123456', 'hello');
    var_dump(array_count_values($array));
    /*array (size=3)
    'tanhongit.net' => int 1
    'hello' => int 2  //'hello xuất hiện 2 lần'
    123456 => int 1 */
?>

array_keys($array)

Hàm này có tác dụng trả về một dạng mảng chỉ mục mà trong mảng đó sẽ có phần tử là key của mảng ban đầu.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    var_dump(array_keys($array));

    /* kết quả : array (size=2)
  0 => string 'username' (length=8)
  1 => string 'password' (length=8)
     */
?>

array_change_key_case($array, $case)

Tác dụng của hàm này là chuyển tất cả các chỉ mục key trong mảng $array sang chữ hoa nếu $case = 1 và sang chữ thường nếu $case = 0.

Ta có thể dùng hằng số CASE_UPPER thay cho số 1 và CASE_LOWER thay cho số 0.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    $array = array_change_key_case($array,1);
    var_dump($array);

    /* kết quả : array (size=2)
  'USERNAME' => string 'tanhongit.net' (length=13)
  'PASSWORD' => string '123456' (length=6)
     */
?>

array_key_exists($key,$array)

Kiểm tra xem khoá $keytồn tại trong mảng $array hay không. Nếu có sẽ trả về true và trả về false nếu không có.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    var_dump(array_key_exists("username",$array)); //kết quả var_ dump sẽ trả về true
    var_dump(array_key_exists("hello",$array)); //kết quả var_ dump sẽ trả về false
?>

array_pop($array)

Tác dụng của hàm này sẽ cắt phần tử cuối cùng ra khỏi mảng.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    var_dump(array_pop($array)); //phần tử cuối cùng sẽ bị cắt mất khỏi mảng
    //kết quả output: '123456' 

    var_dump($array);
    //kết quả màn hình:  array (size=1)
    //'username' => string 'tanhongit.net' (length=13)
?>

Ta có thể xuất ra phần tử đã bị cắt từ hàm array_pop($array) bằng cách gán giá trị của nó vào một biến và xuất biến đó ra. Nhuw sau:

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    $pop = array_pop($array); //gán giá trị đã bị cắt cuối mảng vào 1 biến
    var_dump($array); // xuất mảng
    echo $pop; // xuất giá trị đã bị cắt khỏi mảng bởi hàm array_pop
?>

array_push($array,$value1,$value2…)

Hàm này có tác dụng thêm một hoặc nhiều phần tử vào cuối mảng với các các giá trị $value1, $value2 được truyền vào.

Nếu ta var_dump hàm array_push này thì kết quả màn hình sẽ trả về tổng cộng số lượng phần tử có trong mảng sau khi thêm.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    var_dump(array_push($array,"hello")); 
    //kết quả output: 3
    var_dump($array);
    /*kết quả: array (size=3)
    'username' => string 'tanhongit.net' (length=13)
    'password' => string '123456' (length=6)
    0 => string 'hello' (length=5) */
?>

array_shift($array)

Trái ngược với hàm array_pop, hàm array_shift sẽ cắt phần tử đầu tiên trong mảng $array ra khỏi mảng. Ta có thể xuất giá trị đã bị cắt khỏi mảng đó bằng cách gán giá trị của array_shift($array) vào 1 biến và xuất nó ra.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    $shift = array_shift($array); //gán giá trị của phần tử đầu tiên trong mảng đã bị cắt vào 1 biến
    var_dump($array);
    /*kết quả màn hình:  array (size=1)
    'password' => string '123456' (length=6)*/
    echo $shift; //giá trị của phần tử đầu tiên trong mảng đã bị cắt đi

array_unshift($array,$value1,$value2…)

Trái ngược với array_push, hàm array_unshift sẽ thêm một hoặc nhiều phần tử vào đầu mảng với các các giá trị $value1, $value2 được truyền vào.

Nếu ta var_dump hàm array_push này thì kết quả màn hình sẽ trả về tổng cộng số lượng phần tử có trong mảng sau khi thêm.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    var_dump(array_unshift($array,"hello")); 
    //kết quả output: 3
    var_dump($array);
    /*kết quả: array (size=3)
  0 => string 'hello' (length=5)
  'username' => string 'tanhongit.net' (length=13)
  'password' => string '123456' (length=6) */
?>

array_combine($array_keys, $array_values)

Tác dụng của hàm là trộn 2 mảng $array_keys$array_values thành một mảng kết hợp. Trong đó, $array_keys là danh sách keys, $array_value là danh sách value tương ứng với key. Với điều kiện là 2 mảng này phải bằng nhau.

<?php
    $array_keys = array('username','password');
    $array_values = array('tanhongit.net','123456');
    
    var_dump(array_combine($array_keys,$array_values)); 
    /*output: array (size=2)
    'username' => string 'tanhongit.net' (length=13)
    'password' => string '123456' (length=6) */
?>

array_merge($array,$array…)

Cao cấp hơn hàm array_combine (chỉ có tác dụng gộp 2 mảng thành 1), hàm array_merge này có tác dụng gộp 2 hoặc nhiều mảng hơn nữa thành 1 mảng duy nhất

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456',
    );
    $array1 = array(1, 2, 3);
    $array2 = array(
      1 => 'hello',
      'name' => 'Hồng'
    );
    var_dump(array_merge($array,$array1,$array2)); 
    /*kết quả: array (size=7)
    'username' => string 'tanhongit.net' (length=13)
    'password' => string '123456' (length=6)
    0 => int 1
    1 => int 2
    2 => int 3
    3 => string 'hello' (length=5)
    'name' => string 'Hồng' (length=4) */
?>

array_rand($array, $number)

Hàm có tác dụng lấy ra key ngẫu nhiên trong mảng với $number là số lượng muốn lấy. Mình sẽ lấy ví dụ tiếp tục từ phần array_merge trên:

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456',
    );
    $array1 = array(1, 2, 3);
    $array2 = array(
      1 => 'hello',
      'name' => 'Hồng'
    );
    echo array_rand(array_merge($array,$array1,$array2));  //lấy 1 phần tử ngẫu nhiên trong mảng kết hợp
    //kêt quả lệnh echo: password

    var_dump(array_rand(array_merge($array,$array1,$array2), 3)); //lấy 3 phần tử ngẫu nhiên trong mảng kết hợp
    /*kết quả: array (size=3)
    0 => string 'password' (length=8)
    1 => int 2
    2 => int 3 */
?>

array_unique($array)

Hàm giúp loại bỏ giá trị trùng nếu có trong mảng $array.

<?php
    $array = array('tanhongit.net', 'hello', '123456', 'hello');
    var_dump(array_unique($array));
    /*array (size=3)
    0 => string 'tanhongit.net' (length=13)
    1 => string 'hello' (length=5)
    2 => string '123456' (length=6) */
?>

array_flip($array)

Hàm này có tác dụng chuyển đổi key của mảng thành value và ngược lại.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456'
    );
    var_dump(array_flip($array)); 
    /*kết quả: array (size=2)
  'tanhongit.net' => string 'username' (length=8)
  123456 => string 'password' (length=8) */
?>

array_reverse($array)

Hàm có tác dụng đảo ngược lại vị trí sắp xếp của tất cả phần tử có trong mảng.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456',
    );
    var_dump(array_reverse($array)); 
    /*kết quả: array (size=2)
  'password' => string '123456' (length=6)
  'username' => string 'tanhongit.net' (length=13) */
?>

array_search($keyword, $array)

Hàm có tác dụng tìm kiếm giá trị của mảng và trả về key của phần tử đó nếu có. Trong đó $keyword là giá trị truyền vào, $array là mảng cần tìm.

<?php
    $array = array(
    'username' => 'tanhongit.net',
    'password' => '123456',
    );
    var_dump(array_search('tanhongit.net',$array)); 
    /*kết quả: string 'username' (length=8) */
?>

array_slice($array,$begin,$number)

Hàm có tác dụng lấy ra số lượng các phần tử được truyền vào thông qua $number và bắt đầu lấy ra từ $begin trong mảng.

<?php
      $array = array(
      'username' => 'tanhongit.net',
      'password' => '123456',
      );
      var_dump(array_slice($array, 0)); //lấy ra các phần tử bắt đầu từ chỉ mục $key = 0
      /*kết quả: array (size=2)
      'username' => string 'tanhongit.net' (length=13)
      'password' => string '123456' (length=6) */
      var_dump(array_slice($array, 0 , 1)); //lấy ra 1 phần tử bắt đầu từ chỉ mục $key = 0
      /*Kết quả: array (size=1)
      'username' => string 'tanhongit.net' (length=13) */
      var_dump(array_slice($array, 1 , 1)); //lấy ra 1 phần tử bắt đầu từ chỉ mục $key = 1
      /*Kết quả: array (size=1)
      'password' => string '123456' (length=6) */ 
?>

Sẽ còn cập nhật…

Kết thúc

Bài viết này mình đã liệt kê một số hàm thường được sử dụng để xử lý mảng trong PHP, Nếu các bạn muốn xem thêm hãy truy cập link này để tham khảo nhé!

Vậy là trong lộ trình học php căn bản thì tới đây mình đã liệt kê hết các kiến thức về mảng giúp các bạn học tập. Cho nên sang bài tiếp theo chúng ta sẽ qua chuỗi trong PHP và các vấn đề xoay quanh chuỗi nhé!

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

via tanhongit.net

CHÚC CÁC BẠN THÀNH CÔNG

The post Bài 11: Các hàm xử lý mảng (Array) trong PHP appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-11-cac-ham-xu-ly-mang-array-trong-php/feed/ 0
Bài 10: Mảng (Array) Trong PHP https://tanhongit.com/bai-10-mang-array-trong-php/ https://tanhongit.com/bai-10-mang-array-trong-php/#respond Tue, 18 Feb 2020 06:39:18 +0000 https://tanhongit.com/?p=1952 Đây là bài viết thứ 10 trong series học PHP căn bản, trong bài này mình sẽ chỉ giới thiệu về mảng (Array) trong PHP và các kiến thức liên quan đến mảng mà các bạn cần nắm vững. Trước đây mình đã từng giới thiệu và nói qua về mảng ở bài 3: các […]

The post Bài 10: Mảng (Array) Trong PHP appeared first on Tân Hồng IT.

]]>
Đây là bài viết thứ 10 trong series học PHP căn bản, trong bài này mình sẽ chỉ giới thiệu về mảng (Array) trong PHP và các kiến thức liên quan đến mảng mà các bạn cần nắm vững.

Trước đây mình đã từng giới thiệu và nói qua về mảng ở bài 3: các kiểu dữ liệu trong PHP. Nhưng qua bài này mình sẽ trình bày lại tất cả nhé!

mang array trong php
Mảng (Array) Trong PHP

Cũng như bao ngôn ngữ lập trình khác. PHP cũng tồn tại một loại dữ liệu được gọi là mảng. Mảng Array là một loại biến đặc biệt, trong nó giữ nhiều giá trị. Mỗi giá trị trong mảng được gọi là phần tử của mảng.

Một mảng là một cấu trúc dữ liệu mà lưu giữ danh sách các phần tử có cùng kiểu dữ liệu và nó là một trong các kiểu dữ liệu trong php có độ phức tạp tính toán cao. Riêng với PHP thì các phần tử của mảng có thể không cùng kiểu dữ liệu, và các phần tử của mảng thường được truy xuất thông qua các chỉ mục(vị trí) của nó nằm trong mảng.

Cú pháp tạo một mảng

Để tạo mảng chúng ta sử dụng hàm array() trong PHP (Từ PHP 5.4 trở lên bạn chỉ cần viết giá trị trong cặp dấu [ ] cũng được)

Note: Các bạn dùng hàm var_dump($mang); để in ra các phần tử của mạng để test trong quá trình học nhé. Hàm này có thể sử dụng được tất cả các kiểu dữ liệu trong php. (Hàm var_dump chỉ dùng để test).

//cách tạo mảng 1
<?php
    $names=array("Tan","Binh","Minh");
    var_dump($names);
?>
//cách tạo mảng 2
<?php 
$names=array(
0 => 'Tan',
1 => 'Binh',
2 => 'Minh'
); 
var_dump($names); 
?>
//cách tạo mảng 3 
<?php 
$names=array(); 
$names[0] = 'Tan';
$names[1] = 'Binh';
$names[2] = 'Minh';
var_dump($names);
?>
//cách tạo mảng 4 
<?php 
$names=array(); 
$names[] = 'Tan'; 
$names[] = 'Binh'; 
$names[] = 'Minh'; 
var_dump($names); 
?>

Có 3 loại mảng trong PHP

  1.  Mảng indexed – Mảng được lập chỉ mục
  2. Mảng associative – Mảng liên hợp
  3. Mảng Multidimensional – Mảng chứa một hoặc nhiều mảng

Chúng ta sẽ cùng tìm hiểu theo thứ tự từng loại mảng trên.

Loại 1. Indexed Arrays – Mảng được lập chỉ mục

Các mảng này có thể lưu trữ số, chuỗi và bất kỳ đối tượng nào nhưng chỉ mục của chúng sẽ được biểu diễn bằng dạng số. Một biến mảng dạng này chỉ số sẽ gán một cách tự động, theo chỉ mục mảng mặc định bắt đầu từ số không khi phần tử đầu tiên được thêm vào, cứ thế phần tử thứ 2 thêm vào mảng sẽ có chỉ số là 1.

Ví dụ minh họa cách tạo và truy cập mảng số được lập chỉ mục trong PHP.

<?php
    /*Ví dụ 1: xuất danh sách các tên có trong mảng bằng cách sử dụng vòng lặp */
    $names = array( "Nam", "Mai", "Trúc", "Linh", "Phong");
    
    foreach( $names as $value ) // sử dụng vòng lặp foreacch để duyệt phần tử trong mảng
    {
    echo "Tên: $value <br />";
    }
    var_dump($names); //xuất mảng
    
    /*Ví dụ 2: xuất lần lượt các giá trị có trong mảng */
    $numbers[0] = "one";
    $numbers[1] = 2;
    $numbers[2] = "three";
    $numbers[3] = 4;
    $numbers[4] = "five";
    
    var_export($numbers);
?>

sau khi chạy lên, kết quả của lệnh var_dump($names); trên màn hình như sau:

array (size=5)
  0 => string 'Nam' (length=3)
  1 => string 'Mai' (length=3)
  2 => string 'Trúc' (length=5)
  3 => string 'Linh' (length=4)
  4 => string 'Phong' (length=5)

Như vậy phần tử có chỉ số 0 thì giá trị là 'Nam', chỉ số 1 giá trị là ‘Mai’ … chỉ số này dùng với ký hiệu Array_Name[indexed] để truy xuất ( đọc hoặc gán) phần tử mảng:

Ví dụ về truy xuất Array_Name[indexed]

Từ ví dụ bên trên ta sẽ truy xuất 1 phần tử trong mảng ra như sau:

<?php
    /*Ví dụ 1: xuất danh sách các tên có trong mảng bằng cách sử dụng vòng lặp */
    $names = array( "Nam", "Mai", "Trúc", "Linh", "Phong");
    
    foreach( $names as $value ) // sử dụng vòng lặp foreacch để duyệt phần tử trong mảng
    {
    echo "Tên: $value <br />";
    }
    var_dump($names);

    //truy xuất phần tử có chỉ mục là số 1 có trong mảng $names
    echo $names[1];

    //kết quả xuất ra màn hình sẽ là 'Mai'
?>

Thêm phần tử mới vào mảng

Bạn có thể thêm phần tử mới vào trong mảng bằng cách viết bên dưới:

$arrayName[indexed] = $giatri; 

// biến $giatri có thể là một biến có sẵn hoặc cũng có thể là một giá trị mới mà bạn muốn gán vào.
//phần tử mới nhất được thêm vào sẽ luôn nằm cuối mảng, dù cho giá trị index có là bao nhiêu đi chăng nữa

Ví dụ 1:

<?php
    /*Ví dụ 1: xuất danh sách các tên có trong mảng bằng cách sử dụng vòng lặp */
    $names = array( "Nam", "Mai", "Trúc", "Linh", "Phong");

    //thêm 2 phần tử mới vào mảng $names
    $names[7]=0;
    $names[6]=9;

    var_dump($names);
?>

Kết quả thấy được sẽ là:

array (size=7)
  0 => string 'Nam' (length=3)
  1 => string 'Mai' (length=3)
  2 => string 'Trúc' (length=5)
  3 => string 'Linh' (length=4)
  4 => string 'Phong' (length=5)
  7 => int 0
  6 => int 9

Bạn thấy mặc dù chỉ số 6 bé hơn chỉ số 7 nhưng khi biểu diễn trong mảng nó lại nằm dưới chỉ số 7, Bởi vì khi thêm phần tử mình đã cố ý thêm phần tử có chỉ số 7 trước cho nên nó sẽ được thêm vào mảng trước phần tử có chỉ số là 6.

Điều này sẽ tuân thủ quy tắc: phần tử mới nhất được thêm vào sẽ luôn nằm cuối mảng, dù cho giá trị index có là bao nhiêu đi chăng nữa


Có một cách thêm thứ 2 mà bạn cần biết đó là phương pháp thêm sau:

$arrayName[] = $giatri;

// biến $giatri có thể là một biến có sẵn hoặc cũng có thể là một giá trị mới mà bạn muốn gán vào.
// Phần tử này khi được thêm vào sẽ nằm phía sau phần tử cuối cùng của mảng. Khi đó chỉ số phần tử này sẽ bằng chỉ số lớn nhất của mảng cộng thêm 1
// nếu đây là phần tử đầu tiên của mảng thì chỉ số sẽ là 0

Ví dụ 2:

<?php
    /*Ví dụ 1: xuất danh sách các tên có trong mảng bằng cách sử dụng vòng lặp */
    $names = array( "Nam", "Mai", "Trúc", "Linh", "Phong");

    //thêm 2 phần tử mới vào mảng $names
    $names[7]=0;
    $names[6]=9;

    //thêm phần tử mới vào mảng $names theo cách 2
    $names[] = 100;
    $names[] = "hé nô";

    var_dump($names);
?>

Kết quả trên màn hình sẽ là:

array (size=9)
  0 => string 'Nam' (length=3)
  1 => string 'Mai' (length=3)
  2 => string 'Trúc' (length=5)
  3 => string 'Linh' (length=4)
  4 => string 'Phong' (length=5)
  7 => int 0
  6 => int 9
  8 => int 100
  9 => string 'hé nô' (length=7)

2 cách thêm phần tử vào mảng trên cách nào cũng đúng cả, tuỳ vào cách sử dụng của mỗi người và tuỳ vào trường hợp của bài toán mà ta sẽ phải lựa chọn cho phù hợp.

Từ 2 ví dụ trên, ta thấy chỉ số index không phải là thứ tự sắp xếp các phần tử trong mảng. Và chỉ số index không phải và không liên quan đến số lượng phần tử có trong mảng Mục đích của nó chỉ là lập chỉ mục cho các phần tử có trong mảng mà thôi.

Loại 2. Associative Arrays– Mảng liên hợp

Các mảng liên hợp là khá giống với các mảng Indexed về tính năng, nhưng chúng khác nhau về chỉ mục. Chỉ mục của Associative Arrays sẽ ở dạng chuỗi(string) nhằm giúp bạn có thể thiết lập một liên kết mạnh giữa keyvalue.

<?php
    $numbers  =  [
        'one' => "số 1",
        'two' => "số 2",
        'three' => "số 3",
        'four' => "số 4"
    ];
    //dùng vòng lặp foreach để duyệt mảng
    foreach ($numbers as $key => $value) {
        echo "$key ($value)", PHP_EOL; // PHP_EOL tương tự như dấu cách (space)
    }

    // Kết quả màn hình: one (số 1) two (số 2) three (số 3) four (số 4)

    var_dump($numbers);
?>

Kết quả của var_dump($numbers); trên màn hình:

array (size=4)
  'one' => string 'số 1' (length=6)
  'two' => string 'số 2' (length=6)
  'three' => string 'số 3' (length=6)
  'four' => string 'số 4' (length=6)

Như vậy, từ ví dụ trên ta thấy chỉ mục của các phần tử bây giờ không còn là các số nguyên nữa mà là các chuỗi ký tự.

Trong vòng lặp foreach, khi xuất ra các $key (các chỉ mục) thì sẽ có giá trị tương ứng là các $value.

Và để lấy giá trị của phần tử bất kỳ trong mảng ta cũng không thể sử dụng theo cách echo $numbers[0] giống mảng indexed nữa, ta phải gọi đúng chỉ mục là các chuỗi ký tự giống như sau: echo $numbers[‘one’]. Như vậy mới có kết quả ra màn hình là ‘số 1’.

Mảng liên hợp này rất hữu ích khi bạn lấy dữ liệu từ cơ sở dữ liệu.

Loại 3. Multidimensional Arrays– Mảng đa chiều

Mảng đa chiều là mảng trong nó chứa một hay nhiều mảng khác. Tức là trong 1 mảng, mỗi phần tử của nó có thể sẽ là một mảng (các mảng con), và có thể mỗi phần tử của mảng con cũng sẽ là một mảng (các mảng cháu),..v.v..

Ví dụ: mảng 2 chiều xuất ra thông tin điểm môn học của các học sinh.

<?php
    $diem = [
        'Nguyễn Văn A' => [
            'Toán' => 8,
            'Lý' => 7,
            'Hóa'  => 9
        ],
        'Nguyên Văn B' => [
            'Toán' => 6,
            'Lý' => 5,
            'Hóa'  => 7
        ],
        'Nguyễn C' => [
            'Toán' => 4,
            'Lý' => 9,
            'Hóa'  => 7
        ],
    ];
    foreach ($diem as $ten => $diem_hoc_tap) {
        echo $ten . "<br>";
        foreach ($diem_hoc_tap as $tem_mon => $diem_cua_mon) {
            echo "__$tem_mon" . " - " . $diem_cua_mon . "<br>";
        }
        echo "<br>";
    }
?>

Kết quả:

Nguyễn Văn A
__Toán - 8
__Lý - 7
__Hóa - 9
Nguyên Văn B
__Toán - 6
__Lý - 5
__Hóa - 7

Nguyễn C
__Toán - 4
__Lý - 9
__Hóa - 7

Các xuất phần tử trong mảng đa chiều  bạn cần phải truyền đủ các chỉ mục thuộc các cấp có trong mảng.

Ở ví dụ trên là mảng 2 chiều, như vậy ta sẽ truyền cả 2 chỉ mục mới có thể xuất ra màn hình, nếu không sẽ báo lỗi.

echo $diem['Nguyễn Văn A']['Toán']; // kết quả : 8
Ưu điểm của mảng đa chiều là chúng cho phép chúng ta nhóm các dữ liệu liên quan lại với nhau. 

Vì sao nên sử dụng mảng để chứa dữ liệu

Chúng ta nên sử dụng mảng để chứa dữ liệu vì 3 lý do sau đây

  • Nội dung của Mảng có thể được kéo dài mà vẫn tiết kiệm bộ nhớ
  • Mảng giúp dễ dàng lưu trữ và thao tác với các thông tin có liên quan đến nhau
  • Sử dụng mảng giúp viết code sạch hơn.

So sánh 2 mảng bằng nhau với toán tử “=”

So sánh hai mảng nếu chúng bằng nhau thì trả về true. Dối với cách so sánh này ta có thể so sánh giữa chuỗi và số, miễn giống nhau kết quả vẫn là true.

Ví dụ:

<?php
  $x = array("id" => 1);
  $y = array("id" => "1");
  if($x == $y)
  {
    echo "true";
  }
  else
  {
    echo "false";
  }
//output: true 
?>

Vì thế phương pháp so sánh này không mang tính tuyệt đối.

So sánh 2 mảng bằng nhau với “===”

Toán tử “===” sẽ đem tất cả giá trị (value)kiểu dữ liệu của key trong từng mảng ra để so sánh. Vì thế đây là phương pháp so sánh mang tính tuyệt đối.

<?php
  $x = array("id" => 1);
  $y = array("id" => "1");
  if($x === $y)
  {
    echo "true";
  }
  else
  {
    echo "false";
  }
//output: false
?>
<?php
  $x = array("id" => 1);
  $y = array("id" => 1);
  if($x === $y)
  {
    echo "true";
  }
  else
  {
    echo "false";
  }
//output: true
?>

 

Kết thúc

Vậy là qua bài trên mình đã giới thiệu cho các bạn về mảng cũng như nói rõ các loại mảng có trong PHP mà bạn cần nắm. Mảng là khái niệm mà bạn nên nắm vững để sau này đi vào phần lập trình PHP hướng đối tượng các bạn sẽ phải dùng rất nhiều.

Hàm, mảng và vòng lặp là 3 khái niệm bạn cần vững vàng để sau này áp dụng vào lập trình PHP có lết hợp với cấu trúc dữ liệu MySql cũng như lập trình hướng đối tượng. Nếu có thắc mắc hay có chỗ nào sai sót mong các bạn để lại comment bên dưới bài viết chúng mình cũng thảo luận nhé!

Ở bài viết tiếp theo của series học PHP căn bản mình sẽ nói về các hàm xử lý cho mảng để các bạn có thể áp dụng sau này. Hãy tiếp tục với series học PHP căn nản nha ❤

Nếu các bạn cảm thấy Website TanHongIT.Com thật sự hữu ích mình mong các bạn có thể chia sẻ những bài viết đến cho cộng đồng cùng thao khảo nhé. Cảm ơn các bạn !!!
Các bạn có bất kì thắc mắc cần được hỗ trợ hay yêu cầu các phần mềm, thủ thuật, khoá học,… thì cứ để lại comment bên dưới bài viết hoặc liên hệ qua fanpage của TanHongIT để được hỗ trợ nhé! Mình sẽ cố gắng chia sẻ cho các bạn mọi thứ cần thiết nhất!

Xem thêm:

CHÚC CÁC BẠN THÀNH CÔNG

The post Bài 10: Mảng (Array) Trong PHP appeared first on Tân Hồng IT.

]]>
https://tanhongit.com/bai-10-mang-array-trong-php/feed/ 0