Server : Apache
System : Linux iZ2vcgyutqttsd1p850kl8Z 3.10.0-1160.92.1.el7.x86_64 #1 SMP Tue Jun 20 11:48:01 UTC 2023 x86_64
User : www ( 1000)
PHP Version : 5.6.40
Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Directory :  /www/wwwroot/saimikebio.com/mobile/include/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


Current File : /www/wwwroot/saimikebio.com/mobile/include/lib_passport.php
<?php



/**

 * ECSHOP 用户帐号相关函数库

 * ============================================================================

 * * 版权所有 2005-2012 上海商派网络科技有限公司,并保留所有权利。

 * 网站地址: http://www.ecshop.com;

 * ----------------------------------------------------------------------------

 * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和

 * 使用;不允许对程序代码以任何形式任何目的的再发布。

 * ============================================================================

 * $Author: liubo $

 * $Id: lib_passport.php 17217 2011-01-19 06:29:08Z liubo $

*/



if (!defined('IN_ECTOUCH'))

{

    die('Hacking attempt');

}



/**

 * 用户注册,登录函数

 *

 * @access  public

 * @param   string       $username          注册用户名

 * @param   string       $password          用户密码

 * @param   string       $email             注册email

 * @param   array        $other             注册的其他信息

 *

 * @return  bool         $bool

 */

function register($username, $password, $email, $other = array())
{

    /* 检查注册是否关闭 */

    if (!empty($GLOBALS['_CFG']['shop_reg_closed']))

    {

        $GLOBALS['err']->add($GLOBALS['_LANG']['shop_register_closed']);

    }

    /* 检查username */

    if (empty($username))

    {

        $GLOBALS['err']->add($GLOBALS['_LANG']['username_empty']);

    }

    else

    {

        if (preg_match('/\'\/^\\s*$|^c:\\\\con\\\\con$|[%,\\*\\"\\s\\t\\<\\>\\&\'\\\\]/', $username))

        {

            $GLOBALS['err']->add(sprintf($GLOBALS['_LANG']['username_invalid'], htmlspecialchars($username)));

        }

    }



    /* 检查是否和管理员重名 */

    if (admin_registered($username))

    {

        $GLOBALS['err']->add(sprintf($GLOBALS['_LANG']['username_exist'], $username));

        return false;

    }

   

    if (!$GLOBALS['user']->add_user($username, $password, $email))

    { 

        

        if ($GLOBALS['user']->error == ERR_INVALID_USERNAME)

        {

            $GLOBALS['err']->add(sprintf($GLOBALS['_LANG']['username_invalid'], $username));

        }

        elseif ($GLOBALS['user']->error == ERR_USERNAME_NOT_ALLOW)

        {

            $GLOBALS['err']->add(sprintf($GLOBALS['_LANG']['username_not_allow'], $username));

        }

        elseif ($GLOBALS['user']->error == ERR_USERNAME_EXISTS)

        {

            $GLOBALS['err']->add(sprintf($GLOBALS['_LANG']['username_exist'], $username));

        }

		/*wzys修改的代码*/

		/*

        elseif ($GLOBALS['user']->error == ERR_INVALID_EMAIL)

        {

            $GLOBALS['err']->add(sprintf($GLOBALS['_LANG']['email_invalid'], $email));

        }

        elseif ($GLOBALS['user']->error == ERR_EMAIL_NOT_ALLOW)

        {

            $GLOBALS['err']->add(sprintf($GLOBALS['_LANG']['email_not_allow'], $email));

        }

        elseif ($GLOBALS['user']->error == ERR_EMAIL_EXISTS)

        {

            $GLOBALS['err']->add(sprintf($GLOBALS['_LANG']['email_exist'], $email));

        }

	*/

		/*修改的代码 end*/

        else

        {

            $GLOBALS['err']->add('UNKNOWN ERROR!');

        }



        //注册失败

        return false;

    }

    else

    {

        //注册成功

        /* 设置成登录状态 */

        $GLOBALS['user']->set_session($username);

        $GLOBALS['user']->set_cookie($username);



        /* 注册送积分 */

        if (!empty($GLOBALS['_CFG']['register_points']))

        {

            log_account_change($_SESSION['user_id'], 0, 0, $GLOBALS['_CFG']['register_points'], $GLOBALS['_CFG']['register_points'], $GLOBALS['_LANG']['register_points']);

        }



        /*推荐处理*/

        $affiliate  = unserialize($GLOBALS['_CFG']['affiliate']);

        if (isset($affiliate['on']) && $affiliate['on'] == 1)

        {

            // 推荐开关开启

            $up_uid     = get_affiliate();

            empty($affiliate) && $affiliate = array();

            $affiliate['config']['level_register_all'] = intval($affiliate['config']['level_register_all']);

            $affiliate['config']['level_register_up'] = intval($affiliate['config']['level_register_up']);

            if ($up_uid)

            {

                if (!empty($affiliate['config']['level_register_all']))

                {

                    if (!empty($affiliate['config']['level_register_up']))

                    {

                        $rank_points = $GLOBALS['db']->getOne("SELECT rank_points FROM " . $GLOBALS['ecs']->table('users') . " WHERE user_id = '$up_uid'");

                        if ($rank_points + $affiliate['config']['level_register_all'] <= $affiliate['config']['level_register_up'])

                        {

                            log_account_change($up_uid, 0, 0, $affiliate['config']['level_register_all'], 0, sprintf($GLOBALS['_LANG']['register_affiliate'], $_SESSION['user_id'], $username));

                        }

                    }

                    else

                    {

                        log_account_change($up_uid, 0, 0, $affiliate['config']['level_register_all'], 0, $GLOBALS['_LANG']['register_affiliate']);

                    }

                }



                //设置推荐人

                $sql = 'UPDATE '. $GLOBALS['ecs']->table('users') . ' SET parent_id = ' . $up_uid . ' WHERE user_id = ' . $_SESSION['user_id'];



                $GLOBALS['db']->query($sql);

            }

        }



        //定义other合法的变量数组

        $other_key_array = array('msn', 'qq', 'office_phone', 'home_phone', 'mobile_phone', 'sina_weibo_id');

        $update_data['reg_time'] = local_strtotime(local_date('Y-m-d H:i:s'));

        if ($other)

        {

            foreach ($other as $key=>$val)

            {

                //删除非法key值

                if (!in_array($key, $other_key_array))

                {

                    unset($other[$key]);

                }

                else

                {

                    $other[$key] =  htmlspecialchars(trim($val)); //防止用户输入javascript代码

                }

            }

            $update_data = array_merge($update_data, $other);

        }

        $GLOBALS['db']->autoExecute($GLOBALS['ecs']->table('users'), $update_data, 'UPDATE', 'user_id = ' . $_SESSION['user_id']);



        update_user_info();      // 更新用户信息

        recalculate_price();     // 重新计算购物车中的商品价格



        return true;

    }

}



