Showing posts with label Hỏi Đáp PHP. Show all posts
Showing posts with label Hỏi Đáp PHP. Show all posts

Câu Hỏi Phỏng Vấn PHP Thường Gặp Phần 1


Câu 1: Mã PHP được chứa trong những cặp thẻ nào?

PHP cũng có thẻ mở đầu và thẻ đóng giống như HTML. Gồm 3 cách:
Cách 1: Cú pháp chính
   <?php 
      // kịch bản php
   ?>
Cách 2: Cú pháp ngắn gọn
   <?
     // kịch bản php
   ?>
Cách 3: Giống ASP
   <%
     // kịch bản php
   %>

Câu 2: Điểm khác nhau giữa hằng và biến trong PHP?

Một hằng số xác định một giá trị duy nhất trong toàn bộ chương trình. Người ta có thể sử dụng giá trị này thông qua tên của hằng số đó trong chương trình.
   Cú Pháp: $ten_bien = "giá trị cần gán";
Một số hằng số có sẵn:
   + TRUE, FALSE: tương ứng với true(1), false(0).
   + PHP_VERSION: Chỉ ra phiên bản PHP đang dùng.
   + PHP_OS: chỉ ra hệ điều hành mà server PHP đang chạy.
   + Một số hằng thông báo lỗi như: E_ERROR, E_WARNING, E_PARSE, E_NOTICE.
   + ...

Biến số được sử dụng để lưu trữ một giá trị nào đó trong chương trình. Gọi là biến số bởi vì giá trị của nó bị thay đổi thông qua các phép gán khi thực hiện chương trình.
   Cú Pháp: define("ten_hang", "giá trị cần gán");

Lưu ý: Hằng trong PHP chỉ được định nghĩa 1 lần. Khi một hằng số được định nghĩa lần 2 thì sẽ có thông báo lỗi xuất hiện (Notice), chương trình vẫn chạy với giá trị định nghĩa lần đầu tiên.
Tên có thể đặt tên hằng và tên biến giống nhau. Thật ra là khác nhau bởi vì tên biến có $ phía trước.
   VD: $sv = "cntt";
           define("sv", "cong nghe thong tin");

Câu 3: Phân biệt phương thức Get, Post khi xử lý Form trong PHP?

* Phương thức GET:
   Client gửi dữ liệu: Phương thức GET là phương thức mà dữ liệu được gửi thông qua URL. Có thể nhìn thấy dữ liệu được gửi qua URL trên Browser. Server sẽ nhận đường dẫn này phân tích lấy dữ liệu. Phần dữ liệu nằm sau dấu ? của URL. Trên URL có thể chứa nhiều dữ liệu để phân biệt các dữ liệu với nhau dùng dấu &.
   VD: sinhviencntt.com?msnv=19
           sinhviencntt.com?msnv=19&name=cntt
   Server nhận dữ liệu: Tất cả dữ liệu truyền bằng phương thức GET được PHP lưu trong biến toàn cục là $_GET. Biến này là mảng kết hợp lưu trữ dữ liệu thông qua cặp Key => Value.
   VD: Để lấy msnv trong URL: sinhviencntt.com?msnv=19&name=cntt
          $msnv =  $_GET['msnv'];
  * Ưu điểm:
     + Nhanh hơn phương thức POST,
     + Người dùng có thể sửa dữ liệu được truyền để test dữ liệu bằng cách sửa lại giá trị trên URL.
     + Tốt cho SEO.
  * Nhược điểm:
     + Bảo mật kém,
     + Dữ liệu được truyền có giới hạn vì độ dài của URL có giới hạn.

* Phương thức POST:
    Client gửi dữ liệu: Dữ liệu truyền được truyền ngầm, không thấy dữ liệu trên URL. PHP sẽ tạo ra biến ẩn chứa các thành phần input cơ bản của form như textbox, radio, ... và được nhận dạng qua name của input đó.
     Server nhận dữ liệu: Tất cả dữ liệu truyền bằng phương thức POST được PHP lưu trong biến toàn cục là $_POST.
      VD: $msnv =  $_POST['msnv'];
    * Ưu điểm:
      + Bảo mật hơn GET.
      + Không giới hạn độ lớn của dữ liệu.
    * Nhược điểm;
      + Dữ liệu không tường minh,
      + Chậm hơn GET.

GET nhanh hơn POST bởi vì dữ liệu đường truyền với GET có thể được Browser lưu lại trong cache.
Ngoài ra khi chúng ta không rõ form sử dụng phương thức nào POST hay GET thì server có thể nhận dữ liệu nhờ vào $_REQUEST.
Khi select nên dùng GET. Khi insert, update, delete nên dùng POST.

Câu 4: Thế nào là mảng tuần tự, mảng bất tuần tự trong PHP?

Mảng là một thành phần quan trọng trong PHP, mảng lưu trữ nhiều dữ liệu dưới dạng key => value. Mảng cho phép lập trình viên sắp xếp, thêm, sửa, xóa phần tử khỏi mảng 1 cách dễ dàng.

* Mảng tuần tự:
Mảng tuần tự là mảng mà chúng ta không cần chỉ định key. Key sẽ được đánh số từ 0 và theo thứ tự tăng dần.
VD:
    <?php
             $sinhvien = array("sv1", "sv2", "sv3");
             echo $sinhvien[0]; //lấy ra sv1
             echo $sinhvien[1]; //lấy ra sv2
             echo $sinhvien[2]; //lấy ra sv3
    ?>

VD Để thêm phần tử vào mảng $sinhvien
      Cách 1:  $sinhvien[] = "sv4"; //phần tử mới được thêm vào sau cùng, khi đó key của sv4 là 3.
      Cách 2:  $sinhvien[4] = "sv4"; // Phần tử mới được thêm vào vị trí với key = 4. Mảng không còn liên tục vì không có key = 3. Nếu lấy $sinhvien[3] sẽ xuất hiện lỗi. Nếu lấy $sinhvien[4] chương trình hoạt động bình thường.

* Mảng bất tuần tự:
Mảng bất tuần tự là mảng mà chúng ta cần chỉ định rõ key cho chúng. Key có thể là số hoặc string.
 VD:
      <?php
             $sinhvien = array(
                                    "mssv" => "001",
                                    "age"   => "20",
                                    "sex"   => "nam"
                                 );
             echo $sinhvien['mssv']; //lấy ra mssv
             echo $sinhvien['age']; //lấy ra age
             echo $sinhvien['sex']; //lấy ra sex
      ?>

Thêm phần tử vào mảng:
    VD:  $sinhvien["dtb"] = 8;

Để duyệt mảng ta thường dùng for hoặc foreach. Để tăng tốc độ chương trình thông thường khi duyệt mảng để đọc thì nên dùng foreach. Nhưng nếu duyệt để thay đổi giá trị của các phần tử thì nên dùng for.

Đọc Tiếp »