Илья Уткин

Илья Уткин

С нами с 15 декабря 2012; Место в рейтинге пользователей: #9
И главное, что самое интересное, в этой базе данных лежит не только этот сайт, но кто-то, даже если и возъимел доступ к данной базе, то чистит почему-то именно эту таблицу минишопа в который раз, не трогая все остальные таблицы, и всех остальных более интересных для взлома сайтов.
Евгений Дурягин
13 августа 2014, 14:58
1
+1
А зачем их удалять, чем они мешают? :)
К тому же эти настройки были и в версии 2.2. А устарели они в связи с введением источников файлов.
Fi1osof
26 июля 2014, 21:33
2
+2
Не за что.

Только еще момент: таким образом нельзя установить свойства, которых еще нет у объекта. К примеру, если у объекта нет свойства test, то нельзя сделать так: $object->test = $value; Свойства test у объекта после этого просто не будет. Вот здесь как раз и придется использовать $object->set($key, $val), чтобы свойство было создано. За эту магию отвечают ООП-методы __set() и __get() у класса xPDOObject. И вот здесь как раз кроется самое интересное (для этого смотрите сорцы xPDO github.com/modxcms/xpdo/blob/master/xpdo/om/xpdoobject.class.php#L739 ). Дело в том, что в методах __get() и __set() сразу прописана работа со связями getOne()/setOne() и т.д. и т.п.
К примеру, можно сделать так: $profile = $user->Profile, что будет равнозначно $profile = $user->getOne('Profile'). Таким образом можно получить свойство $user->Profile->email, даже если именно в этот момент еще не был получен связанный объект modProfile для этого пользователя. Или вот так:
$user = $modx->newObject('modUser', array(
«username» => «NewUser»,
));
$profile = $modx->newObject(«modUserProfile», array(
«email» => $someEmail,
«password» => $somePass,
));
$user->Profile = $profile;
$user->save();
И будут записаны в БД и данные пользователя (modUser), и данные его профиля (modUserProfile).
Илья Уткин
28 мая 2014, 20:38
1
+2
Можно использовать обратимое шифрование.

1. Сниппет getCrypto (фильтр вывода для шифрование адреса сайта):

$key = "qie1GllccDadnmZvhpcM0WK18vfVScxBKeM";
$str = $input;
//открываем модуль шифрования и получаем его дискриптор
$td = mcrypt_module_open(MCRYPT_BLOWFISH,'',MCRYPT_MODE_CFB,'');
//  получаем размер вектора шифрования на основе дискриптора.
$iv_size = mcrypt_enc_get_iv_size($td);
// Создание вектора шифрования
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
// открытие буфера обмена обмена для шифровки данных
mcrypt_generic_init($td,$key,$iv);
//  шифруем даные
$crypt_text = mcrypt_generic($td,$str);
//  закрываем буфер обмена и модуль
mcrypt_generic_deinit($td);
mcrypt_module_close($td);

return 'goto/?code='.base64_encode($iv.$crypt_text);


2. Создаем страничку site.ru/goto/ и на ней помещяем НЕкешируемый вызов сниппета sendCriptoRedirect:

if (!$_GET['code']) return;
$key = "qie1GllccDadnmZvhpcM0WK18vfVScxBKeM";
$code = base64_decode($_GET['code']);

$td = mcrypt_module_open(MCRYPT_BLOWFISH,'',MCRYPT_MODE_CFB,'');
$iv_size = mcrypt_enc_get_iv_size($td);
$iv = substr($code,0,$iv_size);
$crypt_text = substr($code,$iv_size);
mcrypt_generic_init($td,$key,$iv);
$url = mdecrypt_generic($td,$crypt_text);
mcrypt_generic_deinit($td);
mcrypt_module_close($td);
$modx->sendRedirect($url);

В итоге первый сниппет будет зашифровывать, а второй расшифровывать и редиректить.

Код взят отсюда: webformyself.com/shifrovanie-dannyx-na-php/
Владимир Колесник
14 мая 2013, 11:35
2
0
Все параметры, кто то помню искал, можно добавить куда нить на видное место ;)

Ф.И.О. — [[+address.receiver]]
E-mail — [[+user.email]]
Телефон — [[+address.phone]]
Индекс — [[+address.index]]
Страна — [[+address.country]]
Регион — [[+address.region]]
Город — [[+address.city]]
Метро — [[+address.metro]]
Улица — [[+address.street]]
Дом — [[+address.building]]
Квартира — [[+address.room]]
Комментарий к заказу — [[+address.comment]]