07/09/2018, 17:50

Một số câu hỏi với PHP thuần

PHP có mấy cách khai báo, những cách nào được xem là chính thống và không làm ảnh hưởng khi các phiên bản update sau này? Có 3 cách: <? ?> <?php ?> <% %> Cách 2 là cách chính thống. Hằng trong PHP có gì khác so với biến?. Nếu một hằng được định nghĩa 2 lần thì ...

  1. PHP có mấy cách khai báo, những cách nào được xem là chính thống và không làm ảnh hưởng khi các phiên bản update sau này?
    Có 3 cách:

    • <? ?>
    • <?php ?>
    • <% %>
      Cách 2 là cách chính thống.
  2. Hằng trong PHP có gì khác so với biến?. Nếu một hằng được định nghĩa 2 lần thì liệu có bị lỗi không?. Cho ví dụ minh họa. Hằng có thể nội suy như biến hay không.
    Khác nhau: Hằng không thay đổi trong suốt chương trình, biến thì có
    Nếu định nghĩa hằng 2 lần thì sẽ có thông báo hằng đã tồn tại, chương trình vẫn chạy với hằng được định nghĩa đầu tiên.
    Nội suy là phương pháp ước tính giá trị của các điểm dữ liệu chưa biết trong phạm vi của một tập hợp rời rạc chứa một số điểm dữ liệu đã biết.

  3. Có báo nhiêu biến môi trường? $REQUEST có thể nhận được giá trị từ Form hay không?
    Có 4 biến môi trường là: GET, POST, REQUEST, SERVER.
    $REQUEST nhận được, dùng nó trong trường hợp không biết dữ liệu gửi lên là POST hay GET.

  4. Phân biệt sự khác nhau giữa $POST và $GET.

  • Giống nhau : Đều gửi dữ liệu lên Server

  • Khác nhau
    GET: Gửi dữ liệu lên Server thông qua URL, thông tin hiển thị lên Url, kích thước url giới hạn (1024 ký tự) POST: Gửi dữ liệu lên Server dưới dạng ẩn, không hiển thị param lên url, dữ liệu không giới hạn.
    GET thực thi nhanh hơn POST vì cơ chế:

    • GET: Quăng chuỗi string lên URL, Server tách chuỗi lấy được tham số
    • POST: Các tham số được đóng gói vào một file tạm, sau đó trình duyệt gửi file tạm đó lên Server và Server lưu lại file tạm đó sau đó mới phân tích.

    Về tính bảo mật thì POST cao hơn GET.
    Khi nào dùng GET or POST
    Khi dữ liệu muốn SEO thì phải sử dụng phương thức GET.
    Khi dữ liệu không cần bảo mật thì dùng phương thức GET, ngượi lại cần thì dùng phương thức POST.
    Ví dụ đăng nhập, comment, đăng tin dùng POST. Còn lấy tin ra 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.

  1. Mảng tuần tự là gì?. Khác gì với bất tuần tự. Để duyệt mảng ta dùng vòng lặp nào ?. Tại sao vòng lặp for, while, dowhile lại không ưu tiên trong duyệt mảng?
    Mảng tuần tự là mảng mà các khóa được đánh theo số, bắt đầu từ 0.
    Mảng bất tuần tự là mảng mà các key của nó không phải là số mà có thể là string.
    Để duyệt mảng tuần tự ta dùng vòng lặp for
    Để duyệt mảng bất tuần tự ta dùng ta dùng vòng lặp foreach (duyệt mảng hoặc object)
    Vòng lặp foreach trong PHP sinh ra để dùng cho lặp mảng mà không cần biết số phần tử trong mảng. Còn vòng lặp for hoặc while, dowhile khi lặp mảng chúng ta phải dùng hàm count() để đếm số phần tử của mảng sau đó mới lặp mảng.

  2. Để chuyển mảng thành chuỗi ta dùng hàm gì ?. Để tách chuỗi thành mảng ta dùng hàm gì ?. Để gộp mảng ta dùng hàm gì ? Để tách mảng ta dùng hàm gì ?.
    Chuyển mảng thành chuỗi: Implode (“chuỗi nối”, mảng) Chuyển chuỗi thành mảng: Explode (“chuỗi tách”, string)
    Để gộp mảng dùng: arraymerge ($mang1, $mang2)
    Để tách mảng dùng: arrayslice ($mang, vị trí tách, số lượng tách)

  3. Cho biết sự khác nhau giữa SERIALIZE và JSONENCODE
    Jsonencode: là phương thức dùng để chuyển đổi một mảng hoặc object thành string dữ liệu Json để sử dụng khi lưu trữ trong database, để chuyển đổi ngược lại ta dùng Jsonencode để chuyển một chuỗi dữ liệu Json sang dạng mảng hoặc Object để sử dụng trong code PHP.
    Serialize: là phương thức dùng để chuyển một mảng hoặc object thành string dữ liệu theo chuẩn của PHP để ta có thể lưu trữ hoặc truyền tải. Khi muốn chuyển lại ta dùng unserialize().

  4. Cookie và Session có gì khác nhau ?. Người ta nói bản thân của session là cookie là đúng hay sai.
    Cookie là một tập tin nhỏ được Server nhúng vào máy tính của người dùng. Nếu lần đầu tiên trình duyệt truy cập vào website nó sẽ gửi một cookie đến trình duyệt của người dùng, và mỗi khi người dùng tiếp tục yêu cầu một trang web từ website này thì cookie với các thông tin thu thập từ phía người dùng trên website này sẽ được gửi trả về server của website
    Session được hiểu là khoảng thời gian mà người sử dụng giao tiếp với 1 ứng dụng. Session được lưu trữ hoàn toàn trên Server, do vậy tính bảo mật cao hơn cookie, các website hiện nay thường dùng Session để lưu thông tin của người dùng khi họ đăng nhập. Chu kỳ sống của Session do Webserver quy định, ta có thể điều chỉnh chu trình này khi cấu hình webserver, tại server sẽ có 1 PHPSESSID tương ứng được tạo ra, các PHPSESSID sẽ được lưu trong một tập tin văn bản ở tại vị trí được quy định trong file PHP.ini ở dòng Session.savepath
    Người ta nói bản thân Session là cookie, về cơ bản Session và cookie đều là các tập tin lưu trữ lại thông tin của người dùng website, tuy nhiên dựa trên khái niệm, cách sử dụng, ứng dụng của chúng là khác biệt vì thế => khác biệt.

  5. Theo bạn sự khác nhau của toán tử & và && trong PHP là gì ?
    Toán tử & và && trong PHP đều là phép toán AND, tuy nhiên toán tử & áp dụng theo kiểu bit, nói dễ hiểu hơn & là phép AND theo tác trên các bit. Ví dụ: 1 & 0 thì ra 0. Phép toán && thì chỉ áp dụng cho kiểu boolean True và False

  6. Hãy cho biết $a++ và ++$a khác nhau ở đâu ?
    Cả 2 đều được dùng để tăng thêm 1 đơn vị cho biến số, tuy nhiên điểm khác biệt ở a++ được thực thi sau khi nó được gọi, còn ++a được thực thi ngay khi nó được gọi. Ví dụ a= 5, Khi dùng echo để in nó ra với giá trị a++ thì nó sẽ là 5, còn khi dùng echo ++ thì giá trị in ra sẽ là 6.

  7. Msqlclose cần thiết như thế nào trong thực tế. Vì sao ít thấy người dùng áp dụng nó.
    Msqlclose() được dùng để đóng kết nối đến cơ sở dữ liệu đã mở trước đó. Điều này rất cần thiết vì nó giúp giảm tải xử lý của database, hiểu đơn giản thế này một người truy cập tớ website của bạn có kết nối database và điều đó đồng nghĩa với việc sẽ có ít nhất một kết nối database được tạo, Vậy 100 người sẽ có 100 kết nối, và giả sử trong đó có 99 người không sử dụng nữa nhưng kết nối vẫn còn hiệu lực thì điều này có nghĩa là thay vì database phải xử lý chỉ có 1 kết nối mà nó phải xử lý 100 kết nối.
    Vì sao ít người dùng: Đầu tiên vì hiệu quả mang lại của hàm này rất khó thấy trong các trường hợp thông thường, trên thực tế khi người dùng không còn sử dụng thì sau một khoảng thời gian ngắn kết nối này sẽ tự động đóng. Thứ hai ít người có thể nhìn thấy được vấn đề nếu không có dịp tiếp xúc hoặc làm việc với lượng dữ liệu lớn thì sẽ thấy việc mở hoặc đóng một connection kịp thời và chính xác sẽ tiết kiệm được rất nhiều tài nguyên cho hệ thống cũng như tốc độ xử lý của hệ thống. Vì thế hàm này rất cần thiết khi bạn quản lý tài nguyên và tốc độ thực thi của hệ thống hay của website.

  8. Muốn chuẩn hóa dữ liệu về utf8 trong php ta phải làm gì.
    Sử dụng encoding utf-8 tại meta charset trong tập tin php
    Sử dụng encoding utf-8unicodeci trong mysql

0