if ($right) { $n['value'] = Sequence::set($n['value'], $right, $item['value']); //Новость осталась но она включает устанавливаемые данные } return $r; }); if ($r) { $del = new Fix('del'); return $del; } $r = null; return $r; }); } } if ($list) { if (!$session_id) { $pass = md5(print_r($list, true) . time() . rand()); $pass = substr($pass, 0, 8); $sql = 'insert into `ses_sessions`(`password`) VALUES(?)'; $stmt = $db->prepare($sql); $stmt->execute(array($pass)); $session_id = $db->lastInsertId(); View::setCookie('infra_session_id', $session_id); View::setCookie('infra_session_pass', md5($pass)); } Session::writeNews($list, $session_id); //$ans['news']=array_merge($news,$list); } return Ans::ret($ans); /**/
<?php namespace infrajs\view; use infrajs\ans\Ans; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = array(); $ans['title'] = 'Проверка методов view'; View::setCookie('test', true); $val = View::getCookie('test'); if (!$val) { return Ans::err($ans, 'Неудалось восстановить значение из COOKIE'); } return Ans::ret($ans);
public static function change($session_id, $pass = null) { $email = Session::getEmail(); $session_id_old = Session::initId(); if (!$email) { //Текущая сессия не авторизированная $email = Session::getEmail($session_id); if ($email) { //А вот новая сессия аторизированна, значит нужно объединить сессии и грохнуть старую $newans = Session::recivenews(); //Нужно это всё записать в базу данных для сессии 1 Session::writeNews($newans['news'], $session_id); //Теперь старую сессию нужно удалить полностью //Надо подчистить 2 таблицы if ($session_id_old) { //хз бывает ли такое что его нет $conf = Config::get(); $tables = $conf['session']['change_session_tables']; //Массив с таблицами в которых нужно изменить session_id неавторизированного пользователя, при авторизации $db = Db::pdo(); Each::forr($tables, function &() use($session_id_old, $session_id, &$db) { $sql = 'UPDATE images SET session_id = ? WHERE session_id = ?;'; $stmt = $db->prepare($sql); $stmt->execute(array($session_id, $session_id_old)); $r = null; return $r; }); $sql = 'DELETE from ses_records where session_id=?'; $stmt = $db->prepare($sql); $stmt->execute(array($session_id_old)); $sql = 'DELETE from ses_sessions where session_id=?'; $stmt = $db->prepare($sql); $stmt->execute(array($session_id_old)); } } } global $infra_session_data; $infra_session_data = array(); if (is_null($pass)) { $user = Session::getUser($session_id); $pass = md5($user['password']); } View::setCookie(Session::getName('pass'), $pass); View::setCookie(Session::getName('id'), $session_id); View::setCookie(Session::getName('time'), 1); Session::syncNow(); }
/** * Access::admin(true) - пропускает только если ты администратор, иначе выкидывает окно авторизации * Access::admin(false) - пропускает только если ты НЕ администратор, иначе выкидывает окно авторизации * $ans выводится в json если нажать отмена * Access::admin(array('login','pass'));. */ public static function admin($break = null, $ans = array('msg' => 'Требуется авторизация', 'result' => 0)) { $data = static::$conf['admin']; $_ADM_NAME = $data['login']; $_ADM_PASS = $data['password']; $admin = null; //Неизвестно $realkey = md5($_ADM_NAME . $_ADM_PASS . $_SERVER['HTTP_USER_AGENT'] . $_SERVER['REMOTE_ADDR']); if (is_array($break)) { Nostore::on(); //Если имя в конфиге указано, и переданные данные в массиве соответствуют $admin = $_ADM_NAME && $break[0] === $_ADM_NAME && $break[1] === $_ADM_PASS; if ($admin) { View::setCookie('infra_admin', $realkey); } else { View::setCookie('infra_admin'); } } else { $key = View::getCookie('infra_admin'); $admin = $key === $realkey; if ($break === false) { Nostore::on(); View::setCookie('infra_admin'); $admin = false; } elseif ($break === true && !$admin) { Nostore::on(); //Если имя в конфиге указано, и переданные данные по HTTP соответствуют $admin = $_ADM_NAME && @$_SERVER['PHP_AUTH_USER'] == $_ADM_NAME && @$_SERVER['PHP_AUTH_PW'] == $_ADM_PASS; if ($admin) { View::setCookie('infra_admin', $realkey); } else { header('WWW-Authenticate: Basic realm="Protected Area"'); header('HTTP/1.0 401 Unauthorized'); echo json_encode($ans); exit; } } } return $admin; }