Hướng dẫn dùng transliterate trong PHP

PHP có lẽ là ngôn ngữ lập trình kịch bản hay một loại mã lệnh phổ biến nhất cho lập trình viên web nhờ khả năng mở rộng tốt vượt ra ngoài việc chỉ xây dựng website. Tất nhiên, với khả năng mở rộng nhiều như vậy thường đi kèm với điều kiện phải học hỏi rất nhiều. May mắn rằng, trang PHP dễ hiểu với những người mới bắt đầu lập trình, mà vẫn đủ mạnh cho lập trình viên chuyên nghiệp.

Danh sách dài những khả năng đó ban đầu có vẻ khá đáng sợ, tuy nhiên, bất kỳ ai dù với kiến thức lập trình ít ỏi cũng có thể viết được mã PHP đơn giản. Điều đó nói lên rằng, không ai mong đợi có thể trở thành chuyên gia chỉ sau có 1 đêm, nên bộ "Ăn gian với PHP" - PHP Cheat sheet này sẽ giúp những người mới bắt đầu có thể "chuyên nghiệp" hơn 1 chút

I. Cơ bản về PHP

Trong trường hợp bạn cần 1 khóa học vỡ lòng khẩn cấp, thì phần này sẽ giúp bạn bao quát được những điều cơ bản nhất trong PHP.

Không giống như JavaScript - ngôn ngữ phía người dùng - client side, PHP được thực thi trên server, và trả ra mã HTML để gửi tới client. Vì thế, client nhận được kết quả của đoạn mã chứ không phải là đoạn mã gốc. Điều này khả thi khi cấu hình máy chủ của bạn có thể xử lý tất cả các file HTML với PHP để người dùng không thể nào biết được những gì được viết phía dưới.

Mã PHP được nhúng vào HTML và phải được đặt trong cặp thẻ đóng mở khối mã: , giống như ví dụ được lấy dưới đây: [Đoạn code này sẽ cho output là: "PHP goes here!"]

DOCTYPE html>


    First Example


    


Lệnh echo cho phép bạn trả ra output là chuỗi, và chuỗi đó được viết trong cặp dấu nháy và kết thúc bởi dấu chấm phẩy ;

Theo như trang W3techs, hơn 75% web servers được viết bằng PHP. Tuy nhiên, vì PHP là ngôn ngữ mã nguồn mở vốn có sự phát triển nhanh chóng chứ không phải được cố tình thiết kế như vậy ngay từ đầu, nên thiết kế ứng dụng rất dễ có nhiều lỗ hổng bảo mật. OWASP có 1 bản cheat an ninh khá hay giúp đảm bảo nền tảng ứng dụng PHP của bạn bảo mật hơn.

II. PHP Modes

Mã PHP được xử lý bằng nhiều cách, bao gồm cả Apache module, CGI và FastCGI. Nếu bạn đang sử dụng PHP cho dự án, phần này có thể giúp bạn biết nên bắt đầu từ đâu. Có nhiều lựa chọn thay thế khác, nhưng dưới đây là những cách thường dùng:

1. mod_php [Apache Module]

Sử dụng mod_php nhúng trình thông dịch PHP vào mỗi quy trình Apache khi nó sinh ra. Vì thế, không cần thêm quy trình bên ngoài nào bởi Apache đã tự xử lý mã PHP rồi. Việc này vô cùng hữu ích đối với các trang web mà hay phải nhận những request PHP lớn như WordPress, Drupal hay Joomla. Trình thông dịch lưu lại thông tin, nhờ đó mà những công việc tương tự không cần phải bị lặp lại mỗi lần xử lý mã. Đổi lại thì tiến trình Apache lưu lại lượng lớn dấu vết thông tin nên sẽ gây tốn bộ nhớ hơn.

Lợi ích của mod_php

  • Không cần thêm quá trình bên ngoài nào
  • Hiệu suất cao cho website chứa nhiều mã PHP
  • High performance for websites with a lot of PHP
  • Cài đặt có thể được cấu hình và điều chỉnh với chỉ thị của .htaccess

Hạn chế của mod_php

  • Trình thông dịch PHP vẫn phải thực thi kể cả khi không xuất hiện mã PHP
  • Vì các file chứa mã PHP thường đều do web server sở hữu, nên bạn không thể thường xuyên chỉnh sửa thông qua FTP sau này được.

2. CGI

Sử dụng ứng dụng CGI để xử lý mã PHP được coi là cách cổ, nhưng nó vẫn tiện lợi với 1 số mục đích. Lợi ích lớn nhất khi sử dụng CGI đó là việc xử lý mã được tách biệt với server của bạn. Vì trình thông dịch PHP chỉ được gọi đến khi cần, nên những nội dung tĩnh vẫn được an toàn ở trên server của bạn. Tuy nhiên, do 1 tiến trình mới phải được tạo ra mỗi khi mã PHP được sử dụng, nên chế độ này tiêu tốn tài nguyên rất nhanh. Nhờ thế, CGI không được khuyến khích sử dụng trong các dự án cần trao đổi nhiều mã PHP.

Lợi ích của CGI

  • Bảo mật hơn mod_php

Hạn chế của CGI

  • Tiêu tốn hiệu năng

3. FastCGI

