Опять не подходит потому что куки могут украсть.Откуда вы такие специалисты по безопасности беретесь?..
Вопрос остаётся - как реализовать нормальный и безопасный способ для такой функции, чтобы больше не приходилось использовать другие варианты после каждой очередной жалобы на взлом?Взлом через уведенную куку входит в топ 5 малореальных сценариев взлома, если у вас есть хоть какая-то защита от XSS.
Хранить IP последнего входа в аккаунт? Идея неплохая, но если каким-то магическим образом БД взломают, то все айпи попадут нехорошим людям.Оу, вас это больше всего расстраивает? Учитывая что 80% траффика сейчас идет через мобильные сети, айпи будет разниться при каждой сессии авторизации. И в данном случае вероятность такого взлома вы почему-то оцениваете практически как "магию", в то время как доступ к кукам пользователя у вас на уровне "ну, это точно случится, и скорее всего раньше, чем позже, любой может там гулять как у себя дома"...
- $i = 0;
- $coll = '';
- $mask = '';
- foreach ($params as $key => $value) {
- if ($i === 0) {
- $coll = $coll . "$key";
- $mask = $mask . "'" . "$value" . "'";
- } else {
- $coll = $coll . ", $key";
- $mask = $mask . ", '" . "$value" . "'";
- }
- $i++;
- }
+ $coll = implode(',', array_keys($params));
+ $mask = ':' . implode(',:', array_keys($params));
function some_plugin_name_get_remote_address() {
$remote_addr = getenv('HTTP_CLIENT_IP') ? getenv('HTTP_CLIENT_IP') :
(getenv('HTTP_X_FORWARDED_FOR') ? getenv('HTTP_X_FORWARDED_FOR') :
(getenv('HTTP_X_FORWARDED') ? getenv('HTTP_X_FORWARDED') :
(getenv('HTTP_FORWARDED_FOR') ? getenv('HTTP_FORWARDED_FOR') :
(getenv('HTTP_FORWARDED')?getenv('HTTP_FORWARDED'):
getenv('REMOTE_ADDR')
))));
$remote_addr = str_replace('for=', '', $remote_addr);
return $remote_addr;
}
CREATE TABLE species (
species_id INTEGER PRIMARY KEY,
type_id INTEGER,
species_name VARCHAR(255) NOT NULL,
species_amount INTEGER,
date_start DATE,
species_status ENUM ('active', 'absent', 'fairy') NOT NULL DEFAULT 'active'
);
CREATE TABLE species_statuses (
id INTEGER PRIMARY KEY,
name VARCHAR(255) NOT NULL
);
INSERT INTO species_statuses VALUES (1, 'active'), (2, 'absent'), (3, 'fairy');
CREATE TABLE species (
id INTEGER PRIMARY KEY,
type_id INTEGER,
name VARCHAR(255) NOT NULL,
amount INTEGER,
date_start DATE,
status_id INTEGER DEFAULT 1,
FOREIGN KEY (status_id) REFERENCES species_statuses(id)
);