Все о Joomla 1.5

...заметки Котофеича

 
  • Increase font size
  • Default font size
  • Decrease font size
Ошибка
  • DB function failed with error number 1030
    Got error 127 from storage engine SQL=SELECT s.guest, s.usertype, s.username, s.client_id, s.userid, iu.small_avatar, iu.sex, iu.iduser FROM jos_session as s LEFT JOIN jos_idoblog_users as iu ON s.userid=iu.iduser WHERE client_id = 0
  • DB function failed with error number 1030
    Got error 127 from storage engine SQL=SELECT guest, usertype, client_id FROM jos_session WHERE client_id = 0

Home Вопрос-ответ Вадим Работа с массивом $_SESSION

Warning: mysql_query() [function.mysql-query]: Unable to save result set in /home/kotofeich/data/www/kjoomla.com/libraries/joomla/database/database/mysql.php on line 221
2008.07.25 05:25:33
Вадим

У меня возникла одна очень интересная проблема. В стороннем скрипте я устанавливаю переменную сессии, но я так и не догнал как эту переменную прочитать внутри движка. Класс JSession не видит ее.

Тут как я понял сессии хранятся в БД, а массив $_SESSIOn создается только на время выполнения скрипта.

Так как в таком случае из стороннего скрипта передать переменную в движок???



  
 

admin
2008.07.27 23:40:40

Ты случаем не капчу приделываешь?
У меня была такая же проблема. Единственный выход который я нашел - сторонний скрипт сделал внутренним для joomla, и уже работал через JSession

 
 
Вадим
2008.07.28 03:05:13

Да, ее родимую
У меня тоже такая мысля была. Но пока я не придумал каким образом это сделать и что именно нужно подключить для нормальной работы. Не подскажешь? Если можно, фрагмент кода

 
 
admin
2008.07.28 20:55:28

Я ее прикрутил хрен знает как. Мне мое решение не нравится. Надо что-то думать. Кстати если ты юзаешь капчу с captcha.ru, то знай что она не на всех серваках будет работать.

 
 
Вадим
2008.07.29 14:33:33

Я в каком-то компоненте видел, что картинка формируется скриптом и сохраняется на диск и в последствии она будет загружена на странице из готового файла. И тогда с сессиями мне кажется проблем не должно возникнуть.

 
 
admin
2008.07.29 15:16:47

А зачем ее сохранять на диск? Вот в этом блоге, зайди под гостем. Увидишь капчу, которую я сразу формирую скриптом как картинку.
P.S. нажимай на кнопку ответить, под моим комментом. Иначе я не получаю уведомление об ответе.Получается что ты отвечаешь сам себе.

 
 
Вадим
2008.07.29 16:04:12

Это конечно хорошо, но как тогда там передается или запоминается сгенерированный код?

 
 
admin
2008.07.29 18:00:57

Отправил мой вариант решения в личку.

 
 
Rudolf
2008.09.15 19:39:57

Добрый день.
Я мучаюсь вопросом подключения каптчи к собственному компоненту.
Как можно сделать видимой переменную $_SESSION['captcha_keystring']
или как это обойти?

 
 
Вадим
2008.09.15 20:08:46

Да наверное никак. Если в настройках движка указать хранение сессии в БД, а капча генерируется в файле не относящемуся к движку, т.е. он не может пользоваться классами Jooml'ы.
Насколько я понял из сторонних компонентов. Все они, а может быть и нет, генерируют капчу во временный файл на сервере, где код ее указывается в названии этого файла. В последствии этот файл удаляется либо после создания записи, либо по истечении какого-то времени.
А что касается вопроса, то ответа я не нашел, т.к. при запуске Jooml'ы переменные сессии стираются полностью (возможно только если хранить сессию в БД) и доступ к ним только через класс JSESSION, вроде.

 
 
kotofeich
2008.09.18 19:05:40

Я нарыл такую вешь. Допустим мы выводим картинку <img src="<?php echo JROUTE::_('index.php?option=com_idoblog&task=captcha&tmpl=component&format=jpeg'); ?>">
Таким образом скрипт капчи мы можем вшить в контроллер и получить сессию. Но появляется новая проблема - я не могу разобраться, как в joomla передать нужные мне header. Я понял что мы можем установить тип выводимого документа так:
$document =& JFactory::getDocument();
$document->setMimeEncoding('image/jpeg');
Но в итоге вижу пустое изображение. Буду копать дальше..

 
 
