2012-12-19 34 views
5

Tôi đang cố gắng tăng cường các phiên của mình và tìm thấy mã bên dưới. Câu hỏi của tôi là dòng này isset($_SESSION['last_ip']) !== $_SERVER['REMOTE_ADDR'].làm cứng phiên php - lỗi so sánh

Khi tôi phản đối việc so sánh các số IP giống nhau nhưng dòng mã đó so sánh hai số khác nhau. Nếu tôi so sánh nó như là != thì so sánh hoạt động. Tại sao vậy? Cả hai giá trị có hoàn toàn giống nhau không? Bất kỳ đề xuất làm thế nào tôi có thể sửa chữa nó để họ là ===?

ini_set('session.cookie_httponly', true); 
session_start(); 
if (isset($_SESSION['last_ip']) === false) { 
    $_SESSION['last_ip'] = $_SERVER['REMOTE_ADDR']; 
} 
if (isset($_SESSION['last_ip']) !== $_SERVER['REMOTE_ADDR']) { 
    echo $_SESSION['last_ip'] . '/' . $_SERVER['REMOTE_ADDR']; // the output is identical 
} 
+0

$ _SESSION ['last_ip'] có được điều khiển theo bất kỳ cách nào không? Giống như thêm dấu gạch chéo hoặc khoảng trắng thừa? –

+0

@PRPGKhông, không chính xác như được hiển thị. (cập nhật câu hỏi) –

+0

Phải có một số loại khác biệt nếu so sánh hoạt động, nhưng không giống nhau. có thể thử cắt cả hai giá trị? –

Trả lời

11
if (isset($_SESSION['last_ip']) !== $_SERVER['REMOTE_ADDR']) { 

Bạn đang kiểm tra để xem nếu một là thiết lập và khác khớp với giá trị boolean. Xóa isset.

2

Cá nhân, tôi sẽ được giải quyết này với VÀ hành trong chuỗi NẾU như:

if (isset($_SESSION['last_ip']) && $_SESSIOn['last_ip'] != $_SERVER['REMOTE_ADDR']) { 

Điều này giúp?

+0

từ dòng này 'isset ($ _ SESSION ['last_ip']) && $ _SESSIOn ['last_ip']! = $ _SERVER ['REMOTE_ADDR']' là điều này nói rằng nếu phiên last_ip không tồn tại thì sự so sánh sẽ không xảy ra? –

Các vấn đề liên quan