1001 Freelance Projects
Свежие проекты с фриланс-бирж
Сегодня: 20-Apr-2024 09:12 GMT
Просмотр проекта
Подробный просмотр проекта (вы будете перенаправлены на сторонний сайт)
Название проекта: Счётчик запросов
Кто разместил: Внешний проект с weblancer.net
Открыт: 08-Nov-2021 10:25 GMT
Описание: Счётчик запросов 20-25ч 250$
<?php
/**
* Функционал позволяющий отследить закрытие окна браузера и деавторизовать пользователя.
* Используются keepalive посылки.
* Иных способов отследить закрытие окна браузера НЕТ.
* window.onunload = function() сработает и при переходе на другой URL или отправке формы.
*
*/
NG_Core::add_page_assets( 'auth_keepalive_code' );
function auth_keepalive_code() {
if ( ! is_user_logged_in() ) {
return;
}
$interval = (int) floor( USER_INVALIDATE_AFTER / 3 ) * 1000;
?>
<script type="application/javascript">
jQuery(document).ready(function ($) {
setInterval(function () {
$.get(ajax_url, {
ajax_action: 'keepalive',
}
);
}, <?php echo $interval; ?>);
// Global AJAX Error handler
$(document).ajaxError(function (event, jqXHR, settings, errorThrown) {
if (jqXHR.status === 403) {
window.location.assign('<?php echo ng_get_site_url(); ?>');
}
});
});
</script>
<?php
}
NG_Ajax::add_ajax_handler( 'keepalive', function () {
if ( NG_User::update_auth_cookies() ) {
echo 'I hear you.';
return;
}
header( 'HTTP/1.0 403 Access Forbidden', true, 403 );
echo 'Nope!';
} );
/**
* Class NG_User
*
* Авторизация пользователя. Сессии пользователя.
*
*
*/
class NG_User {
private static $user_id = false;
private static $auth_callback = null;
private static $pass = '';
static function determine_user() {
// Logging in
if ( cm_is_auth_request()
&& cm_is_http_post() ) {
if ( ( $name = cm_get_post( 'name', '+' ) )
&& ( $pass = cm_get_post( 'pass' ) ) ) {
if ( ! self::authenticate_user( $name, $pass ) ) {
ng_add_error_notice( 'Неверный пароль или имя пользователя.' );
return false;
}
else {
NG_Core::do_action( 'authenticated', self::$user_id );
}
}
// No further processing is needed
header( "Location: " . ng_get_site_url(), true );
exit;
}
if ( ! empty( self::$user_id ) ) {
return self::$user_id;
}
// Determining logged-in user
self::$user_id = false;
if ( ( $sid = cm_get_cookie( USER_AUTH_COOKIE_UID ) )
&& ( $hash = cm_get_cookie( USER_AUTH_COOKIE_HASH ) )
&& ( $expires = cm_get_cookie( USER_AUTH_COOKIE_EXPIRES ) )
&& ( $ka = cm_get_cookie( USER_AUTH_COOKIE_KEEPALIVE ) ) ) {
if ( hash_equals( $hash, self::create_hash( array( $sid, $expires, $ka ) ) ) ) {
if ( $expires < time()
|| $ka < time() ) {
self::logout();
return false;
}
self::$user_id = $sid;
/*if ( USER_AUTH_SAVE_PWD ) {
self::$pass = cm_array_get( $_SESSION, 'pass' );
if ( ! self::$pass ) {
self::$user_id = false;
}
}*/
}
}
// Logging out
if ( cm_is_auth_request()
&& ! cm_is_http_post()
&& ( 'logout' == cm_array_get( $_GET, 'action' ) ) ) {
self::logout();
}
return self::$user_id;
}
static function authenticate_user( $user_name, $pass ) {
if ( ! is_callable( self::$auth_callback ) ) {
return false;
}
if ( self::$user_id = call_user_func( self::$auth_callback, $user_name, $pass ) ) {
//setcookie( USER_AUTH_COOKIE_UID, $user_name, time() + USER_AUTH_VALID, '/' );
//setcookie( USER_AUTH_COOKIE_HASH, self::user_hash( $user_name ), time() + USER_AUTH_VALID, '/' );
self::set_auth_cookies( $user_name );
self::$pass = $pass;
/*if ( USER_AUTH_SAVE_PWD ) {
$_SESSION = $pass;
}*/
}
return self::$user_id;
}
static function set_auth_cookies( $user_name ) {
$expire = time() + USER_AUTH_VALID;
setcookie( USER_AUTH_COOKIE_EXPIRES, $expire, $expire, '/' );
setcookie( USER_AUTH_COOKIE_UID, $user_name, $expire, '/' );
$ka = time() + USER_INVALIDATE_AFTER;
setcookie( USER_AUTH_COOKIE_KEEPALIVE, $ka, $expire, '/' );
setcookie( USER_AUTH_COOKIE_HASH, self::create_hash( array( $user_name, $expire, $ka ) ), $expire, '/' );
}
static function update_auth_cookies() {
if ( ! self::determine_user() ) {
false;
}
$user_name = cm_get_cookie( USER_AUTH_COOKIE_UID );
$expire = cm_get_cookie( USER_AUTH_COOKIE_EXPIRES );
if ( ! $user_name
|| ! $expire ) {
return false;
}
$ka = time() + USER_INVALIDATE_AFTER;
setcookie( USER_AUTH_COOKIE_KEEPALIVE, $ka, $expire, '/' );
setcookie( USER_AUTH_COOKIE_HASH, self::create_hash( array( $user_name, $expire, $ka ) ), $expire, '/' );
return true;
}
/**
* @param array $params
*
* @return string
*/
static function create_hash( $params ) {
return hash( 'sha512', implode( '|', $params ) . USER_AUTH_SALT );
}
/**
* @param $callback
*
* @return bool
*/
static function add_authenticator( $callback ) {
if ( is_callable( $callback ) ) {
self::$auth_callback = $callback;
return true;
}
return false;
}
static function is_logged_in() {
return ! empty ( self::$user_id );
}
static function get_user_id() {
return self::$user_id;
}
static function get_user_pass() {
/*if ( USER_AUTH_SAVE_PWD ) {
return self::$pass;
}
return '';*/
}
static function logout() {
NG_Core::do_action( 'logout', self::$user_id );
self::$user_id = false;
self::$pass = '';
setcookie( USER_AUTH_COOKIE_UID, 'X', time() - 1, '/' );
setcookie( USER_AUTH_COOKIE_HASH, 'X', time() - 1, '/' );
/*if ( USER_AUTH_SAVE_PWD ) {
$_SESSION = array();
if ( session_status() === PHP_SESSION_ACTIVE ) {
session_destroy();
}
}*/
NG_Core::do_action( 'logged_out' );
}
}
Project ID: 4154034
Категория проекта:
Бюджет проекта:
Подробный просмотр проекта (вы будете перенаправлены на сторонний сайт)
Последние проекты / Все проекты
  Проект Открыт
