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

Khi bạn làm việc với ứng dụng, bạn sẽ cần thực hiện các thay đổi và sau đó mới đóng lại ứng dụng. Đây sẽ gọi là một phiên hay session trong PHP. Session sẽ cho máy tính biết khi nào bạn bắt đầu ứng dụng và khi nào bạn kết thúc ứng dụng. Tuy vậy, khi hoạt động trên internet, máy chủ web sẽ không biết bạn là ai hoặc bạn làm gì vì địa chỉ http không duy trì trạng thái. 

Khái niệm session trong PHP

Khái niệm session trong PHP

Session trong PHP sẽ giải quyết vấn đề này bằng cách lưu trữ thông tin người dùng sử dụng trên nhiều trang (ví dụ: tên người dùng, màu yêu thích,...) Theo mặc định các biến của session kéo dài cho đến khi người dùng đóng trình duyệt.

Vì vậy, có thể kết luận các session trong PHP chứa thông tin về người dùng và có sẵn cho tất cả các trang trong ứng dụng.

Quy trình hoạt động của một session trong PHP

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

  • Đầu tiên, php sẽ tạo một mã định danh duy nhất cho một phiên cụ thể, đó là một chuỗi ngẫu nhiên gồm 32 số thập lục phân như 3c7foj34c3jj973hjkop2fc937e3443.
  • Cookie có tên là PHP SESSID sẽ được tự động gửi đến máy tính của người dùng để lưu trữ chuỗi nhận dạng phiên duy nhất.
  • Tệp được tạo tự động trên máy chủ trong thư mục tạm thời được chỉ định và mang tên của số nhận dạng duy nhất có tiền tố là sess_ ie sess_3c7foj34c3jj973hjkop2fc937e3443.

Khi một tập lệnh PHP muốn truy xuất giá trị từ một biến session, PHP sẽ tự động lấy chuỗi định danh session duy nhất từ cookie PHP SESSID và sau đó tìm tệp mang tên đó trong thư mục tạm thời của nó và việc xác thực có thể được thực hiện bằng cách so sánh cả hai giá trị.

Session sẽ kết thúc khi người dùng tắt trình duyệt hoặc rời khỏi trang, máy chủ sẽ kết thúc session sau một khoảng thời gian định trước, thường là sau 30’.

>>> Đọc thêm: PHP XML: Tạo, phân tích cú pháp ví dụ trong PHP XML

Bắt đầu một session trong PHP

Một session trong PHP có thể dễ dàng bắt đầu bằng cách gọi hàm session_start (), trước tiên hàm này kiểm tra xem một phiên đã được bắt đầu chưa và nếu chưa có phiên nào được bắt đầu thì nó sẽ bắt đầu một phiên. Bạn nên đặt lệnh gọi tới session_start () ở đầu trang.

Các biến phiên được lưu lữ trong các mảng liên kết được gọi là $_SESSION []. Những biến này có thể được truy cập trong thời gian của một session.

Ví dụ dưới đây bắt đầu một session, sau đó đăng ký một biến được gọi là bộ đếm (counter) được tăng lên mỗi khi trang được truy cập trong phiên.

Tận dụng hàm isset() để kiểm tra xem liệu biến session đã được set hay chưa. Đưa biến dưới đây vào file test.php và tải lại file nhiều lần cho tới khi nhận được kết quả như dưới đây:





      

      Setting up a PHP session

   

      

      

   
  

Kết quả nhận được như sau:

You have visited this page 1in this session.

>>> Đọc thêm: Toán tử bậc ba trong PHP - Tìm hiểu về toán tử bậc 3 trong PHP

Hủy session trong PHP

Một session trong PHP có thể được hủy bằng cách sử dụng hàm session_destroy(). Hàm này không cần bất kỳ thám số nào và một lệnh gọi có thể hủy tất cả các biến session. 

Dưới đây là ví dụ hủy đặt biến duy nhất:

Dưới đây là lệnh hủy tất cả các biến session

Cách bật Auto Session trong PHP

Bạn không cần gọi hàm start_session () để bắt đầu một phiên khi người dùng truy cập trang web của bạn nếu bạn có thể đặt biến session.auto_start thành 1 trong tệp php.ini .

Có những trường hợp người dùng không cho phép lưu trữ cookie trên máy của họ. Vì vậy, có một phương pháp khác là gửi ID session đến phiên trình duyệt.

Ngoài ra, bạn có thể sử dụng hằng số SID được định nghĩa nếu phiên bắt đầu. Nếu  người dùng không gửi một phiên cookie hợp lệ, nó sẽ có dạng session_name=session_id. Nếu không nó sẽ mở rộng một chuỗi đơn. Thêm vào đó, bạn có thể nhúng nó vào URL vô điều kiện.

Ví dụ sau minh họa cách đăng ký một biến và cách liên kết chính xác đến một trang khác bằng SID.



To continue click following link

Kết quả:

You have visited this page 1in this session.

To continue click following link

Kết luận: Trên đây là khái niệm và cách sử dụng session trong PHP. Bên cạnh các thành phần khác, Session trong PHP cũng là yếu tố mà lập trình viên cần để tâm trong quá trình làm việc với PHP. Tìm hiểu thêm về PHP và các ngôn ngữ lập trình khác qua các khóa học lập trình tại Viện công nghệ thông tin T3H.

Tạo một thư mục /src và một tệp composer.json trong thư trên cùng với một phần phụ thuộc: thư viện DotEnv, cho phép lưu trữ thông tin trong tệp .env.