FastCGI cho phép tận dụng cả sự bảo mật của CGI lẫn hiệu năng của Mod_php. Mã lệnh được xử lý bới trình thông dịch bên ngoài server, và mỗi request chuyển từ server qua FastCGI thông qua 1 network socket. Sau đó, Server và trình thông dịch PHP có thể sẽ tách thành các môi trường riêng biệt, nhờ đó cải thiện khả năng mở rộng. Sử dụng nginx kết hợp với mod_php cũng có thể đạt được hiệu quả tương tự, nhờ vậy mà nginx có thể xử lý được hầu hết các request tĩnh. Hạn chế của việc sử dụng FastCGI là không thể sử dụng các lệnh PHP đã được xác định trong file .htaccess, điều mà nhiều mã lệnh phổ biến yêu cầu có. Nếu bạn đang sử dụng Plesk Panel server, bạn có thể xử lý vấn đề này bằng cách cài đặt file php.ini để điều hướng PHP trên cơ sở từng tên miền.

Lợi ích của FastCGI

  • Cho phép bảo mật hơn mod_php
  • Các nội dung tĩnh không cần qua trình thông dịch PHP xử lý
  • Files có thể được quản lý bới người dùng FTP không cần phải thay đổi quyền truy cập.

Hạn chế của FastCGI

  • Điều hướng được định ra trong file .htaccess không thể sử dụng được nếu không xử lý lại
  • Request PHP phải truyền qua server

Nếu bạn đang làm việc với 1 dự án nhỏ, thì cứ thoải mái chọn các xử lý nào mà bạn muốn. FastCGI là lựa chọn phù hợp nhất để chạy ứng dụng CMS như wordpress, trong khi mod_php lại tốt hơn nếu bạn chỉ cần dựa các điều hướng của file .htaccess, hoặc muốn có biện pháp bảo mật tốt hơn.

III. PHP Functions

Các functions [hàm] đại diện cho các đoạn mã được sử dụng thường xuyên, nhờ đó bạn không cần phải liên tục copy và paste cùng một đoạn mã lặp đi lặp lại nhiều nơi. Tuy nhiên làm vậy sẽ khó mà bao quát toàn bộ danh sách dài các hàm trong 1 file mã được. Thay vào đó, bạn sẽ cần tìm 1 bộ PHP cheat có thể phục vụ bất kỳ mục đích nào mà bạn cần. Phần này sẽ cung cấp cho bạn những giải thích cặn kẽ của các function thường dùng.

1. Thao tác với String

strlen[]

Hàm strlen[] nhận vào 1 chuỗi hay 1 biến và trả về số lượng các ký tự trong đó, bao gồm cả ký tự khoảng trắng. Ví dụ:


substr[$string, $start, $length]

Hàm substr[] trả về 1 đoạn của chuỗi đầu vào. Hàm này gồm có 3 tham số đầu vào mà bạn phải truyền:

  • Tham số đầu tiên là $string, chính là tên biến chứa chuỗi mà bạn cần trích xuất thông tin.
  • Tham số thứ 2 là $start, xác định vị trí ký tự mà bạn muốn bắt đầu trích xuất, thứ tự vị trí bắt đầu từ 0 ứng với ký tự đầu tiên trong chuỗi, và cứ thế. Nhập vào số âm thì hàm sẽ bắt đầu đếm ngược lại từ cuối của chuỗi đó đổ lên.
  • Tham số cuối cùng là $length, xác định số lượng ký tự bạn muốn trích xuất kể từ vị trí $start. Nếu không truyền vào biến $length, hàm sẽ mặc định trả về tất các ký tự còn lại phía sau vị trí $start. Nếu giá trị của $length nhỏ hơn hay cùng giá trị với $start, thì hàm sẽ trả về false

Theo như trên, hàm sẽ hoạt động như sau:


strtoupper[] & strtolower[]

Hàm strtoupper[] sẽ chuyển tất cả các ký tự có trong chuỗi truyền vào thành dạng in hoa [UPPERCASE, ngược lại, hàm strtolower[] chuyển tất cả các ký tự trong chuỗi thành ký tự viết thường [lowercase], phục vụ cho xử lý 1 số trường hợp nhất định. Ví dụ như sau:


strpos[$haystack,$needle,$offset]

Hàm strpos[] giúp tìm kiếm vị trí xuất hiện của 1 chuỗi con trong 1 chuỗi lớn hơn. Có 3 tham số như sau:

  • $haystack, là chuỗi chính, đối tượng mà bạn muốn tìm bên trong đó
  • $needle là chuỗi con các ký tự mà bạn muốn tìm. Nếu chỉ truyền vào 2 tham số này sẽ trả về vị trí [dạng số] xuất hiện lần đầu tiên của chuỗi con.
  • $offset là tham số không bắt buộc truyền vào. Tham số này chỉ vị trí trong chuỗi mẹ mà bạn muốn bắt đầu tìm kiếm, vậy nên không thể truyền vào số âm. Lưu ý cách trong ví dụ cuối cùng, kết quả trả về là false vì hàm có phân biệt chữ hoa chữ thường:

Hàm strpos[] cũng có thể sử dụng kết hợp với câu lệnh if như sau:

Chủ Đề