Kết nối

Câu hỏi: Khái niệm “session” trong PHP đề cập đến điều gì?

84 lượt xem 
 Cập nhật lần cuối: 02/10/2023 lúc 14:24:16

Câu trả lời: Trong PHP, “session” (phiên) đề cập đến một cách lưu trữ và duy trì thông tin trạng thái của một người dùng trên một trang web trong khoảng thời gian mà họ tương tác với trang web đó. Sessions cho phép bạn lưu trữ các biến và dữ liệu trạng thái của người dùng sao cho bạn có thể theo dõi họ qua các trang và giữ thông tin người dùng trong suốt phiên làm việc.

Các thông tin session thường được lưu trữ trên máy chủ web và được liên kết với một phiên làm việc cụ thể của người dùng thông qua một “session ID” (ID phiên). Session ID thường được lưu trữ trong một cookie trên máy tính của người dùng hoặc được truyền dưới dạng tham số trong URL.

Minh họa kết nối giữa người dùng và server để tạo ra session

Sessions thường được sử dụng để lưu trữ thông tin như thông tin đăng nhập, giỏ hàng mua sắm, dữ liệu biểu mẫu, và các thông tin trạng thái khác của người dùng. Bằng cách sử dụng sessions, bạn có thể duy trì trạng thái của người dùng trong suốt phiên làm việc của họ trên trang web mà không cần lưu trữ thông tin trên máy tính cá nhân của họ, và điều này giúp bảo mật hơn.

Để làm việc với sessions trong PHP, bạn sử dụng các hàm như session_start() để bắt đầu một phiên làm việc mới, $_SESSION để lưu trữ và truy xuất dữ liệu session, và session_destroy() để kết thúc một phiên làm việc. Đảm bảo rằng bạn đã cấu hình PHP để hỗ trợ sessions (bằng cách bật tùy chọn session trong tệp cấu hình php.ini) trước khi sử dụng chúng.

Ví dụ trang index.php:

<?php
// Bắt đầu phiên làm việc hoặc tiếp tục phiên đã tồn tại
session_start();

// Kiểm tra xem người dùng đã đăng nhập chưa
if (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] === true) {
    echo "Chào mừng " . $_SESSION['username'] . "!";
} else {
    // Nếu người dùng chưa đăng nhập, chuyển họ đến trang đăng nhập
    header("Location: login.php");
    exit;
}

// Khi người dùng đăng xuất, bạn có thể sử dụng session_destroy() để kết thúc phiên làm việc
// session_destroy();
?>

<!DOCTYPE html>
<html>
<head>
    <title>Trang chính</title>
</head>
<body>
    <h1>Trang chính</h1>
    <p>Đây là trang chính của ứng dụng web.</p>
    <p><a href="logout.php">Đăng xuất</a></p>
</body>
</html>

Ví dụ trang login.php: Thông tin đăng nhập username là “admin” và password là “password”.

<?php
session_start();

// Kiểm tra nếu người dùng đã đăng nhập, chuyển họ đến trang index
if (isset($_SESSION['username'])) {
    header("Location: index.php");
    exit;
}

// Kiểm tra khi người dùng gửi biểu mẫu đăng nhập
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = $_POST['username'];
    $password = $_POST['password'];

    // Kiểm tra thông tin đăng nhập (trong ví dụ này, kiểm tra tên người dùng và mật khẩu cứng)
    if ($username === 'admin' && $password === 'password') {
        // Lưu tên người dùng vào session và chuyển họ đến trang chào mừng
        $_SESSION['username'] = $username;
        header("Location: index.php");
        exit;
    } else {
        $error_message = "Tên người dùng hoặc mật khẩu không chính xác.";
    }
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>Trang Đăng Nhập</title>
</head>
<body>
    <h1>Đăng Nhập</h1>
    
    <?php if (isset($error_message)) { ?>
        <p style="color: red;"><?php echo $error_message; ?></p>
    <?php } ?>

    <form method="post">
        <label for="username">Tên người dùng:</label>
        <input type="text" id="username" name="username" required><br><br>

        <label for="password">Mật khẩu:</label>
        <input type="password" id="password" name="password" required><br><br>

        <input type="submit" value="Đăng Nhập">
    </form>
</body>
</html>

Ví dụ trang logout.php:

<?php
session_start();

// Kiểm tra nếu người dùng chưa đăng nhập, chuyển họ đến trang đăng nhập
if (!isset($_SESSION['username'])) {
    header("Location: login.php");
    exit;
}

// Xóa thông tin phiên làm việc (session)
session_unset();
session_destroy();

// Chuyển hướng người dùng đến trang đăng nhập hoặc trang chào mừng
header("Location: login.php");
exit;
?>

Ví dụ trên chỉ mang tính tham khảo, bạn cần kiểm tra lại thực nghiệm để xem đoạn mã chạy đúng theo yêu cầu của bạn và thêm các chức năng khác nếu thấy cần thiết. DAMMIO.COM chúc bạn may mắn!

Liên quan:  Thử nghiệm tốc độ kết nối tới server MySQL của 2 ngôn ngữ PHP và Python
Trích dẫn bài viết
  • APA:
    Dammio. (2023). Câu hỏi: Khái niệm “session” trong PHP đề cập đến điều gì?. https://www.dammio.com/2023/09/15/cau-hoi-khai-niem-session-trong-php-de-cap-den-dieu-gi.
  • BibTeX:
    @misc{dammio,
    author = {Dammio},
    title = {Câu hỏi: Khái niệm “session” trong PHP đề cập đến điều gì?},
    year = {2023},
    url = {https://www.dammio.com/2023/09/15/cau-hoi-khai-niem-session-trong-php-de-cap-den-dieu-gi},
    urldate = {2024-02-27}
    }
Theo dõi
Thông báo của
guest
0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận
0
Rất thích suy nghĩ của bạn, hãy bình luận.x