2014-12-18 4 views
0

Я сделал страницу входа в систему и во время навигации с одной страницы на другую, я хотел бы, чтобы уничтожить ненужные занятияPHP - Foreach выглядеть давая предупреждение о

$keepSessions = array('vendor_id','email_login','user_password','passport_id'); 
    foreach($_SESSION as $sessionKey){ 
     if (!in_array($sessionKey,$keepSessions)) { 
      unset($_SESSION[$sessionKey]); 
     } 
    } 

К сожалению, я получаю следующее сообщение об ошибке PHP Предупреждение: Незаконное смещение типа в отключенном

Я не могу показаться, чтобы найти решение, которое использует Еогеасп и $ _SESSION для elimate выше ошибок

+2

Вы добавляете 'session_start()' на страницу и печатаете '$ _SESSION' –

+0

Используйте' array_keys ($ _ SESSION) как '... – vaso123

+0

@TamilSelvan Да. Я. Он включен выше. – user2333968

ответ

3
$keepSessions = array('vendor_id','email_login','user_password','passport_id'); 
foreach($_SESSION as $sessionKey => $sessionValue){ 
    if (!in_array($sessionKey,$keepSessions)) { 
     unset($_SESSION[$sessionKey]); 
    } 
} 

Кажется, вы использовали значение внутри $ _SESSION VARI а не ключи. Надеюсь, поможет!

+0

Я бы также добавил 'isset()' before' in_array() '(слияние с &&) только по соображениям безопасности ... – UnskilledFreak

+1

@UnskilledFreak, который не понадобится. foreach будет только зацикливаться на том, что уже установлено –

+0

У меня также был такой сценарий, и я получил некоторые ошибки при разборе сеанса, так как причина была ошибкой сеанса XSS, которая вводила в сеанс чистые неясные вещи, добавляя или удаляя там вары разбор сеанса - но если это приложение безопасно - я уже сказал слово :) – UnskilledFreak