Hướng dẫn php destroy - phá hủy php

Có hai hàm PHP rất giống nhau đó là hàm session_unset() và hàm session_destroy(). Cả hai dường như xóa tất cả các biến đã đăng ký cho một phiên nhưng lại có sự khác nhau giữa chúng.session_unset() và hàm session_destroy(). Cả hai dường như xóa tất cả các biến đã đăng ký cho một phiên nhưng lại có sự khác nhau giữa chúng.

Hướng dẫn php destroy - phá hủy php

Sự khác nhau của Session_unset() và Session_destroy() trong PHP

- Hàm session_destroy(): Sẽ phá hủy tất cả dữ liệu được liên kết với phiên hiện tại. Nó không unset bất kỳ biến toàn cục nào được liên kết với phiên hoặc unset session cookie.Hàm session_destroy(): Sẽ phá hủy tất cả dữ liệu được liên kết với phiên hiện tại. Nó không unset bất kỳ biến toàn cục nào được liên kết với phiên hoặc unset session cookie.

Cú pháp của hàm session_destroy:

bool session_destroy( void )

- Hàm session_unset(): Nó chỉ xóa các biến từ session và session vẫn còn tồn tại. Dữ liệu chỉ là cắt ngắn đi.Hàm session_unset(): Nó chỉ xóa các biến từ session và session vẫn còn tồn tại. Dữ liệu chỉ là cắt ngắn đi.

Cú pháp của hàm session_unset:

bool session_unset( void )

Để hiểu rõ hơn cách hoạt động của session_unset() và session_destroy() chúng ta sẽ thử xem.session_unset()session_destroy() chúng ta sẽ thử xem.

Ví dụ về session trong PHP

Ví dụ về session trong PHP

Kết quả chúng ta nhận được là:

Session được tạo thành công

Trước khi sử dụng hàm session_unset(), chúng ta thử hiển thị name và email.

Hiển thị name và email trước khi sử dụng hàm session_unset

Tại đây chúng ta sẽ sử dụng hàm session_unset(): Hàm này phá hủy các biến như "name" và "email" đang sử dụng.sử dụng hàm session_unset(): Hàm này phá hủy các biến như "name" và "email" đang sử dụng.

Sử dụng hàm session_unset trong PHP

Kết quả chúng ta nhận được là:

Session được tạo thành công

Trước khi sử dụng hàm session_unset(), chúng ta thử hiển thị name và email.sử dụng hàm session_destroy() xem nó hoạt động khác như thế nào hàm session_unset()

Hiển thị name và email trước khi sử dụng hàm session_unset

Kết quả chúng ta nhận được là:

Session được tạo thành công

Trước khi sử dụng hàm session_unset(), chúng ta thử hiển thị name và email.session.php bạn có thể thấy rằng session ID đã thay đổi, điều đó có nghĩa là session trước đó đã bị hủy và tất cả các biến và cookie cũng bị hủy.

Hiển thị name và email trước khi sử dụng hàm session_unset

Tại đây chúng ta sẽ sử dụng hàm session_unset(): Hàm này phá hủy các biến như "name" và "email" đang sử dụng."session is destroyed"

Sử dụng hàm session_unset trong PHP giữa session_unset()session_destroy() là có lý do của nó. Tùy theo từng trường hợp mà chúng ta sẽ sử dụng _unset() hay là _destroy.

Session đã được unset thành côngLập trình website với PHP tại NIIT - ICT Hà Nội để tìm hiểu nhiều hơn về kỹ thuật Lập trình web.

Tiếp đến, chúng ta thử sử dụng hàm session_destroy() xem nó hoạt động khác như thế nào hàm session_unset()

Sử dụng hàm session_destroy() trong PHP

Session đã được phá hủy thành công

Việc thực thi file session.php bạn có thể thấy rằng session ID đã thay đổi, điều đó có nghĩa là session trước đó đã bị hủy và tất cả các biến và cookie cũng bị hủy.

Session ID mới được thiết lập

Do tất cả các biến bị phá hủy nên PHP chuyển sang điều kiện else là "session is destroyed"

Sự khác nhau giữa session_unset() và session_destroy() là có lý do của nó. Tùy theo từng trường hợp mà chúng ta sẽ sử dụng _unset() hay là _destroy.

>>> Tham gia ngay khóa học Lập trình website với PHP tại NIIT - ICT Hà Nội để tìm hiểu nhiều hơn về kỹ thuật Lập trình web.


Chào các bạn, hôm nay mình xin chia sẻ 1 mẹo nhỏ trong PHP: Destroy session_id của user khác từ server.Destroy session_id của user khác từ server.

Tại sao cần làm việc này?

