![]() ![]() |
| Alecfyz |
08.04.05 - 19:40
Сообщение
#1
|
![]() Gorsk.net Studio ![]() ![]() ![]() Группа: Admin Сообщений: 1,852 Регистрация: 24.02.05 Пользователь №: 3 |
Некоторые сайтостроители, которые пользуются интеграцией от SaVaG`a (использование IPB-файла ipb_member_sync.php), заметили, что при использовании функции восстановления пароля, он меняется только в форуме, а в Mambo остается тем же. Что не есть хорошо.
Забирайте готовое решение проблемы. На операционный стол в качестве пациентов попадают 2 файла: modules/ipb_member_sync.php и sources/register.php Оба файла находятся в папке форума! Файлы Mambo не меняются! Итак, в первом файле (ipb_member_sync.php) добавляем новую функцию в любом месте внутри класса. Например, находим код CODE function on_pass_change($id, $new_raw) { global $DB, $std, $ibforums; //---- START $row=$DB->fetch_row($DB->query("select * from ipb_members where id='".$id."'")); $DB->query("update mos_users set password='".md5($new_raw)."' where username='".$row["name"]."'"); //---- END } и после него вставляем следующий код: CODE function on_pass_remember($name, $new_raw) { global $DB, $std, $ibforums; //---- START $DB->query("update mos_users set password='".$new_raw."' where username='".$name."'"); //---- END } Сохраняем файл, и закрываем его. Теперь открываем файл register.php Примерно на 1622 строке находим такой код: CODE $std->boink_it($ibforums->base_url.'&act=Login&CODE=autologin&frompass=1'); } //----------------------------------------- // EMAIL ADDY CHANGE //----------------------------------------- Перед этим кодом, то есть выше него вставляем такой код: CODE // вспоминем пароль ( remember pass ) ++ //----------------------------------------- // Используем синхронизацию? //----------------------------------------- if ( USE_MODULES == 1 ) { $this->modules->register_class(&$this); $this->modules->on_pass_remember($member['name'], $new_pass); } // вспоминем пароль ( remember pass ) -- То есть, в результате, у вас должен получиться примерно следующий листинг (у меня он начинается со строки #1601): CODE //----------------------------------------- // Remove "dead" validation //----------------------------------------- $DB->simple_exec_query( array( 'delete' => 'validating', 'where' => "vid='".$validate['vid']."' OR (member_id={$member['id']} AND lost_pass=1)" ) ); $this->bash_dead_validations(); // вспоминем пароль ( remember pass ) ++ //----------------------------------------- // Используем синхронизацию? //----------------------------------------- if ( USE_MODULES == 1 ) { $this->modules->register_class(&$this); $this->modules->on_pass_remember($member['name'], $new_pass); } // вспоминем пароль( remember pass ) -- $std->boink_it($ibforums->base_url.'&act=Login&CODE=autologin&frompass=1'); } //----------------------------------------- // EMAIL ADDY CHANGE //----------------------------------------- else if ($in_type == 'newemail') { if ( $validate['email_chg'] != 1 ) Сохраняемся. Вот, собственно и все. Удачи! -------------------- Ибу ибу ди - хуэй дао муди - [Шаг за шагом можно достигнуть цели (кит.)]
|
| Alecfyz |
02.08.05 - 15:58
Сообщение
#2
|
![]() Gorsk.net Studio ![]() ![]() ![]() Группа: Admin Сообщений: 1,852 Регистрация: 24.02.05 Пользователь №: 3 |
Выкладываю листинг файла ipb_member_sync.php, а то постоянно спрашивают что да как...
Рабочий код: CODE <?php /* +-------------------------------------------------------------------------- | Invision Power Board v2.0.x Module File | ======================================== | by Matthew Mecham | © 2001 - 2003 Invision Power Services | http://www.invisionpower.com | ======================================== | Web: http://www.invisionboard.com | Email: matt@invisionpower.com | Licence Info: http://www.invisionboard.com/?license +--------------------------------------------------------------------------- | | > Member Sync Module File | > Module written by Matt Mecham | > Date started: 7th July 2003 | +-------------------------------------------------------------------------- | | > Module modyfied by Alecfyz {Gorsk.net Studio} | > Great thanks to SaVaGe & Petro | +-------------------------------------------------------------------------- | | USAGE: | ------ | | This module is designed to hold any module modifications to with registration | It doesn't do much in itself, but custom code can be added to handle | synchronization, etc. | | - on_create_account: Is called upon successful account creation | - on_register_form: Is called when the form is displayed | - on_login: Is called when logged in succcessfully | - on_delete: Is called when member deleted (single, multiple) | - on_email_change: When email address change is confirmed | - on_profile_update: When profile is updated (msn, sig, etc) | - on_pass_change: When password is updated | - on_group_change: When the member's membergroup has changed | - on_name_change: When the member's name has been changed +-------------------------------------------------------------------------- */ class ipb_member_sync { var $class = ""; function ipb_member_sync() { } //----------------------------------------------- // register_class($class) // // Register a $this-> with this class // //----------------------------------------------- function register_class(&$class) { $this->class = $class; } //----------------------------------------------- // on_create_account($member) // // $member = array( 'id', 'name', 'email', // 'password', 'mgroup'...etc) // //----------------------------------------------- function on_create_account($member) { global $DB, $std, $ibforums; //---- START $DB->query("insert into mos_users (name,username,email,password,sendEmail,gid) values ('".$member["name"]."','".$member["name"]."', '".$member["email"]."','".md5($member["password"])."',0,18)"); $row=$DB->fetch_row($DB->query("select id from mos_users where username='".$member["name"]."'")); $DB->query("insert into mos_core_acl_aro ( section_value, value,order_value, name) values('users',".$row["id"].",0,'".$member["name"]."')"); $row=$DB->fetch_row($DB->query("select aro_id from mos_core_acl_aro where value='".$row["id"]."'")); $DB->query("insert into mos_core_acl_groups_aro_map (group_id,aro_id) values (18,'".$row["aro_id"]."')"); function return_after_create() { global $ibforums; header("Location: "."http://support.gorsk.net"); exit(); } return_after_create(); //---- END } //----------------------------------------------- // on_register_form() // // //----------------------------------------------- function on_register_form() { global $DB, $std, $ibforums; //---- START //---- END } //----------------------------------------------- // on_login() // // $member = array( 'id', 'name', 'email', 'pass') // ...etc //----------------------------------------------- function on_login($member=array()) { global $DB, $std, $ibforums; //---- START //---- END } //----------------------------------------------- // on_delete($ids) // // $ids = array | integer // If array, will contain list of ids //----------------------------------------------- function on_delete($ids=array()) { global $DB, $std, $ibforums; $type = ""; //---- START if ( is_array($ids) and count($ids) > 0 ) { $type = 'arr'; } else { $type = 'int'; } //---- END } //----------------------------------------------- // on_email_change($id, $new_email) // // $id = int member_id // $new_email = string new email address //----------------------------------------------- function on_email_change($id, $new_email) { global $DB, $std, $ibforums; //---- START $row=$DB->fetch_row($DB->query("select * from ipb_members where id='".$id."'")); $DB->query("update mos_users set email='".$new_email."' where username='".$row["name"]."'"); //---- END } //----------------------------------------------- // on_pass_change($id, $new_raw) // // $id = int member_id // $new_raw = string new plain text password //----------------------------------------------- function on_pass_change($id, $new_raw) { global $DB, $std, $ibforums; //---- START $row=$DB->fetch_row($DB->query("select * from ipb_members where id='".$id."'")); $DB->query("update mos_users set password='".md5($new_raw)."' where username='".$row["name"]."'"); //---- END } function on_pass_remember($name, $new_raw) { global $DB, $std, $ibforums; //---- START $DB->query("update mos_users set password='".$new_raw."' where username='".$name."'"); //---- END } //----------------------------------------------- // on_profile_update($member) // // $member = array: avatar, avatar_size, aim_name // icq_number, location, website, yahoo, interests // integ_msg, msnname, id, name // //----------------------------------------------- function on_profile_update($member=array()) { global $DB, $std, $ibforums; //---- START //---- END } //----------------------------------------------- // on_signature_update($member, $new_sig) // // $member = array: id, name, email, etc // $new_sig = New signature // //----------------------------------------------- function on_signature_update($member=array(), $new_sig="") { global $DB, $std, $ibforums; //---- START //---- END } //----------------------------------------------- // on_group_change() // // $id = int member_id // $new_group = new int() group id //----------------------------------------------- function on_group_change( $id, $new_group ) { global $DB, $std, $ibforums; //---- START //---- END } //----------------------------------------------- // on_name_change() // // $id = int member_id // $new_group = new name //----------------------------------------------- function on_name_change( $id, $new_name ) { global $DB, $std, $ibforums; //---- START // $row=$DB->fetch_row($DB->query("select * from ipb_members where id='".$id."'")); // $DB->query("update mos_users set name='".$new_name."' where username='".$row["]."'"; //---- END } } ?> В этом коде уже есть исправления от Petro и включена редакция из поста выше. Не забываем, что код НЕ универсален и нужно смотреть префиксы таблиц, если они у вас отличаются от стандартных. Естественно, нужно будет еще подредактировать свой файл sources/register.php, чтобы восстановление пароля работало. -------------------- Ибу ибу ди - хуэй дао муди - [Шаг за шагом можно достигнуть цели (кит.)]
|
| tclub |
28.09.05 - 16:49
Сообщение
#3
|
|
Newbie ![]() Группа: Members Сообщений: 6 Регистрация: 28.09.05 Пользователь №: 1,539 |
дык а что править в sources/register.php?
|
| Alecfyz |
28.09.05 - 17:03
Сообщение
#4
|
![]() Gorsk.net Studio ![]() ![]() ![]() Группа: Admin Сообщений: 1,852 Регистрация: 24.02.05 Пользователь №: 3 |
-------------------- Ибу ибу ди - хуэй дао муди - [Шаг за шагом можно достигнуть цели (кит.)]
|
| tclub |
29.09.05 - 12:58
Сообщение
#5
|
|
Newbie ![]() Группа: Members Сообщений: 6 Регистрация: 28.09.05 Пользователь №: 1,539 |
Поменял файлы так, как написано выше, теперь появилась маленькая проблемка - после нажатия кнопки окончания регистрации пользователя перебрасывает на чистую белую страницу (но при этом он становится уже зарегистрированным пользователем)
D логах обнаружил следующее: CODE PHP Fatal error: Non-static method ipb_member_sync::return_after_create() cannot be called statically in /virt/homes/tclub/htdocs/forum/modules/ipb_member_sync.php on line 102, referer: http://autosurfmonitor.kiev.ua/forum/index.php?act=Reg&coppa_user=0&termsread=1&coppa_pass=1 Скажите, как с этим бороться? Как, к примеру указать определенную страницу, на которую доджен попасть пользователь после подтверждения регистрации? Сообщение отредактировал tclub - 29.09.05 - 13:23 |
| Alecfyz |
29.09.05 - 13:38
Сообщение
#6
|
![]() Gorsk.net Studio ![]() ![]() ![]() Группа: Admin Сообщений: 1,852 Регистрация: 24.02.05 Пользователь №: 3 |
Чтобы указать конкретную страницу, сделайте вот что: в файле модуля синхронизации в функции "on_create_account()" допишите вот что:
CODE function return_after_create() { header("Location: "."http://support.gorsk.net"); exit(); } return_after_create(); Есстественно, вместо "http://support.gorsk.net" напишите нужный вам адрес. Этот код должен стоять в смом низу функции, перед CODE //---- END } -------------------- Ибу ибу ди - хуэй дао муди - [Шаг за шагом можно достигнуть цели (кит.)]
|
| tclub |
29.09.05 - 14:00
Сообщение
#7
|
|
Newbie ![]() Группа: Members Сообщений: 6 Регистрация: 28.09.05 Пользователь №: 1,539 |
не помогло
В логах вот такое вот сообщение: CODE Non-static method ipb_member_sync::return_after_create() cannot be called statically in /virt/homes/tclub/htdocs/forum/modules/ipb_member_sync.php on line 98, referer: http://autosurfmonitor.kiev.ua/forum/index.php?act=Reg&coppa_user=0&termsread=1&coppa_pass=1 98 строка - это CODE return_after_create(); Вот полный код функции: CODE function on_create_account($member) { global $DB, $std, $ibforums; //---- START $DB->query("insert into mos_users (name,username,email,password,sendEmail,gid) values ('".$member["name"]."','".$member["name"]."', '".$member["email"]."','".md5($member["password"])."',0,18)"); $row=$DB->fetch_row($DB->query("select id from mos_users where username='".$member["name"]."'")); $DB->query("insert into mos_core_acl_aro ( section_value, value,order_value, name) values('users',".$row["id"].",0,'".$member["name"]."')"); $row=$DB->fetch_row($DB->query("select aro_id from mos_core_acl_aro where value='".$row["id"]."'")); $DB->query("insert into mos_core_acl_groups_aro_map (group_id,aro_id) values (18,'".$row["aro_id"]."')"); function return_after_create() { header("Location: "."http://autosurfmonitor.kiev.ua/forum"); exit(); } return_after_create(); //---- END Что не так? Сообщение отредактировал tclub - 29.09.05 - 14:15 |
| Alecfyz |
29.09.05 - 18:00
Сообщение
#8
|
![]() Gorsk.net Studio ![]() ![]() ![]() Группа: Admin Сообщений: 1,852 Регистрация: 24.02.05 Пользователь №: 3 |
так вам просто надо, чтоб обратно на форум возвращало??
Это просто: комментируем строку "return_after_create();" и все. -------------------- Ибу ибу ди - хуэй дао муди - [Шаг за шагом можно достигнуть цели (кит.)]
|
| tclub |
29.09.05 - 18:38
Сообщение
#9
|
|
Newbie ![]() Группа: Members Сообщений: 6 Регистрация: 28.09.05 Пользователь №: 1,539 |
спасибо, проблема решена
|
| Alecfyz |
06.10.05 - 22:58
Сообщение
#10
|
![]() Gorsk.net Studio ![]() ![]() ![]() Группа: Admin Сообщений: 1,852 Регистрация: 24.02.05 Пользователь №: 3 |
-------------------- Ибу ибу ди - хуэй дао муди - [Шаг за шагом можно достигнуть цели (кит.)]
|
| Sheridan |
19.03.06 - 00:35
Сообщение
#11
|
|
Newbie ![]() Группа: Members Сообщений: 1 Регистрация: 18.03.06 Пользователь №: 1,796 |
Alecfyz
Привет Вот уже середина марта, а для 2.0.4 нет Очень жаль Абгрейд до 2.1 невозможен(на форуме полно всего, что для 2.1 еще не существует) Если было бы для 2.0.4 купил бы Небольшая просьба, есть хотя бы наработка для 2.0.4 , чтобы пользователи были сразу залогинены на мамбе и IPB ....(общие куки что ли =) ) Общая регистрация есть Сообщение отредактировал Sheridan - 19.03.06 - 00:36 |
![]() ![]() |
| Lo-Fi Version | Time is now: 22.05.12 - 01:59 |