Я согласен с Уитстоном. get_defined_vars()
просто идеально подходит для "многократных" трюков.
Этот метод ниже, сбрасывает ВСЕ переменные. Все, кроме найденных в безымянном массиве внутри цикла foreach.
foreach(get_defined_vars() as $k=>$y){
if( !in_array( $k,
array(
'myRequredVariableName1',
'myRequredVariableName2',
'_ENV',
'_SESSION',
'_COOKIE',
'HTTP_SESSION_VARS',
'HTTP_COOKIE_VARS'
)))
{ $$k=null; unset($$k);}
unset($y, $k);
}
// Check for leftovers
header('Content-type:text/plain; charset=utf-8');
var_export(get_defined_vars());
exit;
Значения на самом деле являются именами переменных без '$', где переменная переменная unset($$k);
соответствует РЕАЛЬНОМУ и определенному и уничтожает его, если он присутствует. Таким образом, таким образом, вы можете иметь полный контроль над тем, что осталось для системы.
Обратите внимание , что некоторые настройки общего хостинга полагаются только на суперглобальные переменные _SERVER, поэтому _ENV, HTTP_SESSION_VARS, HTTP_COOKIE_VARS вообще не требуются. Скорее всего, вы всегда захотите сохранить _COOKIE и _SESSION, но не _GET и _POST, а также _FILES. Решение меняется. Протестируйте и убедитесь сами, что должно стоять в массиве, прежде чем применять эту хитрость в своей производственной среде.