/**

 *

 *

 * @access  public

 * @param

 *

 * @return void

 */

function logout()

{

/* todo */

}



/**

 *  将指定user_id的密码修改为new_password。可以通过旧密码和验证字串验证修改。

 *

 * @access  public

 * @param   int     $user_id        用户ID

 * @param   string  $new_password   用户新密码

 * @param   string  $old_password   用户旧密码

 * @param   string  $code           验证码(md5($user_id . md5($password)))

 *

 * @return  boolen  $bool

 */

function edit_password($user_id, $old_password, $new_password='', $code ='')

{

    if (empty($user_id)) $GLOBALS['err']->add($GLOBALS['_LANG']['not_login']);



    if ($GLOBALS['user']->edit_password($user_id, $old_password, $new_password, $code))

    {

        return true;

    }

    else

    {

        $GLOBALS['err']->add($GLOBALS['_LANG']['edit_password_failure']);



        return false;

    }

}



/**

 *  会员找回密码时,对输入的用户名和邮件地址匹配

 *

 * @access  public

 * @param   string  $user_name    用户帐号

 * @param   string  $email        用户Email

 *

 * @return  boolen

 */

function check_userinfo($user_name, $email)

{

    if (empty($user_name) || empty($email))

    {

        ecs_header("Location: user.php?act=get_password\n");



        exit;

    }



    /* 检测用户名和邮件地址是否匹配 */

    $user_info = $GLOBALS['user']->check_pwd_info($user_name, $email);

    if (!empty($user_info))

    {

        return $user_info;

    }

    else

    {

        return false;

    }

}



/**

 *  用户进行密码找回操作时,发送一封确认邮件

 *

 * @access  public

 * @param   string  $uid          用户ID

 * @param   string  $user_name    用户帐号

 * @param   string  $email        用户Email

 * @param   string  $code         key

 *

 * @return  boolen  $result;

 */

