public function process(){ $key = $this->getProperty('captcha_key');
$method = $this->getProperty('method'); $code = $this->getProperty('code');
if(empty($code)){ $code = $this->modx->request->parameters[$method][$key]; }
$session_code = $_SESSION[$key]; Вот так делать и не надо. Не надо прописывать в процессоре работу с глобальными массивами запросов, а то как вы будете разграничивать обработку, когда у вас на странице больше одного вызова будет? Надо писать что-то типа {processor… params=$smarty.get}, то есть явно в вызов процессора передавать данные запроса.
Кстати ещё один момент по поводу переменных переменных и суперглобальных массивов. «Warning Please note that variable variables cannot be used with PHP's Superglobal arrays within functions or class methods. The variable $this is also a special variable that cannot be referenced dynamically. » php.net/manual/en/language.variables.variable.php
modCaptcha 1.0.3-beta поставил вчера из репозитория modx, modxSite 1.3.1-beta Да вызывал напрямую в смарти-шаблоне через {processor}. Да и сниппет вызывает точно так же. В теме же и сказано вызывайте через процессор или сниппет =) Я убрал вот этот код из сниппета: $key = $scriptProperties['captcha_key'];
if(empty($scriptProperties['code'])){ $param = "_".strtoupper($method);
if(isset($$param)){
$p = $$param;
$scriptProperties['code'] = (!empty($p[$key]) ? $p[$key] : "");
}
} И добавил вот такой в процессор. public function process(){ $key = $this->getProperty('captcha_key');
$method = $this->getProperty('method');
$code = $this->getProperty('code');
if(empty($code)){
$code = $this->modx->request->parameters[$method][$key];
}
$session_code = $_SESSION[$key]; В итоге параметр переданный из формы получается через modRequest, если 'code' не передан в процессор через настройки сниппета или процессора.
Читайте мануалы по move_uploaded_file. Эта функция подробно описана в сети.
Дело в том что я закидываю на DropBox, в инструкции так было показано, подскажите пожалуйста, как можно переделать на move_uploaded_file()?
Не понятно ошибка это была или раньше modProcessor подгружал в свойства переменные из глобальных массивов, но в версии 2.3.3 этого не происходит. Если вы процессор через коннектор вызываете, то там глобальные устанавливаются (на уровне modConnectorRequest или modConnectorResponse). Если вы просто вызываете процессор через $modx->runProcessor(), то тогда в процессоре глобальных не будет. Их там и не было никогда. Надо явно тогда в него в вызов передавать $_REQUEST|$_GET|$_POST.
PS У меня версия modx 2.3.3 там modCaptcha не заработал. Пришлось подправить немного процессор «modcaptcha/web/check», Странно, у меня все работает, и не на одном сайте. Убедитесь что у вас последние версии пакетов modxSite и modCaptcha.
$fbuch=$_FILES['upl']['tmp_name']; $f = fopen($fbuch, «r+»); Все равно так не правильно. Правильней переносить файл методом move_uploaded_file(). Или вы рискуете закинуть проект но новый хостинг и там это работать не будет. А как быть с API access token?)) ПО новому регистрироваться7 Я в комменте подправил его, так что вряд ли широкие массы его заметили, можно особо не париться. Но если принципиально, то можно удалить приложение полностью и новое создать (не аккаунт, а именно приложение).
Решил проблему так: if(isset($_FILES['upl']) && $_FILES['upl']['error'] == 0){ $fbuch=$_FILES['upl']['tmp_name']; $f = fopen($fbuch, «r+»); $fbuch2="/".$_FILES['upl']['name']; $fileMetadata = $dbxClient->uploadFile($fbuch2, dbx\WriteMode::add(), $f); fclose($f); } А как быть с API access token?)) ПО новому регистрироваться7
Если каптча нужна для формы регистрации то делаем так:
modcaptcha.preHook
&captcha_key=mycaptcha
первый это сниппет для прехука, второй ключ каптчиmycaptcha
]] После этих манипуляций должно работать. PS У меня версия modx 2.3.3 там modCaptcha не заработал. Пришлось подправить немного процессор «modcaptcha/web/check»,
строку $code = $this->getProperty('code'); заменил на $code = $this->modx->request->parameters[$this->getProperty('method')][$key]; Не понятно ошибка это была или раньше modProcessor подгружал в свойства переменные из глобальных массивов, но в версии 2.3.3 этого не происходит.