Bỏ đặt _POST PHP

❮ Tham chiếu xử lý biến PHP

Ví dụ

Bỏ đặt biến

$a = "Xin chào thế giới. ";
echo "Giá trị của biến 'a' trước đó không được đặt. ". $a. "
";
unset[$a];
echo "Giá trị của biến 'a' sau khi không đặt. ". $a;
?>

Tự mình thử »

Định nghĩa và cách sử dụng

Hàm unset[] hủy đặt một biến

cú pháp

Giá trị tham số

Tham sốMô tảbiếnBắt buộc. Chỉ định biến để bỏ đặt. Không bắt buộc. Một biến khác để bỏ đặt

chi tiết kỹ thuật

Giá trị trả về. Không có Loại trả lại. Không cóPhiên bản PHP. 4. 0+❮ Tham chiếu xử lý biến PHP

Since unset[] is a language construct, it cannot be passed anything other than a variable. It's sole purpose is to "unset" this variable, ie. to remove it from the current scope and destroy it's associated data. This is true especially for reference variables, where not the actual value is destroyed but the reference to that value. This is why you can't wrap 'unset[]' in a user defined function: You would either unset a copy of the data if the parameter is passed by value, or you would just unset the reference variable within the functions scope if the parameter is passed by reference. There is no workaround for that, as you cannot pass 'scope' to a function in PHP. Such a function can only work for variables that exist in a common or global scope [compare 'unset[$_GLOBALS[variable]]'].

I don't know how PHP handles garbage collection internally, but I guess this behavior can result in a huge memory leak: if a value variable goes out of scope with a second variable still holding a reference to the in-memory value, then unsetting that reference would still hold the value in memory but potentially unset the last reference to that in-memory data, hence: occupied memory that is rendered useless as you cannot reference it anymore.

Nó có vẻ quá khó xử, nhưng có lẽ tốt hơn hết là bạn nên bỏ cài đặt từng phần tử thay vì toàn bộ mảng $_POST. Đây là lý do tại sao. Nếu bạn đang sử dụng lập trình hướng đối tượng, bạn có thể có một lớp sử dụng $_POST['alpha'] và một lớp khác sử dụng $_POST['beta'] và nếu bạn bỏ đặt mảng sau lần sử dụng đầu tiên, nó sẽ vô hiệu việc sử dụng mảng đó . Để an toàn và không tự bắn vào chân mình, chỉ cần áp dụng một phương pháp nhỏ sẽ bỏ đặt các phần tử mà bạn vừa sử dụng. Ví dụ

private function doUnset[]
{
    unset[$_POST['alpha']];
    unset[$_POST['gamma']];
    unset[$_POST['delta']];
    unset[$_GET['eta']];
    unset[$_GET['zeta']];
}

Chỉ cần gọi phương thức và chỉ bỏ đặt các phần tử siêu toàn cầu đó đã được truyền cho một biến hoặc đối số. Sau đó, các lớp khác có thể cần phần tử siêu toàn cầu vẫn có thể sử dụng chúng

Tuy nhiên, bạn nên khôn ngoan để bỏ đặt các siêu khối ngay khi chúng được chuyển đến một đối tượng được đóng gói

Bạn không cần bỏ đặt biến POST vì chúng không được duy trì theo yêu cầu. Nghĩa là, nếu bạn sử dụng header[], về cơ bản bạn đang tạo một yêu cầu mới để các POST trước đó sẽ không được gửi cùng với nó

Cảm ơn vì thông tin đó, tôi đã không biết về điều đó, nhưng bây giờ tôi đã biết - chúc mừng

old_iron

Một điều tôi thấy là

bao gồm ['newAdvertiserStep1. php'];

tiêu đề ["Vị trí. mớiNhà quảng cáo. php”];

Theo những gì tôi hiểu từ bài đăng của bạn, đây là trang mặc định để người dùng truy cập nếu họ chưa đăng ký với bạn… đây là các URL khác nhau, điều này có đúng không?

Các

include[‘newAdvertiserStep1. php’];
thực sự là một điều kiện bao gồm có trong trang chính của newAdvertiser. php.

Tôi đã thử chuyển hướng đến quảng cáo mới...Bước 1. php nhưng cũng vô ích

Khi tôi thử chuyển hướng đến newAdvertiser, phần bao gồm điều kiện được cho là không có ở đó, nhưng trong trang chính đó, sau đó tôi nhấp vào liên kết đến 'newAdvertiser. php’ và trang hiển thị chính xác VỚI $_SESSION[‘err’] lặp lại

old_iron

Ý bạn là, khi bạn chuyển hướng đến newAdvertiser, nó không hoạt động?

Đúng rồi

old_iron

nhưng nếu bạn nhấp vào một liên kết đến newAdvertiser, nó có hoạt động không?

Chính xác

old_iron

Liên kết có gửi biểu mẫu không?

vâng nó làm

Chỉnh sửa.

Tôi chân thành cảm ơn sự giúp đỡ của bạn old_iron và spike, tuy nhiên, tôi nghĩ rằng tôi đã giải quyết được vấn đề khi tôi đang cố gắng xem lại mã. Tôi đã đặt mã này.


if [isset[$_POST['companyListed']]] {
if [empty[$_POST['companyId']]] {
$_SESSION['err'] = "You need to select a company!
"; unset[$_POST['companyListed']]; header["Location: newAdvertiser.php"]; exit[]; } else { $companyId = $_POST['companyId']; } } else { $_SESSION['err'] = "You are not authorised to enter this part of the site, please try again!
"; header["Location: index.php"]; exit[]; } ?>

trong phạm vi bao gồm điều kiện nằm trong nửa chừng của tập lệnh của tôi và tôi tin rằng đó là trường hợp không thể gửi tiêu đề sau khi bất kỳ mã html nào đã được gửi lại. Tôi đã đặt mã này ở đầu Nhà quảng cáo mới. trang php [mainPage] và nó hoạt động tốt

Làm cách nào để hủy đặt bài đăng trong PHP?

Bạn có thể sử dụng kết hợp cả unset[] và khởi tạo. unset[$_POST]; . bỏ đặt[$_POST]? Or in a single statement: unset[$_POST] ?

Hàm unset[] có ý nghĩa gì trong PHP?

unset[] hủy các biến đã chỉ định . Hành vi của unset[] bên trong một hàm có thể khác nhau tùy thuộc vào loại biến mà bạn đang cố hủy. Nếu một biến toàn cầu hóa không được đặt [] bên trong một hàm, thì chỉ biến cục bộ bị hủy.

Làm cách nào để bỏ đặt nút trong PHP?

bỏ đặt[ $_POST['vendor_add_submit'] ];

Làm cách nào để bỏ đặt đối tượng trong PHP?

Một đối tượng là một thể hiện của một lớp. Sử dụng hàm unset[] của PHP , chúng ta có thể xóa một đối tượng. Như vậy với hàm unset[] của PHP đặt đối tượng mà chúng ta muốn xóa làm tham số cho hàm này thì chúng ta có thể xóa đối tượng này.

Chủ Đề