require('../../class/connect.php');
require('../../class/db_sql.php');
require('../class/user.php');
require('../class/member_registerfun.php');
$link=db_connect();
$empire=new mysqlquery();
$editor=1;
eCheckCloseMods("member");//验证是否关闭前台会员模块
if($public_r["register_ok"])
{
printerror("CloseRegister","history.go(-1)",1);
}
eCheckTimeCloseDo("reg");//验证时间段允许操作
eCheckAccessDoIp("register");//验证IP
$tobind=(int)$_GET["tobind"];
//如果设置了会员注册地址, 则转向注册
if(!empty($ecms_config["member"]["registerurl"]))
{
header("location:".$ecms_config["member"]["registerurl"]);
exit();
}
//已经登陆不能注册
if(getcvar("mluserid")){
//您已登录, 不能注册帐号
printerror("LoginToRegister","history.go(-1)",1);
}
//多会员组中转注册地址
if(!empty($ecms_config["member"]["changeregisterurl"])&&!$_GET["groupid"])
{
$changeregisterurl=$ecms_config["member"]["changeregisterurl"];
if($tobind)
{
$changeregisterurl.='?tobind=1';
}
header("location:".$changeregisterurl);
exit();
}
$groupid=(int)$_GET["groupid"];
$groupid=$groupid?$groupid:eReturnMemberDefGroupid();//如果$groupid为false则返回默认会员组ID
CheckMemberGroupCanReg($groupid);//验证会员组是否可注册
$formid=GetMemberFormId($groupid);//取得表单id
if(empty($formid))
{
printerror("ErrorUrl","",1);
}
$ecmsfirstpost=1;
$formfile='../../data/html/memberform'.$formid.'.php';
require(ECMS_PATH.'e/template/member/register.php');
db_close();
$empire=null;
?>
//函数eCheckCloseMods在/e/class/connect.php
//验证是否关闭相关模块
function eCheckCloseMods($mod){
global $public_r;
if(strstr($public_r["closemods"],",".$mod.",")){
echo $mod." is close";
exit();
}
}
//函数eCheckTimeCloseDo在/e/class/connect.php
//验证操作时间
function eCheckTimeCloseDo($ecms){
global $public_r;
//限定操作时间的操作 reg注册会员 info投稿 pl评论 gbook留言板
if(stristr($public_r["timeclosedo"],",".$ecms.",")){
//G小时, 24小时格式, 没有前导零, 0到23
$h=date("G");
if(strstr($public_r["timeclose"],",".$h.",")){
printerror("ThisTimeCloseDo","history.go(-1)",1);
}
}
}
//函数eCheckAccessDoIp在/e/class/connect.php
//验证提交IP
function eCheckAccessDoIp($doing){
global $public_r,$empire,$dbtbpre;
//opendoip 允许IP提交列表, 只有当用户处于本列表中的IP地址时才可以提交数据, 列表以外的地址提交将视为IP被禁止, 每个IP一行, 既可输入完整地址, 也可只输入IP开头, 例如"192.168."(不含引号)可匹配192.168.0.0~192.168.255.255范围内的所有地址, 留空为所有IP除明确禁止的以外均可访问
//closedoip 禁止IP提交列表, 每个IP一行, 既可输入完整地址, 也可只输入IP开头, 例如"192.168."(不含引号)可匹配192.168.0.0~192.168.255.255范围内的所有地址, 留空为不设置
//doiptype 控制动作, register注册 pl评论 postinfo投稿 gbook留言 downinfo下载 onlineinfo在线观看 showinfo查看信息
$pr=$empire->fetch1("select opendoip,closedoip,doiptype from {$dbtbpre}enewspublic limit 1");
if(!strstr($pr["doiptype"],",".$doing.",")){
return "";
}
$userip=egetip();
//允许IP
if($pr["opendoip"]){
$close=1;
foreach(explode("\n",$pr["opendoip"]) as $ctrlip){
//string preg_quote(string $str [,string $delimiter=NULL])
//preg_quote()需要参数str并向其中每个正则表达式语法中的字符前增加一个反斜线。这通常用于你有一些运行时字符串需要作为正则表达式进行匹配的时候。
//正则表达式特殊字符有:.\+*?[^]$(){}=!<>|:-
//注意/不是正则表达式特殊字符
//str 输入字符串
//delimiter 如果指定了可选参数delimiter, 它也会被转义, 这通常用于转义PCRE函数使用的分隔符。/是最常见的分隔符。
if(preg_match("/^(".preg_quote(($ctrlip=trim($ctrlip)),'/').")/",$userip)){
$close=0;
break;
}
}
if($close==1){
printerror("NotCanPostIp","history.go(-1)",1);
}
}
//禁止IP
if($pr["closedoip"]){
foreach(explode("\n",$pr["closedoip"]) as $ctrlip){
if(preg_match("/^(".preg_quote(($ctrlip=trim($ctrlip)),'/').")/",$userip)){
printerror("NotCanPostIp","history.go(-1)",1);
}
}
}
}
//验证提交来源
function CheckCanPostUrl(){
global $public_r;
//前台允许提交的来源地址(一行为一个地址)
if($public_r["canposturl"]){
$r=explode("\r\n",$public_r["canposturl"]);
$count=count($r);
$b=0;
for($i=0;$i
if(strstr($_SERVER["HTTP_REFERER"],$r[$i])){
$b=1;
break;
}
}
if($b==0){
printerror("NotCanPostUrl","",1);
}
}
}
?>