Bài toán đặt ra: Tại một thời điểm, chỉ cho phép người dùng có duy nhất 1 phiên đăng nhập trên hệ thống. Mô tả chi tiết: Thực tế hiện tay rất nhiều hệ thống web ứng dụng bán license theo số lượng tài khoản sử dụng. Do vậy, nếu không có biện pháp ngăn chặn việc người dùng sử dụng chung tài khoản để làm việc trên hệ thống thì việc thất thoát doanh thu là khó tránh khỏi. Chính vì thế, hệ thống cần có phương án để ngăn chặn việc này, tại một thời điểm, chỉ cho phép người dùng có 1 phiên đăng nhập trên 1 thiết bị và thao tác trên hệ thống.
Mô tả chi tiết: Thực tế hiện tay rất nhiều hệ thống web ứng dụng bán license theo số lượng tài khoản sử dụng. Do vậy, nếu không có biện pháp ngăn chặn việc người dùng sử dụng chung tài khoản để làm việc trên hệ thống thì việc thất thoát doanh thu là khó tránh khỏi. Chính vì thế, hệ thống cần có phương án để ngăn chặn việc này, tại một thời điểm, chỉ cho phép người dùng có 1 phiên đăng nhập trên 1 thiết bị và thao tác trên hệ thống.

Cách thực hiện trên với PHP?

Mình sẽ nói tóm tắt các bước thực hiện, logic này có thể áp dụng tương tự với ngôn ngữ khác. Mục đích là sử dụng tài khoản hiện tại, để destroy session id khác trên server. Bước 1:Commit session ID nếu nó đã tồn tại Bước 2: Store current session id Bước 3: Destroy session specified Bước 4: Restore current session id
Bước 1:Commit session ID nếu nó đã tồn tại
Bước 2: Store current session id
Bước 3: Destroy session specified
Bước 4: Restore current session id

Code demo!

Fanpage: https://facebook.com/NIIT.ICT/
$session_id_to_destroy 
‘nill2if998vhplq9f3pj08vjb1’;
if (session_id()) {
session_commit();
}

session_start();$current_session_id = session_id();session_commit();();
$current_session_id session_id();
session_commit();

session_id($session_id_to_destroy);session_start();session_destroy();session_commit();($session_id_to_destroy);
session_start();
session_destroy();
session_commit();

session_id($current_session_id);session_start();session_commit();($current_session_id);
session_start();
session_commit();

?>

Xong, một mẹo khá nhỏ nhưng đôi khi lại rất cần thiết cho hệ thống của bạn. Chúc các bạn áp dụng thành công!

Tham Khảo

https://www.php.net/manual/tr/function.session-destroy.php

kinhnghiemlaptrinh.com

ĐA

GIao LưU, Chia Sẻ, Học HỏI - Trao ĐổI KiM aul

Tôi hiện đang làm việc trên một hệ thống giỏ hàng.Nó yêu cầu đăng nhập người dùng để truy cập giỏ hàng.Vì vậy, tôi đã viết một số mã để vô hiệu hóa quyền truy cập của trang giỏ hàng nếu người dùng không đăng nhập. Tuy nhiên, bất cứ khi nào tôi cố gắng làm trống giỏ hàng, tôi sẽ đăng xuất.Tôi chỉ muốn phá hủy phiên giỏ hàng chứ không phải phiên người dùng.Đây là mã của tôi:

Cho trang giỏ hàng:


        alert('You must be logged in.');
        window.location.href='index.php#login'
      ";
    }
?>

  

  

    

Đối với cập nhật giỏ hàng:

query("SELECT product_name,price FROM products WHERE product_code='$product_code' LIMIT 1");
    $obj = $results->fetch_object();

    if ($results) { //we have the product info 

        //prepare array for the session variable
        $new_product = array(array('name'=>$obj->product_name, 'code'=>$product_code, 'qty'=>$product_qty, 'price'=>$obj->price));

        if(isset($_SESSION["products"])) //if we have the session
        {
            $found = false; //set found item to false

            foreach ($_SESSION["products"] as $cart_itm) //loop through session array
            {
                if($cart_itm["code"] == $product_code){ //the item exist in array

                    $product[] = array('name'=>$cart_itm["name"], 'code'=>$cart_itm["code"], 'qty'=>$product_qty, 'price'=>$cart_itm["price"]);
                    $found = true;
                }else{
                    //item doesn't exist in the list, just retrive old info and prepare array for session var
                    $product[] = array('name'=>$cart_itm["name"], 'code'=>$cart_itm["code"], 'qty'=>$cart_itm["qty"], 'price'=>$cart_itm["price"]);
                }
            }

            if($found == false) //we didn't find item in array
            {
                //add new user item in array
                $_SESSION["products"] = array_merge($product, $new_product);
            }else{
                //found user item in array list, and increased the quantity
                $_SESSION["products"] = $product;
            }

        }else{
            //create a new session var if does not exist
            $_SESSION["products"] = $new_product;
        }

    }

    //redirect back to original page
    header('Location:'.$return_url);
}

//remove item from shopping cart
if(isset($_GET["removep"]) && isset($_GET["return_url"]) && isset($_SESSION["products"]))
{
    $product_code   = $_GET["removep"]; //get the product code to remove
    $return_url     = base64_decode($_GET["return_url"]); //get return url


    foreach ($_SESSION["products"] as $cart_itm) //loop through session array var
    {
        if($cart_itm["code"]!=$product_code){ //item does,t exist in the list
            $product[] = array('name'=>$cart_itm["name"], 'code'=>$cart_itm["code"], 'qty'=>$cart_itm["qty"], 'price'=>$cart_itm["price"]);
        }

        //create a new product list for cart
        $_SESSION["products"] = $product;
    }

    //redirect back to original page
    header('Location:'.$return_url);
}
?>