Example #1
0
                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);
/**/
Example #2
0
<?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);
Example #3
0
 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();
 }
Example #4
0
 /**
  * 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;
 }