Личный кабинет на готовом движке
Был бы очень признателен. tail-n@list.ru Спасибо!
Вопросы по движку для Joomla
1) Что может быть причиной в php коде, что при переходах (по ссылкам, навигация в меню) вылетает на первоначальную страницу авторизации?
2) На что могут указывать данные ошибки:
1. Notice: Undefined offset: 2 in /usr/local/www/apache22/data/urfa/URFAClient_Packet.php on line 130
2. Warning: unpack() [function.unpack]: Type d: not enough input, need 8, have 0 in urfa/URFAClient_Packet.php on line 179179
3) в user-tariff есть строка $service_id = 108; // id услуги "Смена тарифа"
Нужно завести услугу "Смена тарифа", только вот какая: периодическая, передача трафика или как?
у меня при смене тарифа пишет
Notice: Undefined variable: discount_period_id in /usr/local/www/apache22/data/plugins/content/user_tariff.php on line 52
Notice: Undefined variable: tariff_link_id in /usr/local/www/apache22/data/plugins/content/user_tariff.php on line 52
Notice: Undefined variable: tariff_link_id in /usr/local/www/apache22/data/plugins/content/user_tariff.php on line 53Ошибка смены тарифа следующего расчетного периода
и создает новый тариф, подключая к уже существующему
4) СМена пароля только для личного кабинета?
2) На что могут указывать данные ошибки:
1. Notice: Undefined offset: 2 in /usr/local/www/apache22/data/urfa/URFAClient_Packet.php on line 130
2. Warning: unpack() [function.unpack]: Type d: not enough input, need 8, have 0 in urfa/URFAClient_Packet.php on line 179179
3) в user-tariff есть строка $service_id = 108; // id услуги "Смена тарифа"
Нужно завести услугу "Смена тарифа", только вот какая: периодическая, передача трафика или как?
у меня при смене тарифа пишет
Notice: Undefined variable: discount_period_id in /usr/local/www/apache22/data/plugins/content/user_tariff.php on line 52
Notice: Undefined variable: tariff_link_id in /usr/local/www/apache22/data/plugins/content/user_tariff.php on line 52
Notice: Undefined variable: tariff_link_id in /usr/local/www/apache22/data/plugins/content/user_tariff.php on line 53Ошибка смены тарифа следующего расчетного периода
и создает новый тариф, подключая к уже существующему
4) СМена пароля только для личного кабинета?
Вопрос 1 :
Выбрасывает на страницу авторизации и предлагает снова логинится? Глянте в сторону сессий - где хранятся (у меня в базе), не слетают ли и прочее.
Вопрос 2 :
Не знаю. В отрыве от контекста понять сложно. Во первых убедитесь что у вас нужная версия php (5.2.6 и новее). Во вторых функции используемые на данной странице попробуйте погонять отдельно, без джумлы - убедитесь что urfaphp работает корректно.
Вопрос 3 :
$service_id = 108; // id услуги "Смена тарифа" - обычная разовая услуга, посредством нее снимаю деньги за смену тарифа. Можете убрать вызов вообще, если предполагаете бесплатную смену.
По смене тарифа опять же попробуйте этот кусок кода потестить отдельно. Если у вас добавляет еще один тариф, то возможно передаются не правильные параметры в функцию
$urfa_admin->rpcf_link_user_tariff($user_id, $account_id, $tariff_current, $urfa_next_tariff, $discount_period_id, $tariff_link_id);
Конкретно $tariff_link_id - это должен быть номер существующей у вас на акке связки, т.е. этим параметром вы показываете КАКОЙ именно тариф изменить. Если он неверный, то результат будет как у вас.
Вопрос 4 :
Гляньте код смены пароля - $urfa_user5->rpcf_user5_change_password($urfa_old_password,$urfa_new_password,$urfa_new_password_ret); //-0x4021
Джумла авторизует пользователей по логинам-паролям биллинга, и не существует никакого отдельного пароля на личный кабинет.
Выбрасывает на страницу авторизации и предлагает снова логинится? Глянте в сторону сессий - где хранятся (у меня в базе), не слетают ли и прочее.
Вопрос 2 :
Не знаю. В отрыве от контекста понять сложно. Во первых убедитесь что у вас нужная версия php (5.2.6 и новее). Во вторых функции используемые на данной странице попробуйте погонять отдельно, без джумлы - убедитесь что urfaphp работает корректно.
Вопрос 3 :
$service_id = 108; // id услуги "Смена тарифа" - обычная разовая услуга, посредством нее снимаю деньги за смену тарифа. Можете убрать вызов вообще, если предполагаете бесплатную смену.
По смене тарифа опять же попробуйте этот кусок кода потестить отдельно. Если у вас добавляет еще один тариф, то возможно передаются не правильные параметры в функцию
$urfa_admin->rpcf_link_user_tariff($user_id, $account_id, $tariff_current, $urfa_next_tariff, $discount_period_id, $tariff_link_id);
Конкретно $tariff_link_id - это должен быть номер существующей у вас на акке связки, т.е. этим параметром вы показываете КАКОЙ именно тариф изменить. Если он неверный, то результат будет как у вас.
Вопрос 4 :
Гляньте код смены пароля - $urfa_user5->rpcf_user5_change_password($urfa_old_password,$urfa_new_password,$urfa_new_password_ret); //-0x4021
Джумла авторизует пользователей по логинам-паролям биллинга, и не существует никакого отдельного пароля на личный кабинет.
Будьте добры! Скинте пожалуйста на zorg@regionnet.ru
ок понял
Но высылать не буду, буду скоро выкладывать на http://wiki.flintnet.ru , думаю начну в конце этой недели как время будет посвободней.
Исправил урл, на автомате вначале вбил свой локальный