composer.json

{

  "require": {

    "vlucas/phpdotenv": "^2.4"

  },

  "autoload": {

    "psr-4": {

      "Src\\": "src/"

    }

  }

}

Trình tải tự động PSR-4 sẽ tự động tìm kiếm các lớp PHP trong thư mục /src.

Đây là lúc cài đặt các phụ thuộc:

composer install

Nó sẽ tạo một thư mục  /vendor và phần phụ thuộc DotEnv sẽ được cài đặt (autoloader sẽ tải các lớp từ /src mà không cần hàm gọi include()).

Tạo tệp .gitignore  cho dự án của bạn với hai dòng trong đó, vì vậy thư mục /vendor và tệp cục bộ .env sẽ bị bỏ qua:

.gitignore

vendor/

.env

Tiếp theo, tạo một tệp .env.example cho các biến Secret (Bí mật):

.env.example

DB_HOST=localhost

DB_PORT=3306

DB_DATABASE=

DB_USERNAME=

DB_PASSWORD=

Và một tệp  .env nơi bạn sẽ điền thông tin chi tiết thực của mình sau này (nó sẽ bị Git bỏ qua nên sẽ không kết thúc trong kho lưu trữ của bạn).

Tạo một tệp tải start.php các biến môi trường.

start.php

load();

// test code:

// it will output: localhost

// when you run $ php start.php

echo getenv('DB_HOST');

>>> Đọc thêm: Date time trong PHP - Cách xử lý date time trong PHP nhanh nhất

Định hình Cơ sở dữ liệu cho REST API trong PHP 

Chúng ta sẽ sử dụng MySQL để cấp nguồn cho API đơn giản của chúng tôi.

Tạo cơ sở dữ liệu và người dùng mới cho ứng dụng của bạn:

mysql -u root -p

CREATE DATABASE blog CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE USER 'rest_api_user'@'localhost' identified by 'rest_api_password';

GRANT ALL on blog.* to 'rest_api_user'@'localhost';

quit

REST API sẽ chứa bài viết cho chúng ta trong ứng dụng Blog, với các lĩnh vực sau: id, title, body, author, author_picture, created_at. Nó cho phép người dùng đăng blog của họ trên ứng dụng Blog của chúng ta.

Tạo bảng cơ sở dữ liệu trong MySQL.

mysql -u rest_api_user -p;

// Enter your password

use blog;




CREATE TABLE `post` (

  `id` int(11) NOT NULL AUTO_INCREMENT,

  `title` varchar(255) NOT NULL,

  `body` text NOT NULL,

  `author` varchar(255),

  `author_picture` varchar(255),

  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,

  PRIMARY KEY (`id`)

);

Thêm các biến kết nối cơ sở dữ liệu vào tệp .env của bạn :

.env

DB_HOST=localhost

DB_PORT=3306

DB_DATABASE=blog

DB_USERNAME=rest_api_user

DB_PASSWORD=rest_api_password

Tạo một lớp để giữ database và thêm phần khởi tạo kết nối vào tệ start.php

src/Database.php

class Database {




  private $dbConnection = null;




  public function __construct()

  {

    $host = getenv('DB_HOST');

    $port = getenv('DB_PORT');

    $db   = getenv('DB_DATABASE');

    $user = getenv('DB_USERNAME');

    $pass = getenv('DB_PASSWORD');




    try {

      $this->dbConnection = new \PDO(

          "mysql:host=$host;port=$port;dbname=$db",

          $user,

          $pass

      );

    } catch (\PDOException $e) {

      exit($e->getMessage());

    }

  }




  public function connet()

  {

    return $this->dbConnection;

  }

}

start.php

load();

$dbConnection = (new Database())->connet();

>>> Đọc thêm: Hằng số trong PHP - Tìm hiểu nhanh về hằng số trong PHP

Thêm lớp cho Post Table và triển khai REST API trong PHP

Có nhiều cách để tương tác với cơ sở dữ liệu trong ngữ cảnh hướng đối tượng, nhưng chúng ta sẽ tìm hiểu một phương pháp đơn giản nhất, nơi bạn sẽ triển khai các phương thức để trả về tất cả các bài đăng, trả về một bài đăng cụ thể và thêm / cập nhật / xóa bài đăng.

Ngoài ra, các điểm cuối API sẽ được xử lý bởi giao diện người dùng của chúng ta tại api/index.php.

REST API với các điểm cuối như sau:

API

CRUD

Mô tả

GET /posts

READ

Nhận tất cả các bài viết từ bảng post

GET /post/{id}

READ

Nhận một bài đăng từ bảng post

POST /post

CREATE

Tạo bài đăng và chèn vào bảng Post

PUT /post/{id}

UPDATE

Cập nhât bài đăng trong bảng post

DELETE /post/{id}

DELATE

xóa bài đăng khỏi bảng post

api/index.php

processRequest();

Kiểm tra các điểm cuối API bằng Postman 

>>> Tham khảo: Khóa học lập trình PHP

Kết luận: Bài viết trên đã giới thiệu tới bạn cách xây dựng một REST API trong PHP. Sau khi xây dựng xong ứng dụng này, đừng quên bảo mật API bằng cách xác thực và ủy quyền bạn nhé. Tìm hiểu thêm về PHP và các ngôn ngữ lập trình khác qua các khóa học lập trình tại Viện công nghệ thông tin T3H.ngay hôm nay để nhận ưu đãi nhé!