Х

ХрюнделЪ

+43
Репутация
2
Рейтинг
#1 [ЕСТЬ РЕШЕНИЕ] Аудит безопасности InstantCMS 1.10 25 октября 2012 в 09:49
докинул 5к
#2 Универсальный мост для instantcms 24 октября 2012 в 14:37
ёптить… я думал файл добавился😥
сейчас отредактирую первый пост.

З.Ы. добавил код впервый пост.
#3 Универсальный мост для instantcms 24 октября 2012 в 14:35
Anor, хех возможно поэтому такая реакция :)

з.ы. честно не знал о его попытках, просто была нужда в этом мы и реализовали для себя… из благих намерений поделился…
#4 Универсальный мост для instantcms 24 октября 2012 в 14:34
r2, хм, здесь слишком просто, чтобы живость показывать, вот как выше написали если сделать автоматическую интеграцию с конкретными движками, тогда можно и площадку тестовую выкладывать…
А так это простой скрипт, который служит прослойкой между двумя сайтами один из которых инстант.
Если в дальнейшем расширен будет функционал, тогда выставлю площадку тестовую. Просто нам с другими движками именно конкретными нет нужды делать интеграцию…

Пусть народ напишет пожелания более детально, будем реализовывать на благо сообщества.
#5 Универсальный мост для instantcms 24 октября 2012 в 13:10


ХрюнделЪ, крут, крут

FreeLancer

да куда там… как выше написали "куцый" скрипт.
#6 Универсальный мост для instantcms 24 октября 2012 в 13:09


Вот если бы с phpBB3 кто осилил наконец полноценную дружбу, я бы на радости такой на ящик пива раскошелился ))
А подобные куцые наработки не особо интересны...

Anor

Опишите пожалуйста более детально, рассмотрим и постараемся выделить свободное время на реализацию.
Что именно нужно, как и т.д. т.п.
#7 Универсальный мост для instantcms 24 октября 2012 в 10:38


ХрюнделЪ, не обращайте внимания, это у него ревность!!! smile

Ленивый

спасибо за поддержку.
#8 Универсальный мост для instantcms 24 октября 2012 в 10:36


Если желаете развития идеи, то пишите свои пожелания, будем реализовывать.

ХрюнделЪ
При переходе с одного сайта на другой заново нужно входить в систему?

eoleg

Этот скрипт просто облегчает автоматическую регистрацию (добавление новых) пользователей одновременно на нужном сайте на базе instantcms.
Единую сессию и т.д. т.п не реализовывали.
#9 Универсальный мост для instantcms 24 октября 2012 в 10:35


А суть данного поста? прочитал раз 5 могу сказать только что я РАД за вас и за ваш МОСТ.

maxisoft

Моё дело поделиться наработкой, а всем уже решать нужна она им или нет.
#1 Универсальный мост для instantcms 24 октября 2012 в 09:49
Написал в один из коллективных блогов, но видать там администратор будет долго еще проверять пост, решил сюда запостить.

Мне на своем проекте понадобилась одновременная регистрация пользователей на суб-проектах и на основном сайте.

структура в целом проекта такая:

site.ru — основной сайт на инстанте
subproect1.site.ru — субпроект №1
subproect2.site.ru — субпроект №2
subproect3.site.ru — субпроект №3
subproect4.site.ru — субпроект №4

При регистрации пользователей на любом из сайтов субпроекта, автоматически создается пользователь в InstantCMS на основном сайте site.ru

Для этого написан был универсальный мост.

Мост представляет из себя всего 1 файл bridge.php, который кладется в корень сайта с instantCMS и позволяет регистрировать пользователей любым сторонним скриптом.
Для этого нужно сделать POST запрос по адресу моста (site.ru/bridge.php). POST-запрос состоит всего из одного поля "regdata", в который должен быть упакован массив с информаций о регистрации, следующим способом:
base64_encode(serialize($data));
Где $data — это массив в формате:
array(
'login' => $login,
'pass' => $pass,
'email' => $email,
'sign' => $sign
);
$sign — это строка с секретным словом, своего рода подпись. Используется для защиты моста от злоумышленников.
Точно такое же значение следует присвоить переменной $sign в файле bridge.php
Значения остальных полей очевидны.

