Próbuję wzmocnić moje sesje i znalazłem poniższy kod. Moje pytanie to ta linia isset($_SESSION['last_ip']) !== $_SERVER['REMOTE_ADDR']
.harden sesja php - błąd porównania
Kiedy powtarzam porównanie, numery IP są takie same, ale linia kodu porównuje te dwie wartości. Jeśli porównam to jako !=
, to porównanie działa. Dlaczego? Czy obie wartości nie powinny być całkowicie identyczne? Wszelkie sugestie, jak mogę to naprawić, aby były ===
?
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
}
Czy $ _SESSION ['last_ip'] jest w jakikolwiek sposób zmanipulowane? Jak dodane ukośniki lub dodatkowe spacje? –
@PRPGFerret nie, jest dokładnie taki, jak pokazano. (zaktualizowane pytanie) –
Musi istnieć NIEKTÓREJ różnicy, jeśli porównanie działa, ale identyczne nie jest. może spróbuj przyciąć obie wartości? –