exciter
2009.03.19 03:48:59

разобрался... все отлично работает, есть пару хитростей... но в итоге супер! J 1.5.. сессии под управлением юмлы, капча в контроллере или в модели

 
 
kotofeich
2009.03.25 22:17:13

Расскажи хоть что нарыл Я вытаскиваю капчу из бд таблицы сессий, пока более красивого решения не смог получить.

 
 
andnix
2009.06.18 16:11:34

Воспользовался идеей и решил доработать ее до конца.
Изображение не выводилось потому что выводился HTML.
Написал обычную каптчу, вставил ее в контроллер и сразу после вывода картинки добавил exit; (Конечно некрачиво с одной стороны, но дальше стало лень копать).

Картинка на екране, нервы сохранены, заказчик с каптчей

 
 
uborshik
2009.06.18 21:11:48

У меня та же проблема. http://joomla-support.ru/thread12704.html -- здесь одно из решений. Получилась некая мимикрия под движек Джумлы. Джумла этого не заметила (делал в версии 1.5.9). На мой взгляд немного топорно, но лучше чем брать сессию вручную из БД. По-крайней мере меньше исходного кода.

 
 
Rudolf
2008.09.15 21:15:51

Благодарю за ответ.
может кто сталкивался с SecurityImages 5 (http://www.waltercedric.com) для joomla 1.5

как ее можно прикрепить к своему компоненту...
например обработчик и сама форма находятся в файле
com_realty\views\realty\tmpl\default.php

 
 
progmist
2009.07.13 17:56:56

Итого:

для создания работоспособной каптчи с использованием сессий на джумле 1.5 используем:

кусок файла темплейта:
....
<?
$sess = JFactory::getSession();
?>
<img src="<? echo JURI::base()."/";?>index2.php?option=com_contact&task=getcaptcha&<?echo $sess->getName(); ?>=<? echo $sess->getId()?>" />
...


в контролере компонента (в данном случае com_contact) добавляем функцию
...
function getcaptcha() {
include('captcha/kcaptcha.php');

$captcha = new KCAPTCHA();

$sess = JFactory::getSession();

if($_REQUEST[$sess->getName()]){
$sess->set('captcha_keystring', $captcha->getKeyString());
}

exit;
}
...


и при сабмите формы получаем:
...
function submit()
{
global $mainframe;
// Test captcha
$captcha = JRequest::getVar('captcha');
$sess = JFactory::getSession();
$sessCaptcha = $sess->get('captcha_keystring');
....



з.ы: joomla в функции register в includes/joomla/session/storage.php вызывает session_set_save_handler - устанавливая новые кааллбеки функций работы с сессиями( по умолчанию в джумле сессии хранятся в БД) - этот параметр можно перенастроить, поставив - в configuration.php параметру $session_handler одно из сл. значений:
none, database, apc, eaccelerator, memcache, xcache.


в принципе ни чего сложного при работе с механизмом сессий джумлы.

 
 
Логин
2009.11.10 04:35:13


 
 
близкий
2010.01.25 22:18:47

Проблема такая, прикрутил kcaptcha к стандартной форме joomla и все работает правда в sh404 создаются лишнии ссылки вида obratnaya-svyaz/ тогда как у меня feedback/ ну это ладно жить можно, но как только включил стандартное кеширование то сразу в Invalid Token!
Есть решение у кого как че там!?

 
 
Комментировать
Логин:

E-mail:

  Введите текст изображенный на картинке:
 



Блог Котофеича о жизни в интернете


Это лучше чем sape!
Заработай на своем сайте

Авторизация

Сейчас на сайте


Warning: mysql_query() [function.mysql-query]: Unable to save result set in /home/kotofeich/data/www/kjoomla.com/libraries/joomla/database/database/mysql.php on line 221

Warning: Invalid argument supplied for foreach() in /home/kotofeich/data/www/kjoomla.com/modules/mod_idoonline/tmpl/default.php on line 8

Warning: mysql_query() [function.mysql-query]: Unable to save result set in /home/kotofeich/data/www/kjoomla.com/libraries/joomla/database/database/mysql.php on line 221

Последние комментарии


www.liex.ru - автоматическое размещение статей с прямыми ссылками

раскрутка сайта через интернет. коттеджные поселки каширское шоссе. бестраншейный метод прокладки. Вентилируемый фасад керамогранитом