需求:uchome二次开发,在注册的时候,需要填写一些额外的字段,比如,年龄,体重,真实姓名和手机号等。基本思路就是这样,这里添加的字段是”area”,如果想添加在uc_members表中,只需在这个表中添加字段要添加的字段既可
	1.uc_client/control/user.php
	         改动代码
							01 | 
						
							    function onregister() {  | 
					
							02 | 
						
							        $this->init_input();  | 
					
							03 | 
						
							        $username = $this->input('username');  | 
					
							04 | 
						
							        $password =  $this->input('password');  | 
					
							05 | 
						
							        $email = $this->input('email');  | 
					
							06 | 
						
							        $questionid = $this->input('questionid');  | 
					
							07 | 
						
							        $answer = $this->input('answer');  | 
					
							08 | 
						
							        $area = $this->input('area');//自定义字段  | 
					
							09 | 
						
							  | 
					
							10 | 
						
							        if(($status = $this->_check_username($username)) < 0) {  | 
					
							11 | 
						
							            return $status;  | 
					
							12 | 
						
							        }  | 
					
							13 | 
						
							        if(($status = $this->_check_email($email)) < 0) {  | 
					
							14 | 
						
							            return $status;  | 
					
							15 | 
						
							        }  | 
					
							16 | 
						
							        $uid = $_ENV['user']->add_user($username, $password, $email, 0, $questionid, $answer, $area);  | 
					
							17 | 
						
							        return $uid;  | 
					
							18 | 
						
							    }  | 
					
							19 | 
						
							  | 
					
							20 | 
						
							2.uc_client/model/user.php  | 
					
							21 | 
						
							改动代码:  | 
					
							22 | 
						
							    function add_user($username, $password, $email, $uid = 0, $questionid = '', $answer = '', $area) {  | 
					
							23 | 
						
							        $salt = substr(uniqid(rand()), -6);  | 
					
							24 | 
						
							        $password = md5(md5($password).$salt);  | 
					
							25 | 
						
							        $sqladd = $uid ? "uid='".intval($uid)."'," : '';  | 
					
							26 | 
						
							        $sqladd .= $questionid > 0 ? " secques='".$this->quescrypt($questionid, $answer)."'," : " secques='',";  | 
					
							27 | 
						
							        $this->db->query("INSERT INTO ".UC_DBTABLEPRE."members SET $sqladd username='$username', password='$password', email='$email', area='$area', regip='".$this-  | 
					
							28 | 
						
							  | 
					
							29 | 
						
							>base->onlineip."', regdate='".$this->base->time."', salt='$salt'");  | 
					
							30 | 
						
							        $uid = $this->db->insert_id();  | 
					
							31 | 
						
							        $this->db->query("INSERT INTO ".UC_DBTABLEPRE."memberfields SET uid='$uid'");  | 
					
							32 | 
						
							        return $uid;  | 
					
							33 | 
						
							    } | 
					
	3.uc_client/client.php
	改动代码
							01 | 
						
							/**  | 
					
							02 | 
						
							* 用户注册  | 
					
							03 | 
						
							*  | 
					
							04 | 
						
							* @param string $username     用户名  | 
					
							05 | 
						
							* @param string $password     密码  | 
					
							06 | 
						
							* @param string $email        Email  | 
					
							07 | 
						
							* @param int $questionid    安全提问  | 
					
							08 | 
						
							* @param string $answer     安全提问答案  | 
					
							09 | 
						
							* @return int  | 
					
							10 | 
						
							    -1 : 用户名不合法  | 
					
							11 | 
						
							    -2 : 包含不允许注册的词语  | 
					
							12 | 
						
							    -3 : 用户名已经存在  | 
					
							13 | 
						
							    -4 : email 格式有误  | 
					
							14 | 
						
							    -5 : email 不允许注册  | 
					
							15 | 
						
							    -6 : 该 email 已经被注册  | 
					
							16 | 
						
							    >1 : 表示成功,数值为 UID  | 
					
							17 | 
						
							*/ | 
					
							18 | 
						
							function uc_user_register($username, $password, $email, $questionid = '', $answer = '', $area) {  | 
					
							19 | 
						
							    return call_user_func(UC_API_FUNC, 'user', 'register', array('username'=>$username, 'password'=>$password, 'email'=>$email, 'questionid'=>$questionid, 'answer'=>$answer,   | 
					
							20 | 
						
							  | 
					
							21 | 
						
							'area'=>$area));  | 
					
							22 | 
						
							} | 
					
	4.source/do_register.php
	改动代码:添加$area变量
							01 | 
						
							[/php]  | 
					
							02 | 
						
							        $area = $_POST['area'];  | 
					
							03 | 
						
							        $newuid = uc_user_register($username, $password, $email,$area);  | 
					
							04 | 
						
							        if($newuid <= 0) {  | 
					
							05 | 
						
							            if($newuid == -1) {  | 
					
							06 | 
						
							                showmessage('user_name_is_not_legitimate');  | 
					
							07 | 
						
							            } elseif($newuid == -2) {  | 
					
							08 | 
						
							                showmessage('include_not_registered_words');  | 
					
							09 | 
						
							            } elseif($newuid == -3) {  | 
					
							10 | 
						
							                showmessage('user_name_already_exists');  | 
					
							11 | 
						
							            } elseif($newuid == -4) {  | 
					
							12 | 
						
							                showmessage('email_format_is_wrong');  | 
					
							13 | 
						
							            } elseif($newuid == -5) {  | 
					
							14 | 
						
							                showmessage('email_not_registered');  | 
					
							15 | 
						
							            } elseif($newuid == -6) {  | 
					
							16 | 
						
							                showmessage('email_has_been_registered');  | 
					
							17 | 
						
							            } else {  | 
					
							18 | 
						
							                showmessage('register_error');  | 
					
							19 | 
						
							            }  | 
					
							20 | 
						
							        } else {  | 
					
							21 | 
						
							            $setarr = array(  | 
					
							22 | 
						
							                'uid' => $newuid,  | 
					
							23 | 
						
							                'username' => $username,  | 
					
							24 | 
						
							                'area' => $area,//这里似乎不用修改,没仔细看  | 
					
							25 | 
						
							                'groupid' => 2,  | 
					
							26 | 
						
							                'password' => md5("$newuid|$_SGLOBAL[timestamp]"), //本地密码随机生成  | 
					
							27 | 
						
							                'dateline' => $_SGLOBAL['timestamp'],  | 
					
							28 | 
						
							                'updatetime' => $_SGLOBAL['timestamp'],  | 
					
							29 | 
						
							                'lastlogin' => $_SGLOBAL['timestamp'],  | 
					
							30 | 
						
							                'ip' => $_SGLOBAL['onlineip']  | 
					
							31 | 
						
							            );  | 
					
							32 | 
						
							            //更新本地用户库  | 
					
							33 | 
						
							            inserttable('members', $setarr, 0, true);  | 
					
							34 | 
						
							  | 
					
							35 | 
						
							            //设置cookie  | 
					
							36 | 
						
							            ssetcookie('auth', authcode("$setarr[password]\t$setarr[uid]", 'ENCODE'), 2592000);  | 
					
							37 | 
						
							            ssetcookie('loginuser', $username, 31536000);  | 
					
							38 | 
						
							  | 
					
							39 | 
						
							            showmessage('registered', rawurldecode($refer));  | 
					
							40 | 
						
							        }  | 
					
							41 | 
						
							[php] | 
					
5.同时修改模板文件do_regiester.htm加入相应的字段
肯能有些数据存uchome_space表更好些,思路就是在source/do_register.php去更新表uchome_space和uchome_spacefield,例如修改修改如下,更新真实姓名,和手机号字段
在source/do_register.php下找到
	$friendstr = empty($fuids)?'':implode(',', $fuids);
	 updatetable('space', array('friendnum'=>count($fuids), 'pokenum'=>count($pokes)), array('uid'=>$newuid));
	 updatetable('spacefield', array('friend'=>$friendstr, 'feedfriend'=>$friendstr), array('uid'=>$newuid));
	/*- 2010-10-22 16:41 修改如下,更新真实姓名,和手机号字段-*/
	     updatetable('space', array('friendnum'=>count($fuids), 'pokenum'=>count($pokes),'name'=>$name,'namestatus'=>1), array('uid'=>$newuid));
	     updatetable('spacefield', array('friend'=>$friendstr, 'feedfriend'=>$friendstr,'mobile'=>$mobile), array('uid'=>$newuid));