Скрипт моста может выдавать следующие ответы:
error1 — отсутствует $_POST['regdata'] в запросе,
error2 — распакованное содержимое $_POST['regdata'] не является массивом,
error3 — не совпадает секретное слово,
loginIsBusy — пользователь с таким логином уже существует,
error4 — ошибка при занесении пользователя в базу данных,
ok — регистрация прошла успешно.

код файла bridge.php :

  1.  
  2.  
  3. <?php
  4.  
  5. $sign = 'secret<#45t@ddSSdfaj5+q-_pass'; // Секретное слово
  6.  
  7. if(!isset($_POST['regdata'])) die('error1');
  8.  
  9. $data = @unserialize(base64_decode(trim($_POST['regdata'])));
  10.  
  11. if(!is_array($data)) die('error2');
  12. if($data['sign'] != $sign) die('error3');
  13.  
  14. define('PATH', dirname(__FILE__));
  15. define("VALID_CMS", 1);
  16.  
  17. include(PATH.'/core/cms.php');
  18.  
  19. $inCore = cmsCore::getInstance();
  20. $inDB = cmsDatabase::getInstance();
  21.  
  22. $inCore->loadClass('user');
  23. $inCore->loadClass('actions');
  24.  
  25. $login = $data['login'];
  26. $pass = md5($data['pass']);
  27. $nickname = $data['login'];
  28. $email = $data['email'];
  29. $icq = '';
  30. $birthdate = '1980-01-01';
  31.  
  32. $sql = "SELECT id, login FROM cms_users WHERE login LIKE '$login' AND (is_deleted = 0)";
  33. $result = $inDB->query($sql) ;
  34. if($inDB->num_rows($result)!=0) die('loginIsBusy');
  35.  
  36. $sql = "INSERT INTO cms_users (group_id, login, nickname, password, email, icq, regdate, logdate, birthdate, is_locked, is_logged_once, invited_by)
  37. VALUES ('1', '$login', '$nickname', '$pass', '$email', '$icq', NOW(), NOW(), '$birthdate', '0', 0, '0')";
  38. $inDB->query($sql) ;
  39.  
  40. $new_user_id = dbLastId('cms_users');
  41.  
  42. //create advanced user profile
  43. if ($new_user_id){
  44.  
  45. $sql = "INSERT INTO cms_user_profiles (user_id, city, description, showmail, showbirth, showicq, karma, imageurl, allow_who)
  46. VALUES (".$new_user_id.", '', '', '0', '0', '1', '0', '', 'all')";
  47. $inDB->query($sql) ;
  48.  
  49. $user_array['id'] = $new_user_id;
  50. }
  51. else{
  52. die('error4');
  53. }
  54.  
  55. // Регистрируем событие
  56. cmsActions::log('add_user', array(
  57. 'object' => '',
  58. 'user_id' => $new_user_id,
  59. 'object_url' => '',
  60. 'object_id' => $new_user_id,
  61. 'target' => '',
  62. 'target_url' => '',
  63. 'target_id' => 0,
  64. 'description' => ''
  65. ));
  66.  
  67. die('ok');
  68.  
  69. ?>
  70.  
  71.  
Совместной регистрации не делали, также как автоматическая регистрация с конкретными движками. У нас на субпроектах просто сайты не на распространенных движках, поэтому не ставилось такой задачи.
Если желаете развития идеи, то пишите свои пожелания, будем реализовывать.
#11 Требуется исполнитель! 2 августа 2012 в 17:20
кто-то взялся за работу?
#12 Дополнения на instantcms.ru 27 февраля 2012 в 16:50


можно на отдельном ресурсе поднять такой каталог

ХрюнделЪ

Если люди не наполняют каталог здесь, то почему вы думаете что они начнут делать это на стороннем сайте?

Администратор

Всё довольно просто, им не нужно наполнять самим, а только отправить архив + описание, можно и здесь наполнить, я просто предложил альтернативный вариант ;)
#13 Дополнения на instantcms.ru 24 февраля 2012 в 17:36
на край можно на отдельном ресурсе поднять такой каталог, готов предоставить место и загрузить всё в единую базу при условии, что разработчики дополнений и компонентов будут присылать их архивы с описанием.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.