Исправил урл, на автомате вначале вбил свой локальный

Последний раз редактировалось Kayfolom Ср июн 24, 2009 12:59, всего редактировалось 2 раза.
Подскажите, discount_period_id - за что отвечает?
У меня при смене показывает
user_id=533 account_id=537 tariff_current=44 urfa_next_tariff=40 discount_period_id= tariff_link_id=
т.е. discount_period_id и tariff_link_id пустые значения
как они формируются?
Если активировать логи, то получается:
Notice: Undefined variable: discount_period_id in /usr/local/www/apache22/data/jml/plugins/content/user_tariff.php on line 52
Notice: Undefined variable: tariff_link_id in /usr/local/www/apache22/data/jml/plugins/content/user_tariff.php on line 52
user_id=533 account_id=537 tariff_current=44 urfa_next_tariff=40 discount_period_id=
Notice: Undefined variable: discount_period_id in /usr/local/www/apache22/data/jml/plugins/content/user_tariff.php on line 53
tariff_link_id=
Notice: Undefined variable: tariff_link_id in /usr/local/www/apache22/data/jml/plugins/content/user_tariff.php on line 53
Notice: Undefined variable: tariff_link_id in /usr/local/www/apache22/data/jml/plugins/content/user_tariff.php on line 54
Где эти переменные определяются?
У меня при смене показывает
user_id=533 account_id=537 tariff_current=44 urfa_next_tariff=40 discount_period_id= tariff_link_id=
т.е. discount_period_id и tariff_link_id пустые значения
как они формируются?
Если активировать логи, то получается:
Notice: Undefined variable: discount_period_id in /usr/local/www/apache22/data/jml/plugins/content/user_tariff.php on line 52
Notice: Undefined variable: tariff_link_id in /usr/local/www/apache22/data/jml/plugins/content/user_tariff.php on line 52
user_id=533 account_id=537 tariff_current=44 urfa_next_tariff=40 discount_period_id=
Notice: Undefined variable: discount_period_id in /usr/local/www/apache22/data/jml/plugins/content/user_tariff.php on line 53
tariff_link_id=
Notice: Undefined variable: tariff_link_id in /usr/local/www/apache22/data/jml/plugins/content/user_tariff.php on line 53
Notice: Undefined variable: tariff_link_id in /usr/local/www/apache22/data/jml/plugins/content/user_tariff.php on line 54
Где эти переменные определяются?
Вот мой текущий код плагина смены тарифа:
Интересующий вас кусок
Т.е. Тариф получаем функцией
$user_tariff = $urfa_admin->rpcf_get_user_tariffs($_SESSION['URFA']['user_id']);
А дальше из $user_tariff получаем $discount_period_id = $user_tariff['user_tariffs'][0]['discount_period_id'];
Обратите внимание, что $_SESSION['URFA']['user_id'] берется из сессии. Туда он у меня попадает в плагине авторизации, дабы в течении сессии по многу раз не дергать урфу запрашивая одни и теже параметры.
Да, забыл добавить - плагин авторизации уже опубликован на http://wiki.flintnet.ru , остальные застопорились из за глюков в правах доступа - по какой то причине php на мастерхосте создает файлы и папки с правами выше чем админ площадки
Кое что в вики криво создалось и не могу ни переустановить права, ни удалить 
Код: Выделить всё
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
@ini_set("display_errors", "1");
error_reporting(E_ALL);
require_once("./urfa/URFAClient.php");
//require_once("./urfa/URFAConfig.php");
$mainframe->registerEvent( 'onPrepareContent', 'plgUserTariffModify' );
function plgUserTariffModify(&$row, &$params, $page=0){
include ("./urfa/URFAConfig.php");
$pos = strpos($row->text, '{user_tariff}');
if ($pos > 0) {
if ($_SESSION['URFA']['is_juridical']) {
$avail_tariffs=array(66,67,68,69); // id Доступных пользователю тарифов Юрики
} else {
$avail_tariffs=array(66,67,68,69,70,71,72); // id Доступных пользователю тарифов Физики
}
$row->text = preg_replace('/{user_tariff}/', '', $row->text);
try {
$urfa_admin = new URFAClient_Admin($UTMCore_Login,$UTMCore_Password);
} catch (Exception $exception) {
echo "Error in line ", $exception->getLine();
echo $exception->getMessage();
}
$user_tariff = $urfa_admin->rpcf_get_user_tariffs($_SESSION['URFA']['user_id']);
//***************** Обработка смены тарифа
$change_tariff_message = '';
// $uri = & JFactory::getURI();
$urfa_next_tariff = JRequest::getVar('urfa_next_tariff');
$urfa_next_tariff_accept = JRequest::getVar('urfa_next_tariff_accept');
$tariff_change_type = JRequest::getVar('tariff_change_type');
if (isset($urfa_next_tariff) && isset($urfa_next_tariff_accept)) {
$user_id = $_SESSION['URFA']['user_id'];
$account_id = $_SESSION['URFA']['basic_account'];
$service_id_normal = 108; // id услуги "Смена тарифа"
$service_id_urgent = 109; // id услуги "Смена тарифа"
$tariff_current = $user_tariff['user_tariffs'][0]['current_tariff'];
$discount_period_id = $user_tariff['user_tariffs'][0]['discount_period_id'];
$tariff_link_id = $user_tariff['user_tariffs'][0]['tariff_link_id'];
// print 'tariff_change_type '.$tariff_change_type;
if (($user_tariff['user_tariffs'][0]['next_tariff']<>$urfa_next_tariff) or ($tariff_change_type=='urgent')) {
$new_tariff_link_id = $urfa_admin->rpcf_link_user_tariff($user_id, $account_id, $tariff_current, $urfa_next_tariff, $discount_period_id, $tariff_link_id);
if ($tariff_link_id==$new_tariff_link_id['tariff_link_id']) {
$change_tariff_message = 'Тариф следующего расчетного периода успешно изменен.';
// print $tariff_change_type;
if ($tariff_change_type=='urgent') { // Срочная смена тарфа - изменение конца расчетного периода
// print "***".$discount_period_id."***";
$discount_period = $urfa_admin->rpcf_get_discount_period($discount_period_id);
// print_r($discount_period);
$start = $discount_period['start_date'];
$expire = strtotime("+1 day");
$expire = strtotime(date("d.m.Y",$expire));
$periodic_type_t = 3;
$cd = 1;
$di = 0;
//print $start."<BR>";
//print date("d.m.Y",$start)."<BR>";
//print $expire."<BR>";
//print date("d.m.Y H:i:s",$expire)."<BR>";
$urfa_admin->rpcf_add_discount_period($discount_period_id,$start,$expire,$periodic_type_t,$cd,$di); //0x2603
$change_tariff_message = $change_tariff_message."<BR> Дата конца текущего расчетного периода успешно изменена.";
$urfa_admin->rpcf_add_once_service_to_user($user_id,$account_id,$service_id_urgent,0,0,time(),1,0); //0x2555
} else {
$urfa_admin->rpcf_add_once_service_to_user($user_id,$account_id,$service_id_normal,0,0,time(),1,0); //0x2555
}
$user_tariff = $urfa_admin->rpcf_get_user_tariffs($_SESSION['URFA']['user_id']);
// print 'good';
// $urfa_admin->rpcf_add_once_service_to_user($user_id, $account_id, $service_id); //0x2551
//$res = rpcf_add_once_service_to_user2($user_id,$account_id,$service_id,$tplink,$slink_id,$discount_date,$quantity,$invoice_id); //0x2555
} else {
$change_tariff_message = 'Ошибка смены тарифа следующего расчетного периода';
}
}
// array_pop($uri->_vars);
}
//***************** Обработка смены тарифа конец
$discount_period = $urfa_admin->rpcf_get_discount_period($user_tariff['user_tariffs'][0]['discount_period_id']);
$discount_period_start = date("Дата d.m.Yг. время H:i",$discount_period['start_date']);
$discount_period_end = date("Дата d.m.Yг. время H:i",$discount_period['end_date']);
$current_tariff = $urfa_admin->rpcf_get_tariff($user_tariff['user_tariffs'][0]['current_tariff']);
$next_tariff = $urfa_admin->rpcf_get_tariff($user_tariff['user_tariffs'][0]['next_tariff']);
//******************************* Форма смены тарифа начало
$form_title = '<FORM METHOD="POST">';
if (isset($uri->_vars['urfa_next_tariff'])) {
unset($uri->_vars['urfa_next_tariff']);
}
if (isset($uri->_vars['urfa_next_tariff_accept'])) {
unset($uri->_vars['urfa_next_tariff_accept']);
}
if (isset($uri->_vars['tariff_change_type'])) {
unset($uri->_vars['tariff_change_type']);
}
$form_footer = '</FORM>';
$form_body = '';
// while(list($key, $val) = each($uri->_vars)) {
// $form_body = $form_body.'<input type="hidden" name="'.$key.'" value="'.$val.'">';
// }
$form_body = $form_body.'<SELECT NAME="urfa_next_tariff"> ';
$tariffs_list = $urfa_admin->rpcf_get_tariffs_list();
for ($j=0;$j<count($avail_tariffs);$j++) {
for ($i=0;$i<$tariffs_list['count'];$i++) {
if ($tariffs_list['tariffs'][$i]['id']==$avail_tariffs[$j]) {
$form_body = $form_body.'<OPTION VALUE='.$tariffs_list['tariffs'][$i]['id'].'>'.$tariffs_list['tariffs'][$i]['name'].'</OPTION>';
break;
}
}
}
$form_body = $form_body.'</SELECT> <BR> <BR>';
$form_body = $form_body.'<input name="tariff_change_type" type="radio" value="normal" checked> Со следующего Расчетного периода (стоимость услуги 30р.) <BR>';
$form_body = $form_body.'<input name="tariff_change_type" type="radio" value="urgent" align=left> Срочная смена, с ближайшей полуночи (стоимость услуги 100р.) Внимание - прочтите условия!!! <BR>';
$form_body = $form_body.'<BR> <BR>';
$form_body = $form_body.'<input name="urfa_next_tariff_accept" type="checkbox" value="accepted">Я понимаю и принимаю условия смены тарифа</input>';
$form_body = $form_body.'<BR> <BR> <input type="submit" value="Сменить тариф">';
$form_change_tariff = $form_title.$form_body.$form_footer;
//******************************* Форма смены тарифа конец
$row->text = preg_replace('/{current_tariff}/', $current_tariff['tariff_name'], $row->text);
$row->text = preg_replace('/{next_tariff}/', $next_tariff['tariff_name'], $row->text);
$row->text = preg_replace('/{discount_period_start}/', $discount_period_start, $row->text);
$row->text = preg_replace('/{discount_period_end}/', $discount_period_end, $row->text);
$row->text = preg_replace('/{form_change_tariff}/', $form_change_tariff, $row->text);
$row->text = preg_replace('/{change_tariff_message}/', $change_tariff_message, $row->text);
}
}
Код: Выделить всё
$user_tariff = $urfa_admin->rpcf_get_user_tariffs($_SESSION['URFA']['user_id']);
//***************** Обработка смены тарифа
$change_tariff_message = '';
// $uri = & JFactory::getURI();
$urfa_next_tariff = JRequest::getVar('urfa_next_tariff');
$urfa_next_tariff_accept = JRequest::getVar('urfa_next_tariff_accept');
$tariff_change_type = JRequest::getVar('tariff_change_type');
if (isset($urfa_next_tariff) && isset($urfa_next_tariff_accept)) {
$user_id = $_SESSION['URFA']['user_id'];
$account_id = $_SESSION['URFA']['basic_account'];
$service_id_normal = 108; // id услуги "Смена тарифа"
$service_id_urgent = 109; // id услуги "Смена тарифа"
$tariff_current = $user_tariff['user_tariffs'][0]['current_tariff'];
$discount_period_id = $user_tariff['user_tariffs'][0]['discount_period_id'];
$tariff_link_id = $user_tariff['user_tariffs'][0]['tariff_link_id'];
$user_tariff = $urfa_admin->rpcf_get_user_tariffs($_SESSION['URFA']['user_id']);
А дальше из $user_tariff получаем $discount_period_id = $user_tariff['user_tariffs'][0]['discount_period_id'];
Обратите внимание, что $_SESSION['URFA']['user_id'] берется из сессии. Туда он у меня попадает в плагине авторизации, дабы в течении сессии по многу раз не дергать урфу запрашивая одни и теже параметры.
Да, забыл добавить - плагин авторизации уже опубликован на http://wiki.flintnet.ru , остальные застопорились из за глюков в правах доступа - по какой то причине php на мастерхосте создает файлы и папки с правами выше чем админ площадки