Бот в TG на основі нейромережі - 4000UAH
Категория: Разработка ботов
20-Apr-2024
04:09 GMT
Надо сделать приложение для дипломки
Категория: Программирование и IT
20-Apr-2024
03:56 GMT
Специалист по анимации и видеомонтажу, создание креативного видеоконтента для канала
Категория: Видео
Бюджет: 100000 руб
20-Apr-2024
03:48 GMT
Индикаторы на Trading View
Категория: Веб-программирование, Разработка ботов
20-Apr-2024
03:24 GMT
Решить зачет по пдд
Категория: Бытовые услуги / Обучение
20-Apr-2024
03:17 GMT
Создать реалистичные фотографии персонажа для сайта
Категория: Иллюстрации и рисунки, Обработка фото
20-Apr-2024
03:15 GMT
Фотошоп фотографий
Категория: Фото
20-Apr-2024
03:07 GMT
3d product and explanation - 20USD
Категория: Анимация
20-Apr-2024
02:54 GMT
Настройка видео рекламы на YouTube
Категория: Реклама и Маркетинг, Таргетированная реклама
20-Apr-2024
02:38 GMT
Настройка видео рекламы на YouTube 20-Apr-2024
02:14 GMT
Обойти фэйс верификацию в приложении
Категория: Java, Swift
20-Apr-2024
01:57 GMT
Изменить камеру андройда на трансляцию RTMP - 100USD
Категория: Разработка под Android
20-Apr-2024
01:49 GMT
Рандомизация чисел с выводом в формат csv.
Категория: Прикладное программирование, Системное программирование
20-Apr-2024
01:36 GMT
Дизайн интерьера квартиры
Категория: Проектирование, Чертежи и схемы
20-Apr-2024
01:17 GMT
Блок-схема в AutoCAD - 500UAH
Категория: Чертежи и схемы
20-Apr-2024
01:14 GMT
Все проекты
Проекты по навыкам ...
Проекты 'android'
Проекты 'ajax'
Проекты 'asp'
Проекты 'aspnet'
Проекты 'cms'
Проекты 'cpp'
Проекты 'csharp'
Проекты 'css'
Проекты 'delphi'
Проекты 'design'
Проекты 'drupal'
Проекты 'excel'
Проекты 'facebook'
Проекты 'flash'
Проекты 'html'
Проекты 'java'
Проекты 'javascript'
Проекты 'joomla'
Проекты 'iphone'
Проекты 'mysql'
Проекты 'photoshop'
Проекты 'php'
Проекты 'python'
Проекты 'ruby'
Проекты 'seo'
Проекты 'sql'
Проекты 'sysadm'
Проекты 'translate'
Проекты 'typing'
Проекты 'twitter'
Проекты 'vbnet'
Проекты 'xml'
Проекты 'wordpress'
Проекты 'writing'
Проекты 'texts'
Читать RSS-ленты ... Новое!
Проекты 'android'
Проекты 'ajax'
Проекты 'asp'
Проекты 'aspnet'
Проекты 'cms'
Проекты 'cpp'
Проекты 'csharp'
Проекты 'css'
Проекты 'delphi'
Проекты 'design'
Проекты 'drupal'
Проекты 'excel'
Проекты 'facebook'
Проекты 'flash'
Проекты 'html'
Проекты 'java'
Проекты 'javascript'
Проекты 'joomla'
Проекты 'iphone'
Проекты 'mysql'
Проекты 'photoshop'
Проекты 'php'
Проекты 'python'
Проекты 'ruby'
Проекты 'seo'
Проекты 'sql'
Проекты 'sysadm'
Проекты 'translate'
Проекты 'typing'
Проекты 'twitter'
Проекты 'vbnet'
Проекты 'xml'
Проекты 'wordpress'
Проекты 'writing'
Проекты 'texts'
Новое!
Projects in English
Короткий URL:
1001fp.ru
Мобильная версия:
m.1001freelanceprojects.ru
Copyright © 2005-2022 1001 Freelance Projects