Фриланс: заказать «Веб-программирование – ajax»
1 открытый заказ
Закажите услуги фрилансеров для вашего проекта прямо сейчас!
Размещение заказа на фриланс бирже бесплатно, а предложения поступят уже через несколько минут.
Форма работала, но сломалась. Данные не попадают в админку.
$10
2 заявки
Закрыт
Нужен специалист Ajax, Json, JS нужно делать обработку данных Json: запись, вывод, фильтр и т.д.
*Дилетантство или "я еще учусь" ... Читать дальше
*Дилетантство или "я еще учусь" ... Читать дальше
Нужен специалист Ajax, Json, JS нужно делать обработку данных Json: запись, вывод, фильтр и т.д.
*Дилетантство или "я еще учусь" НЕ подходит, ТОЛЬКО с опытом !
*Нужно оперативно отвечать на поставленные вопросы. Свернуть
*Дилетантство или "я еще учусь" НЕ подходит, ТОЛЬКО с опытом !
*Нужно оперативно отвечать на поставленные вопросы. Свернуть
7 заявок
Закрыт
Всем добро дня!
Ищу Битрикс программиста на проект. Пиши стоимость часа.
Кастомная доработка корзины, подключение доставки, выгрузка из 1С и ... Читать дальше
Ищу Битрикс программиста на проект. Пиши стоимость часа.
Кастомная доработка корзины, подключение доставки, выгрузка из 1С и ... Читать дальше
Всем добро дня!
Ищу Битрикс программиста на проект. Пиши стоимость часа.
Кастомная доработка корзины, подключение доставки, выгрузка из 1С и так по мелочи.
Если вы хорошо разбираетесь в Битрикс, понимание D7, умение писать ajax запросы для фильтров товаров.
Подробности вышлю выбранному исполнителю.
Если вы постоянно болеете, пропадаете, не можете быть постоянно в рабочие часы на связи,
не пишите и не тратьте свое время и мое тоже. Свернуть
Ищу Битрикс программиста на проект. Пиши стоимость часа.
Кастомная доработка корзины, подключение доставки, выгрузка из 1С и так по мелочи.
Если вы хорошо разбираетесь в Битрикс, понимание D7, умение писать ajax запросы для фильтров товаров.
Подробности вышлю выбранному исполнителю.
Если вы постоянно болеете, пропадаете, не можете быть постоянно в рабочие часы на связи,
не пишите и не тратьте свое время и мое тоже. Свернуть
5 заявок
Закрыт
На удаленную постоянную работу в веб-студию требуется веб-программист.
Требования:
- Опыт работы с PHP
- Уверенное владение: JavaScript (jQuery) и ... Читать дальше
Требования:
- Опыт работы с PHP
- Уверенное владение: JavaScript (jQuery) и ... Читать дальше
На удаленную постоянную работу в веб-студию требуется веб-программист.
Требования:
- Опыт работы с PHP
- Уверенное владение: JavaScript (jQuery) и Ajax;
- Умение разбираться в чужом коде;
- Знания CMS систем (Opencart, WordPress)
- Базовые знания в системах Linux;
- Опыт создания сайтов на CMS с нуля;
Заработная плата 40000-50000 рублей/месяц по результатам испытательного периода.
Оплачиваемый испытательный период 1 месяц.
На время испытательного периода оплата происходит по схеме:
1 день отработали - получили оплату
3 дня отработали - получили оплату
7 дней отработали - получили оплату
14 дней отработали - получили оплату.
После окончания испытательного периода оплата 1 или 2 раза в месяц, по Вашему желанию.
График работы: пн-пт с 9 до 18 (1 час - перерыв на обед), (сб. и вс. - выходные дни).
Возможно смещение графика на 1-2 часа.
Оплата удобным для вас способом (на карту вашего банка, Яндекс.Деньги, WebMoney, и т.д.). Валюта оплаты российский рубль.
В обязательном порядке используем программу TimeTracker ссылка для учета рабочего времени за компьютером.
Стучать в Telegram: @roman_stypeni
с пометкой "программист" или здесь в личные сообщения. Свернуть
Требования:
- Опыт работы с PHP
- Уверенное владение: JavaScript (jQuery) и Ajax;
- Умение разбираться в чужом коде;
- Знания CMS систем (Opencart, WordPress)
- Базовые знания в системах Linux;
- Опыт создания сайтов на CMS с нуля;
Заработная плата 40000-50000 рублей/месяц по результатам испытательного периода.
Оплачиваемый испытательный период 1 месяц.
На время испытательного периода оплата происходит по схеме:
1 день отработали - получили оплату
3 дня отработали - получили оплату
7 дней отработали - получили оплату
14 дней отработали - получили оплату.
После окончания испытательного периода оплата 1 или 2 раза в месяц, по Вашему желанию.
График работы: пн-пт с 9 до 18 (1 час - перерыв на обед), (сб. и вс. - выходные дни).
Возможно смещение графика на 1-2 часа.
Оплата удобным для вас способом (на карту вашего банка, Яндекс.Деньги, WebMoney, и т.д.). Валюта оплаты российский рубль.
В обязательном порядке используем программу TimeTracker ссылка для учета рабочего времени за компьютером.
Стучать в Telegram: @roman_stypeni
с пометкой "программист" или здесь в личные сообщения. Свернуть
$700
3 заявки
Закрыт
Есть всплывающее окно, в нем форма логина, сейчас она просто отправляет данные и не важно правильно или нет ввели, закрывается. ... Читать дальше
Есть всплывающее окно, в нем форма логина, сейчас она просто отправляет данные и не важно правильно или нет ввели, закрывается. нужно перевести на ajax с помощью fetch, контроллер отдельный есть для логина.
Ошибки выводить обратно в response, и затем в форму. Свернуть
Ошибки выводить обратно в response, и затем в форму. Свернуть
4 заявки
Закрыт
Мне нужен механизм тегов на ларавеле как на вордпресе,
сейчас они работают, но создаются с отдельной админки, нужно из самого ... Читать дальше
сейчас они работают, но создаются с отдельной админки, нужно из самого ... Читать дальше
Завершен
Требуется адекватный специалист в JavaScript, Ajax. Нужен специалист в JavaScript, Ajax, html5 работа с графиками.
*Нужно добавить к графику новые ... Читать дальше
*Нужно добавить к графику новые ... Читать дальше
Требуется адекватный специалист в JavaScript, Ajax. Нужен специалист в JavaScript, Ajax, html5 работа с графиками.
*Нужно добавить к графику новые объекты.
* Добавить функционал изменения типа графика.
Дилетантство или "я еще учусь" НЕ подходит, ТОЛЬКО с опытом !
*Нужно оперативно отвечать на поставленные вопросы.
*Категорически неприемлемо вранье если чего-то не знаете. Свернуть
*Нужно добавить к графику новые объекты.
* Добавить функционал изменения типа графика.
Дилетантство или "я еще учусь" НЕ подходит, ТОЛЬКО с опытом !
*Нужно оперативно отвечать на поставленные вопросы.
*Категорически неприемлемо вранье если чего-то не знаете. Свернуть
3 заявки
Закрыт
Ищем Backend / Frontend разработчика для разработки краулера сайтов.
Используемые технологии: PHP (ООП), MySQL, JS/Ajax, ExpressJS, Promise. Linux, ... Читать дальше
Используемые технологии: PHP (ООП), MySQL, JS/Ajax, ExpressJS, Promise. Linux, ... Читать дальше
Ищем Backend / Frontend разработчика для разработки краулера сайтов.
Используемые технологии: PHP (ООП), MySQL, JS/Ajax, ExpressJS, Promise. Linux, Git, Docker.
Приветствуется опыт работы с высоконагруженными проектами и методами их настройки и балансировки.
Пишите, задавайте вопросы и озвучивайте ваш опыт – пообщаемся. Свернуть
Используемые технологии: PHP (ООП), MySQL, JS/Ajax, ExpressJS, Promise. Linux, Git, Docker.
Приветствуется опыт работы с высоконагруженными проектами и методами их настройки и балансировки.
Пишите, задавайте вопросы и озвучивайте ваш опыт – пообщаемся. Свернуть
2 заявки
Закрыт
Здравствуйте. Укажите пожалуйста сроки и стоимость.
Необходимо реализовать захват изображения с камеры телефона из html формы.
Подробнее.
Есть html форма ... Читать дальше
Необходимо реализовать захват изображения с камеры телефона из html формы.
Подробнее.
Есть html форма ... Читать дальше
Здравствуйте. Укажите пожалуйста сроки и стоимость.
Необходимо реализовать захват изображения с камеры телефона из html формы.
Подробнее.
Есть html форма в закрытой части сайта. В форме, пользователь нажимает кнопку и вызывает камеру смартфона.
Фотографирует. Делает 1-3 снимка.
Полученные фотографии, через ajax сразу загружаются на сервер и прикрепляются к форме. В момент загрузки на фото в углу накладывается дата и время загрузки.
Далее, данные формы сохраняются.
Важно! Получение фотографий возможно только с камеры. Из памяти телефона загрузка фотографий запрещена. Свернуть
Необходимо реализовать захват изображения с камеры телефона из html формы.
Подробнее.
Есть html форма в закрытой части сайта. В форме, пользователь нажимает кнопку и вызывает камеру смартфона.
Фотографирует. Делает 1-3 снимка.
Полученные фотографии, через ajax сразу загружаются на сервер и прикрепляются к форме. В момент загрузки на фото в углу накладывается дата и время загрузки.
Далее, данные формы сохраняются.
Важно! Получение фотографий возможно только с камеры. Из памяти телефона загрузка фотографий запрещена. Свернуть
Завершен
Требуется адекватный специалист в JavaScript, Ajax.
Нужен специалист в JavaScript, Ajax работа с графиками и live обновление данных.
Дилетантство или ... Читать дальше
Нужен специалист в JavaScript, Ajax работа с графиками и live обновление данных.
Дилетантство или ... Читать дальше
Требуется адекватный специалист в JavaScript, Ajax.
Нужен специалист в JavaScript, Ajax работа с графиками и live обновление данных.
Дилетантство или "я еще учусь" НЕ подходит, ТОЛЬКО с опытом !
Большим + будет еще, знание в построении структуры БД.
*Нужно оперативно отвечать на поставленные вопросы.
*Категорически неприемлемо вранье если чего-то не знаете.
Интересует долгосрочное сотрудничество. Свернуть
Нужен специалист в JavaScript, Ajax работа с графиками и live обновление данных.
Дилетантство или "я еще учусь" НЕ подходит, ТОЛЬКО с опытом !
Большим + будет еще, знание в построении структуры БД.
*Нужно оперативно отвечать на поставленные вопросы.
*Категорически неприемлемо вранье если чего-то не знаете.
Интересует долгосрочное сотрудничество. Свернуть
3 заявки
Закрыт
Добрый день, требуется сделать PHP скрипт, который будет проверять VIN автомобиля на сайте ссылка и возвращать результат проверки. После ввода ... Читать дальше
Добрый день, требуется сделать PHP скрипт, который будет проверять VIN автомобиля на сайте ссылка и возвращать результат проверки. После ввода VIN в форму (пример vin: KNDPMCACXL7675721) и нажатия кнопки подтверждения там происходит AJAX запрос на URL ссылка, который возвращает следующий результат
{"code":"0","vin":"KNDPMCACXL7675721","year":"2020","make":"Kia","model":"Sportage LX","countryOfAssembly":"South Korea","body":"SUV 4D","vehicleClass":"CUV - Entry Level","recordCount":7,"score":85,"scoreRangeLow":89,"scoreRangeHigh":94,"buybackAssurance":"NOT_ASSURED","lemonRecord":false,"accidentRecord":false,"floodRecord":false,"singleOwner":true,"engine":"2.4L I4 DI","status":"SUCCESS"}
Вот этот результат и нужно получить.
Сложностью является то, что там стоит ReCaptcha. Для ее разгадывания нужно использовать сервис ссылка Или предложите ваше решение, что бы эту капчу не нужно было разгадывать.
Скрипт должен представлять собой функцию с параметром vin, к примеру function autocheck($vin) {return $json;}
Скрипт должен использовать CURL для запросов к сайту. Свернуть
{"code":"0","vin":"KNDPMCACXL7675721","year":"2020","make":"Kia","model":"Sportage LX","countryOfAssembly":"South Korea","body":"SUV 4D","vehicleClass":"CUV - Entry Level","recordCount":7,"score":85,"scoreRangeLow":89,"scoreRangeHigh":94,"buybackAssurance":"NOT_ASSURED","lemonRecord":false,"accidentRecord":false,"floodRecord":false,"singleOwner":true,"engine":"2.4L I4 DI","status":"SUCCESS"}
Вот этот результат и нужно получить.
Сложностью является то, что там стоит ReCaptcha. Для ее разгадывания нужно использовать сервис ссылка Или предложите ваше решение, что бы эту капчу не нужно было разгадывать.
Скрипт должен представлять собой функцию с параметром vin, к примеру function autocheck($vin) {return $json;}
Скрипт должен использовать CURL для запросов к сайту. Свернуть
3 заявки
Закрыт
Для программистов, разбирающихся в wordpress.
Есть страница, на которой выводятся афиши мероприятий и некоторая выходная текстовая информация под ними. На ... Читать дальше
Есть страница, на которой выводятся афиши мероприятий и некоторая выходная текстовая информация под ними. На ... Читать дальше
Для программистов, разбирающихся в wordpress.
Есть страница, на которой выводятся афиши мероприятий и некоторая выходная текстовая информация под ними. На странице два фильтра: годы и месяцы. Вывод в шаблоне всех произвольных полей уже реализован. Верстка тоже есть.
Необходимо добавить следующий функционал:
реализовать загрузку на странице различных афиш (в хронологическом порядке) в зависимости от выбранного месяца и года с помощью ajax;месяцы и годы в фильтре должны добавляться в зависимости от фактически используемых в админке;возможно придется немного переписать выбор года и месяца при добавлении афиш в админке, в зависимости от выбранной исполнителем фактической реализации;месяцы и годы должны работать связано, т.е. если, например, в 2022 году добавлены афиши в трех месяцах, то при выборе 2022 года в фильтре должны отображаться только эти три месяца;по умолчанию при первой загрузке страницы должны подгружаться афиши за текущий месяц;на сайте русская и английская версия (работающая через wpml плагин), поэтому должно все работать в обоих версиях;Еще нужно дописать, чтобы высота блоков (состоящая из афиши и выходной информации) на странице определялась по самому высокому блоку на странице или в ряду. Нужно, чтобы верстка не ломалась из-за разной высоты блоков в row.
Версия WordPress 4.8.16. Задачу описал подробно. По факту работы на 2-3 часа.
Ссылку на сайт отправлю подходящему исполнителю.
Можно оформить безопасную сделку.
Спасибо за отклик. Свернуть
Есть страница, на которой выводятся афиши мероприятий и некоторая выходная текстовая информация под ними. На странице два фильтра: годы и месяцы. Вывод в шаблоне всех произвольных полей уже реализован. Верстка тоже есть.
Необходимо добавить следующий функционал:
реализовать загрузку на странице различных афиш (в хронологическом порядке) в зависимости от выбранного месяца и года с помощью ajax;месяцы и годы в фильтре должны добавляться в зависимости от фактически используемых в админке;возможно придется немного переписать выбор года и месяца при добавлении афиш в админке, в зависимости от выбранной исполнителем фактической реализации;месяцы и годы должны работать связано, т.е. если, например, в 2022 году добавлены афиши в трех месяцах, то при выборе 2022 года в фильтре должны отображаться только эти три месяца;по умолчанию при первой загрузке страницы должны подгружаться афиши за текущий месяц;на сайте русская и английская версия (работающая через wpml плагин), поэтому должно все работать в обоих версиях;Еще нужно дописать, чтобы высота блоков (состоящая из афиши и выходной информации) на странице определялась по самому высокому блоку на странице или в ряду. Нужно, чтобы верстка не ломалась из-за разной высоты блоков в row.
Версия WordPress 4.8.16. Задачу описал подробно. По факту работы на 2-3 часа.
Ссылку на сайт отправлю подходящему исполнителю.
Можно оформить безопасную сделку.
Спасибо за отклик. Свернуть
1 заявка
Закрыт
Счётчик запросов 20-25ч 250$
<?php
/**
* Функционал позволяющий отследить закрытие окна браузера и деавторизовать пользователя.
* Используются keepalive посылки. ... Читать дальше
<?php
/**
* Функционал позволяющий отследить закрытие окна браузера и деавторизовать пользователя.
* Используются keepalive посылки. ... Читать дальше
Счётчик запросов 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' );
}
} Свернуть
<?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' );
}
} Свернуть
$250
2 заявки
Закрыт
Необходимо делать сайты на базе WordPress с многими допилами как в логике в админке, так и на стороне бэкенда с ... Читать дальше
Необходимо делать сайты на базе WordPress с многими допилами как в логике в админке, так и на стороне бэкенда с бизнес-логикой.Сделать авторизацию через ОК, ВК, Телегу и ФБ.
Для этого нужно хорошо разбираться в строении WordPress.
Стек: PHP >= 7.0, понимание ООП, MySQL, JS (в том числе jQuery и AJAX)
Оплата по результатам собеседования Свернуть
Для этого нужно хорошо разбираться в строении WordPress.
Стек: PHP >= 7.0, понимание ООП, MySQL, JS (в том числе jQuery и AJAX)
Оплата по результатам собеседования Свернуть
7 заявок
Закрыт
Доработки исправления ошибок в интернет-магазине.Исправление ошибок в верстке, в работе личного кабинета.Доработка, установка и настройка модулей доставки.Магазин работает на 1С-Битрикс.Проект ... Читать дальше
Доработки исправления ошибок в интернет-магазине.Исправление ошибок в верстке, в работе личного кабинета.Доработка, установка и настройка модулей доставки.Магазин работает на 1С-Битрикс.Проект с макетам расположен projects.invisionapp.comРасматриваем специалиста с опытом:-Глубокие знания HTML5, CSS3, опыт адаптивной верстки-Опыт разработки кросс-браузерных веб-приложений с асинхронным client/server взаимодействием (JSON, AJAX, WebSocket)-Опыт отладки JS кода (performance, memory leaks, etc)-PHP7.0+-Опыт проектирования реляционных баз данных (MySQL, PostgreSQL ), хорошее знание SQL и умение оптимизировать SQL –запросы-Понимание ООП и паттернов проектирования, следование принципам SOLID и DRY-Живые реализованных проектов на БитриксеНам нужен специалист понимающий что нужно делать, а не ждущий рассказов как ему это сделать. Свернуть
нет заявок
Закрыт
Есть интересная идея сайта-сервиса, на котором пользователи могут добавлять скидки и промокоды из разных магазинов, а в обмен получают
бонусные ... Читать дальше
бонусные ... Читать дальше
Есть интересная идея сайта-сервиса, на котором пользователи могут добавлять скидки и промокоды из разных магазинов, а в обмен получают
бонусные рубли на счёт.
Вам нужно создать функционал для добавления скидок, проверки этих скидок модераторами, вывод баланса и т.д.
Подробное ТЗ с картинками и пояснениями здесь ссылка
От вас требуется:
знание и опыт разработки под WordPressphp, js (jquery, ajax)css
Максимальный бюджет 50 000 рублей, срок 2 месяца. Свернуть
бонусные рубли на счёт.
Вам нужно создать функционал для добавления скидок, проверки этих скидок модераторами, вывод баланса и т.д.
Подробное ТЗ с картинками и пояснениями здесь ссылка
От вас требуется:
знание и опыт разработки под WordPressphp, js (jquery, ajax)css
Максимальный бюджет 50 000 рублей, срок 2 месяца. Свернуть
$700
5 заявок
Закрыт
Нужен специалист в JavaScript, Ajax работа с графиками и live обновление данных.
Дилетантство или "я еще учусь" НЕ подходит ! ... Читать дальше
Дилетантство или "я еще учусь" НЕ подходит ! ... Читать дальше
Нужен специалист в JavaScript, Ajax работа с графиками и live обновление данных.
Дилетантство или "я еще учусь" НЕ подходит ! ) Свернуть
Дилетантство или "я еще учусь" НЕ подходит ! ) Свернуть
5 заявок
Закрыт
На удаленную постоянную работу в веб-студию требуется веб-программист. Веб-студия более 10 лет на рынке, ссылку вышлю при собеседовании.
Требования:
- ... Читать дальше
Требования:
- ... Читать дальше
На удаленную постоянную работу в веб-студию требуется веб-программист. Веб-студия более 10 лет на рынке, ссылку вышлю при собеседовании.
Требования:
- Опыт работы с PHP
- Уверенное владение: JavaScript (jQuery) и Ajax;
- Умение разбираться в чужом коде;
- Знания CMS систем (Opencart, WordPress)
- Базовые знания в системах Linux;
- Опыт создания сайтов на CMS с нуля;
Заработная плата 35000-50000 рублей/месяц по результатам собеседования.
Оплачиваемый испытательный период.
График работы: пн-пт с 9 до 18 (1 час - перерыв на обед), (сб. и вс. - выходные дни).
Возможно смещение графика на 1-2 часа.
Оплата удобным для вас способом (на карту вашего банка, Яндекс.Деньги, WebMoney, и т.д.). Валюта оплаты российский рубль.
В обязательном порядке используем программу TimeTracker ссылка для учета рабочего времени за компьютером.
Стучать в Telegram: @roman_stypeni
с пометкой "программист" или здесь в личные сообщения. Свернуть
Требования:
- Опыт работы с PHP
- Уверенное владение: JavaScript (jQuery) и Ajax;
- Умение разбираться в чужом коде;
- Знания CMS систем (Opencart, WordPress)
- Базовые знания в системах Linux;
- Опыт создания сайтов на CMS с нуля;
Заработная плата 35000-50000 рублей/месяц по результатам собеседования.
Оплачиваемый испытательный период.
График работы: пн-пт с 9 до 18 (1 час - перерыв на обед), (сб. и вс. - выходные дни).
Возможно смещение графика на 1-2 часа.
Оплата удобным для вас способом (на карту вашего банка, Яндекс.Деньги, WebMoney, и т.д.). Валюта оплаты российский рубль.
В обязательном порядке используем программу TimeTracker ссылка для учета рабочего времени за компьютером.
Стучать в Telegram: @roman_stypeni
с пометкой "программист" или здесь в личные сообщения. Свернуть
$700
1 заявка
Закрыт
Написать Веб-интерфейс для управления добавления/удаления и редактирования записей в таблице БД подобно PHPMyAdmin путем нажатия на
ячейку, с небольшими особенностями ... Читать дальше
ячейку, с небольшими особенностями ... Читать дальше
Написать Веб-интерфейс для управления добавления/удаления и редактирования записей в таблице БД подобно PHPMyAdmin путем нажатия на
ячейку, с небольшими особенностями по функционалу. Панель управления
должна быть написана на чистом PHP 7.4 и выше, без каких либо
шаблонизаторов, фреймоврков и т.д. Допускаются необходимые библиотеки
JQuery, AJAX, Bootstrap и т.д. Код в основных моментах должен быть с
понятными комментариями.
Полное ТЗ в прикрепленном файле. Свернуть
ячейку, с небольшими особенностями по функционалу. Панель управления
должна быть написана на чистом PHP 7.4 и выше, без каких либо
шаблонизаторов, фреймоврков и т.д. Допускаются необходимые библиотеки
JQuery, AJAX, Bootstrap и т.д. Код в основных моментах должен быть с
понятными комментариями.
Полное ТЗ в прикрепленном файле. Свернуть
$50
нет заявок
Закрыт
Нужно интегрировать эти два плагина в интернет магазин на wordpress+woocommerce.
В магазине на данный момент 4000+- товаров, много атрибутов и ... Читать дальше
В магазине на данный момент 4000+- товаров, много атрибутов и ... Читать дальше
Нужно интегрировать эти два плагина в интернет магазин на wordpress+woocommerce.
В магазине на данный момент 4000+- товаров, много атрибутов и фильтров.
На оригинальном языке (с которого переводим) всё работает, за исключением того что переведённые страницы с фильтрами не открываются (таймаут).
То есть основная задача которую нужно решить - чтобы эти два плагина совместно работали и не вызывали проблем (ну а проблема всего одна - страница с фильтрами не загружается, возможно из-за большого кол-ва фильтров/атрибутов в базе данных, но наверное это не должно быть большой проблемой и легко исправляется так как показывается на странице всего 20-30+- атрибутов и 50 товаров) Свернуть
В магазине на данный момент 4000+- товаров, много атрибутов и фильтров.
На оригинальном языке (с которого переводим) всё работает, за исключением того что переведённые страницы с фильтрами не открываются (таймаут).
То есть основная задача которую нужно решить - чтобы эти два плагина совместно работали и не вызывали проблем (ну а проблема всего одна - страница с фильтрами не загружается, возможно из-за большого кол-ва фильтров/атрибутов в базе данных, но наверное это не должно быть большой проблемой и легко исправляется так как показывается на странице всего 20-30+- атрибутов и 50 товаров) Свернуть
5 заявок
Закрыт