Существует ли способ динамично создать постоянные переменные на лету?
Идея состоит в том, что после вхождения в систему, пользователя попросили бы загрузить небольшой текстовый файл, который будет освобожден и присвоен var, который был бы доступен по всей системе.
Если бы это возможно, только чтобы быть ясным, эта переменная затем только была бы доступна для того пользователя и только в то время как сессия жива?
Так как безопасность была бы основным беспокойством здесь, это было бы более практично для хранения var в переменной сеанса?
План:
Данные в дб будут зашифрованы через mcrypt, и ключ будет сохранен на картах флэш-памяти USB. Пользователь вставит карту флэш-памяти при попытке получать доступ к системе. После входа в систему приложение предложит пользователю загружать ключ. Они перейдут к карте флэш-памяти и ключу. Через fopen и освобожденный, ключ будет присвоен глобальному var, который затем предоставит доступ к зашифрованным данным и будет использоваться для шифрования новой информации, вводимой в дб. Когда пользователь выходит из системы, или сессия испытывает таймаут, глобальный var станет пустым.
Спасибо!
NB: var должен был бы быть персистентным и доступным через многие страницы, и cookie отсутствуют.
Я решил, что будет работать следующее решение:
Когда пользователь входит в систему, ему будет предложено загрузить свой ключ. Скрипт загрузки присвоит уникальное и случайное имя файла и поместит его во временную директорию.
Путь к файлу будет установлен в переменной сессии. Когда потребуется, путь будет вызван из переменной сессии, и file_get_contents()
будет использован для получения ключа.
Когда сессия завершится или закончится, переменная сессии будет удалена, а сам файл будет удален через unlink()
.
Спасибо!
Лучшим решением для вас, вероятно, было бы сохранить его в переменной сеанса, мне кажется, это лучший способ управлять данными такого рода, хотя это может зависеть от размера файла.
<?php
function first() {
global $foo;
$foo = 'bar';
}
function second() {
global $foo;
echo $foo;
}
first();
second();
?>
Просто добавьте ключевое слово global и вы сможете засунуть в глобальную область видимости все, что захотите. Хотя, как сказал Люк, похоже, что вам следует использовать автоматическую переменную сессии. http://www.php.net/manual/en/reserved.variables.session.php