最模板 - 外贸网站建设,外贸网站模板

最模板

当前位置: 首页 > Magento > Magento教程 >

magento与phpbb同时登录与注册

时间:2014-09-29 10:12来源:未知 作者:最模板zuimoban 点击:
由于需求,公司需要把magento和phpbb登录注册联合起来。所以,写了一个需求。 首先在根目录下创建一个forum文件夹,用于存放Phpbb源程序。 然后在根目录下建立一下loginphpbb.php文件。
由于需求,公司需要把magento和phpbb登录注册联合起来。所以,写了一个需求。
 
首先在根目录下创建一个forum文件夹,用于存放Phpbb源程序。
 
然后在根目录下建立一下loginphpbb.php文件。
 
loginphpbb.php
 
 
<?php
/*
*论坛同步程序
*/
 
define('IN_PHPBB', true);
 
//同步登陆论坛
function forumLogin($username, $password, $admin = false)
{
   global $db, $template, $config, $auth, $phpEx, $phpbb_root_path, $cache, $user;
    
   $ss = array();
   $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : dirname(__FILE__).'/forum/';
   $phpEx = substr(strrchr(__FILE__, '.'), 1);
 
   require_once($phpbb_root_path.'common.php');
   require_once($phpbb_root_path.'includes/functions_user.php');
   require_once($phpbb_root_path.'includes/functions_module.php');
 
   $_REQUEST['username'] = $_POST['username'] = $username;
   $_REQUEST['password'] = $_POST['password'] = $password;   
   $password   = request_var('password', '', true);
   $username   = request_var('username', '', true);
    
   $user->session_begin();
   $auth->acl($user->data);
   $user->setup();
 
   $_REQUEST['sid'] = $_POST['sid']= $user->session_id;
    
   $autologin   = false;
   $viewonline = 1;
   $admin       = ($admin) ? 1 : 0;
   $viewonline = ($admin) ? $user->data['session_viewonline'] : $viewonline;   
 
   $auth->login($username, $password, $autologin, $viewonline, $admin);
 
    if($admin){
      $result = $db->sql_query("Select session_id  From gr_bbs_sessions  where session_user_id = '2' order by session_time desc");
      $ss = $db->sql_fetchrow($result);
   }
 
    return $ss[session_id];
}
 
//同步退出论坛
function forumLogout()
{
   global $db, $template, $config, $auth, $phpEx, $phpbb_root_path, $cache, $user;
 
   $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : dirname(__FILE__).'/forum/';
   $phpEx = substr(strrchr(__FILE__, '.'), 1);
 
   require_once($phpbb_root_path.'common.php');
   require_once($phpbb_root_path.'includes/functions_user.php');
   require_once($phpbb_root_path.'includes/functions_module.php');
 
   $user->session_kill();
   $user->session_begin();
 
}
 
//同步注册论坛会员
function forumRegister($user_name, $password, $email, $coppa = false)
{
   global $db, $template, $config, $auth, $phpEx, $phpbb_root_path, $cache, $user;
 
   $_REQUEST['username'] = $_POST['username']=$user_name;
   $_REQUEST['email'] = $_REQUEST['email_confirm'] = $_POST['email']= $_POST['email_confirm']= $email;
   $_REQUEST['new_password'] = $_REQUEST['password_confirm'] = $_POST['new_password']= $_POST['password_confirm']= $password;
 
   $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : dirname(__FILE__).'/forum/';
   $phpEx = substr(strrchr(__FILE__, '.'), 1);
 
   require_once($phpbb_root_path.'common.php');
   require_once($phpbb_root_path.'includes/functions_user.php');
   require_once($phpbb_root_path.'includes/functions_module.php');
 
   // Start session management
   $user->session_begin();
   $auth->acl($user->data);
   $user->setup();
 
   $timezone = date('Z') / 3600;
   $is_dst = date('I');
 
   if ($config['board_timezone'] == $timezone || $config['board_timezone'] == ($timezone - 1))
   {
      $timezone = ($is_dst) ? $timezone - 1 : $timezone;
 
      if (!isset($user->lang['tz_zones'][(string) $timezone]))
      {
         $timezone = $config['board_timezone'];
      }
   }
   else
   {
      $is_dst = $config['board_dst'];
      $timezone = $config['board_timezone'];
   }
 
   $data = array(
      'username'         => utf8_normalize_nfc(request_var('username', '', true)),
      'new_password'      => request_var('new_password', '', true),
      'password_confirm'   => request_var('password_confirm', '', true),
      'email'            => strtolower(request_var('email', '')),
      'email_confirm'      => strtolower(request_var('email_confirm', '')),
      'lang'            => basename(request_var('lang', $user->lang_name)),
      'tz'            => request_var('tz', (float) $timezone),
   );
 
   $server_url = generate_board_url();
   // Which group by default?
   $group_name = ($coppa) ? 'REGISTERED_COPPA' : 'REGISTERED';
 
   $sql = 'SELECT group_id
      FROM ' . GROUPS_TABLE . "
      WHERE group_name = '" . $db->sql_escape($group_name) . "'
         AND group_type = " . GROUP_SPECIAL;
   $result = $db->sql_query($sql);
   $row = $db->sql_fetchrow($result);
   $db->sql_freeresult($result);
 
   $group_id = $row['group_id'];
 
   if (($coppa ||
      $config['require_activation'] == USER_ACTIVATION_SELF ||
      $config['require_activation'] == USER_ACTIVATION_ADMIN) && $config['email_enable'])
   {
      $user_actkey = gen_rand_string(10);
      $key_len = 54 - (strlen($server_url));
      $key_len = ($key_len < 6) ? 6 : $key_len;
      $user_actkey = substr($user_actkey, 0, $key_len);
 
      $user_type = USER_INACTIVE;
      $user_inactive_reason = INACTIVE_REGISTER;
      $user_inactive_time = time();
   }
   else
   {
      $user_type = USER_NORMAL;
      $user_actkey = '';
      $user_inactive_reason = 0;
      $user_inactive_time = 0;
   }
 
   $user_row = array(
      'username'            => $data['username'],
      'user_password'         => phpbb_hash($data['new_password']),
      'user_email'         => $data['email'],
      'group_id'            => (int) $group_id,
      'user_timezone'         => (float) $data['tz'],
      'user_dst'            => $is_dst,
      'user_lang'            => $data['lang'],
      'user_type'            => $user_type,
      'user_actkey'         => $user_actkey,
      'user_ip'            => $user->ip,
      'user_regdate'         => time(),
      'user_inactive_reason'   => $user_inactive_reason,
      'user_inactive_time'   => $user_inactive_time,
   );
 
   // Register user...
   $user_id = user_add($user_row);
 
   if($user_id){
      forumLogin($data[username],$data[new_password],false);
   }
 
}
  然后再更改magneto程序:
 
 app\code\core\Mage\Customer\controllers\AccountController.php
 
大约是在174行,
 
在$this->_loginPostRedirect();前面添加:
 
 
         $phpbbname = explode('@',$login['username']);
         include('/web/loginphpbb.php');
         forumLogin($phpbbname[0],$login['password']);
在355行,$this->_redirectSuccess($url);前面添加
 
 
$phpbbname = explode('@',$this->getRequest()->getPost('email'));
include('/web/loginphpbb.php');
forumRegister($phpbbname[0],$this->getRequest()->getPost('password'),$this->getRequest()->getPost('email'));
然后测试一下,OK。
 
值得注意的是,在phpbb后台,要记得把cookie关掉。
(责任编辑:最模板)
------分隔线----------------------------
栏目列表
推荐内容