function send_pwd_email($uid, $user_name, $email, $code)

{

    global $config;

    if (empty($uid) || empty($user_name) || empty($email) || empty($code))

    {

        ecs_header("Location: user.php?act=get_password\n");

        exit;

    }



    /* 设置重置邮件模板所需要的内容信息 */

    $template    = get_mail_template('send_password');

    $reset_email = $GLOBALS['ecs']->url() . 'user.php?act=get_password&uid=' . $uid . '&code=' . $code;



    $GLOBALS['smarty']->assign('user_name',   $user_name);

    $GLOBALS['smarty']->assign('reset_email', $reset_email);

    $GLOBALS['smarty']->assign('shop_name',   $GLOBALS['_CFG']['shop_name']);

    $GLOBALS['smarty']->assign('send_date',   date('Y-m-d'));

    $GLOBALS['smarty']->assign('sent_date',   date('Y-m-d'));



    $content = $GLOBALS['smarty']->fetch('str:' . $template['template_content']);



    /* 发送确认重置密码的确认邮件 */

    if (send_mail($user_name, $email, $template['template_subject'], $content, $template['is_html']))

    {

        return true;

    }

    else

    {

        return false;

    }

}



/**

 *  发送激活验证邮件

 *

 * @access  public

 * @param   int     $user_id        用户ID

 *

 * @return boolen

 */

function send_regiter_hash ($user_id)

{

    /* 设置验证邮件模板所需要的内容信息 */

    $template    = get_mail_template('register_validate');

    $hash = register_hash('encode', $user_id);

    $validate_email = $GLOBALS['ecs']->url() . 'user.php?act=validate_email&hash=' . $hash;



    $sql = "SELECT user_name, email FROM " . $GLOBALS['ecs']->table('users') . " WHERE user_id = '$user_id'";

    $row = $GLOBALS['db']->getRow($sql);



    $GLOBALS['smarty']->assign('user_name',         $row['user_name']);

    $GLOBALS['smarty']->assign('validate_email',    $validate_email);

    $GLOBALS['smarty']->assign('shop_name',         $GLOBALS['_CFG']['shop_name']);

    $GLOBALS['smarty']->assign('send_date',         date($GLOBALS['_CFG']['date_format']));



    $content = $GLOBALS['smarty']->fetch('str:' . $template['template_content']);



    /* 发送激活验证邮件 */

    if (send_mail($row['user_name'], $row['email'], $template['template_subject'], $content, $template['is_html']))

    {

        return true;

    }

    else

    {

        return false;

    }

}



/**

 *  生成邮件验证hash

 *

 * @access  public

 * @param

 *

 * @return void

 */

function register_hash ($operation, $key)

{

    if ($operation == 'encode')

    {

        $user_id = intval($key);

        $sql = "SELECT reg_time ".

               " FROM " . $GLOBALS['ecs'] ->table('users').

               " WHERE user_id = '$user_id' LIMIT 1";

        $reg_time = $GLOBALS['db']->getOne($sql);



        $hash = substr(md5($user_id . $GLOBALS['_CFG']['hash_code'] . $reg_time), 16, 4);



        return base64_encode($user_id . ',' . $hash);

    }

    else

    {

        $hash = base64_decode(trim($key));

        $row = explode(',', $hash);

        if (count($row) != 2)

        {

            return 0;

        }

        $user_id = intval($row[0]);

        $salt = trim($row[1]);



        if ($user_id <= 0 || strlen($salt) != 4)

        {

            return 0;

        }



        $sql = "SELECT reg_time ".

               " FROM " . $GLOBALS['ecs'] ->table('users').

               " WHERE user_id = '$user_id' LIMIT 1";

        $reg_time = $GLOBALS['db']->getOne($sql);



        $pre_salt = substr(md5($user_id . $GLOBALS['_CFG']['hash_code'] . $reg_time), 16, 4);



        if ($pre_salt == $salt)

        {

            return $user_id;

        }

        else

        {

            return 0;

        }

    }

}



/**

 * 判断超级管理员用户名是否存在

 * @param   string      $adminname 超级管理员用户名

 * @return  boolean

 */

function admin_registered( $adminname )

{

    $res = $GLOBALS['db']->getOne("SELECT COUNT(*) FROM " . $GLOBALS['ecs']->table('admin_user') .

                                  " WHERE user_name = '$adminname'");

    return $res;

}



?>