<?php
$loginname=trim($_REQUEST["loginname"]);
$password=trim($_REQUEST["password"]);
$saveuid=trim($_REQUEST["saveuid"]);
$ClientUID=$_COOKIE["SIPUID"];
$ClientPWD=$_COOKIE["SIPPWD"];

$isLogined=FALSE;  //页级变量，判断是否登录，默认为False，在CheckLogin()设置为True，在LogOut()设置为False
$isLogOut=FALSE;   //页级变量，判断是否退出操作
$bCookieAuth=FALSE;
$Work = $_REQUEST["Work"];
if ($Work=="") {				//第一次浏览
	if ($ClientUID!="") {		//有COOKIE身份数据
		$Work="CheckLogin";
		$bCookieAuth=TRUE;
	}
}
if ($Work=="CheckLogin") { //检验用户登录
	$ret = CheckLogin();
	if ($ret==0) {
		ob_clean();
		header("Location: confirm.php");
		exit;
	}
	else {
		if ($ret>0) $isLogined=TRUE;
	}
}
elseif ($Work=="Confirm") {  	//用户上网确认
	$bCookieAuth=TRUE;
	$ret = CheckLogin();
	if ($ret>0) $isLogined=TRUE;
}
elseif ($Work=="Other") {  	//以其它帐号上网
	$loginname="";
	$password="";
	$ClientUID="";
	$ClientPWD="";
	$Work="";
}
elseif ($Work=="LogOut") {  	//退出
	$isLogined = LogOut();
	$isLogOut=TRUE;
}
else {
}

$strUID="";
if ($isLogined) {
	$strUID=$loginname;
	if ($strUID=="") {
		$strUID=$ClientUID;
	}
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta http-equiv="Content-Language" content="zh-cn">
<title>SIP宽带上网计费管理系统</title>
<link href="images/style.css" rel="stylesheet" type="text/css">
<script language="javascript">

document.oncontextmenu=mymenu;
<?php
if ($isLogined) {			//成功登录才执行
?>
window.onbeforeunload = myconfirm;
window.onunload = myclose;
timerid=window.setTimeout("mytimer()",3000);
starttime=0;
contacttime=0;
bQuit=0;
<?php
}
?>
//关闭或离开窗口前的警告
function myconfirm()
{
	if (bQuit>0) return;
	else return "\r\n\r\n\r\n\r\n警告：关闭或离开本页面，您将不能继续上网！！！\r\n      如您需要继续上网，请点“取消”回到当前页面！！！\r\n      请另外运行一个新的浏览器进行上网浏览！！！\r\n\r\n\r\n\r\n";
}

//关闭计时器
function myclose()
{
	window.clearTimeout(timerid);
	if (bQuit<1) {
		bQuit=1;
		document.frmLogOut.submit();
		alert("感谢您的使用！");
	}
}

//屏蔽右键菜单
function mymenu()
{
	window.event.returnValue=false;
}

//计时器
function mytimer()
{
	var d=new Date();
	tmptime=Math.round(d.getTime()/1000);
	showtime(tmptime-starttime);
	if (tmptime-contacttime>=20) {	//间隔上次联系超过20秒，再次联系
		contacttime=tmptime;
		mycontact(tmptime);
	}
	timerid=window.setTimeout("mytimer()",3000);
}

//刷新页面计时器
function showtime(times)
{
	var d=1,h=1,m=1,s=1;
	d=Math.floor(times/(24*3600));
	s=times-d*24*3600;
	h=Math.floor(s/3600);
	s=s-h*3600;
	m=Math.floor(s/60);
	s=s-m*60;
	var str="";
	if (d>0) str=str+d+"天，";
	if (h>0) str=str+h+"小时，";
	if (m>0) str=str+m+"分钟，";
	str=str+s+"秒";
	document.frmLogOut.TimeText.value=str;
}

//手工退出系统，先关闭计时器和警告
function myQuit()
{
	window.clearTimeout(timerid);
	bQuit=1;
	document.frmLogOut.submit();
}

//保持与服务器通讯
function mycontact(currenttime)
{
	var strurl="contact.php?serial="+currenttime.toString();
	parent.sip_myright.location=strurl;
}

//网页载入时，初始化操作
function myload()
{	
<?php
if ($isLogined) {
?>
	var d=new Date();
	contacttime=Math.round(d.getTime()/1000);
	starttime=contacttime;
	showtime(0);
	mycontact(starttime);
	bQuit=0;
<?php
}
?>
}

function mysaveid()
{
	var str="";
	if (document.frmLogin.saveuid.checked) {
		str=showModalDialog("saveuid.html");
		if (str!="saveuid") 
		{
			document.frmLogin.saveuid.checked=false;
		}
	}
}
</script>
</head>

<body onload="javascript:myload();">
<table width="778" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr valign="top"> 
    <td width="78"><a href="http://www.feware.com/" target="_blank"><img src="images/logo.jpg" width="182" height="78" border="0"></a></td>
    <td><img src="images/banner.jpg" width="596" height="78"></td>
  </tr>
</table>
<table width="778" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr valign="top"> 
    <td width="182" background="images/lf_bg.gif"> 
<?php
if ($isLogined) {	
	//登录用户信息
	ShowInfo();
}
else {
	//登录窗口
	Login();
}
?>

<?php
//没有登录或登录失败，显示登录窗口
function Login()
{
?>
	<table width="100%" border="0" cellpadding="5" cellspacing="0" height="233" background="images/login_bg.jpg">
<form name="frmLogin" method="POST" action="login.php" onSubmit="return CheckInput(this);">
		<tr> 
		  <td width="35%" align="right" height="36">　</td>
		  <td width="65%" height="36">　</td>
		</tr>
		<tr> 
		  <td width="35%" align="right" height="27"><font color="#FFFF00">帐号:</font></td>
		  <td width="65%" height="27"><input name="loginname" type="text" size="10" tabindex="1" onKeyDown="if(event.keyCode==13)event.keyCode=9" maxlength="20" onFocus="this.select();"></td>
		</tr>
		<tr> 
		  <td align="right" width="35%" height="15"><font color="#FFFF00">密码:</font></td>
		  <td width="65%" height="15">
		  <input name="password" type="password" size="10"  tabindex="2" onKeyDown="if(event.keyCode==13){frmLogin.frmSubmit.click();}" maxlength="20" onFocus="this.select();">
<input name="Work" type="hidden" value="CheckLogin"> 
<script language="javascript">
<!--
function CheckInput(obj){
if(obj.loginname.value==""){
alert("请输入[帐号]");
obj.loginname.focus();
return false;
}
if(obj.password.value==""){
alert("请输入[密码]");
obj.password.focus();
return false;
}
return true;    
}
//-->
</script>
<input name="frmSubmit" type="submit" id="frmSubmit" value="Submit" style="display:none">
		  </td>
		</tr>
		<tr> 
		  <td align="center" width="100%" height="27" colspan="2" valign="middle"><input type=checkbox name=saveuid value="yes" onclick="javascript:mysaveid();"><font color="#FFCC99">保存密码</font></td>
		</tr>
		<tr> 
		  <td width="100%" colspan="2" height="62" align="center">
            <table border="0" cellpadding="0" cellspacing="0" width="90%" height="43">
              <tr>
                <td width="50%" height="43" align="center"><img border="0" src="images/btn_Login.gif" style="cursor:hand" onClick="frmLogin.frmSubmit.click();"></td>
                <td width="50%" height="43" align="center"><img border="0" src="images/btn_Reset.gif" style="cursor:hand" onClick="frmLogin.reset();"></td>
              </tr>
            </table>
          </td>
		</tr>
</form>
	</table> 
<?php
return;
}
?>


<?php
//登录成功，显示用户信息
function ShowInfo()
{
	global $strUID;
?>
                  <table border="0" cellpadding="0" cellspacing="0" width="100%" height="233" background="images/HelpSelf_bg.jpg">
                    <tr>
                      <td width="100%" height="31">　</td>
                    </tr>
                    <tr>
                      <td width="100%" height="29" align="center" style="padding:0px 0px 0px 10px"><font color="#FFFF00">帐号：</font><font color="#FFFFFF"><?php echo $strUID; ?></font></td>
                    </tr>
                    <tr>
                      <td width="100%" height="35" align="center">
                        <table border="0" cellpadding="0" cellspacing="0" width="80%" height="100%" background="images/item.jpg">
                          <tr>
                            <td width="100%" align="center" valign="top"><a href="pass.php" target="_blank">修改密码</a></td>
                          </tr>
                        </table>
                      </td>
                    </tr>
                    <tr>
                      <td width="100%" height="34" align="center">
                        <table border="0" cellpadding="0" cellspacing="0" width="80%" height="100%" background="images/item.jpg">
                          <tr>
                            <td width="100%" align="center" valign="top"><a href="query1.php" target="_blank">清单查询</a></td>
                          </tr>
                        </table>
                      </td>
                    </tr>
                    <tr>
                      <td width="100%" height="34" align="center">
                        <table border="0" cellpadding="0" cellspacing="0" width="80%" height="100%" background="images/item.jpg">
                          <tr>
                            <td width="100%" align="center" valign="top"><img border="0" src="images/btn_exit.jpg" style="cursor:hand" onClick="frmLogOut.btnQuit.click();"></td>
                          </tr>
                        </table>
                      </td>
                    </tr>
                    <tr>
                      <td width="100%" height="57" align="center" valign="top">
              <form name="frmLogOut" method="POST" action="logout_result.php">
					本次上网用时:<br><input type="text" name="TimeText" size="15" readonly="true" class="TimeCount">
                 	<input name="btnQuit" type="submit" id="btnQuit" value="退出上网" style="display:none" onclick="javascript:myQuit();">     
					<input name="Work" type="hidden" value="LogOut">     
			  </form>
                      </td>
                    </tr>
                  </table>
<?php
return;
}
?>

      <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr> 
          <td width="100%" align="center"><img src="images/QA_tp.gif" width="147" height="75"></td>
        </tr>
      </table>
      <table width="100%" border="0" cellpadding="0" cellspacing="0">
        <tr> 
          <td width="100%">
            1. 登录后无法上网，请退出上网，再将电脑的TCP/IP属性设置为自动获取IP地址和DNS服务器，重新登录，或联系管理员。<br>                                                              
            <font color="#FF0000">    
            2. 登录后，请另外重新运行浏览器程序，在新的浏览器中上网浏览网站。登录窗口不能关闭，否则将自动被禁止上网！</font><br>   
            3. 如果还是不能登录上网，或有其它问题，请直接联系管理员。<br>                          
          </td>
        </tr>
      </table> 
      <table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr> 
          <td width="35%" align="center"><img src="images/QA_bt1.gif" width="40" height="43"></td>
          <td width="26%" align="center"><img src="images/QA_bt2.gif" width="40" height="43"></td>
          <td width="39%" align="center"><img src="images/QA_bt3.gif" width="40" height="43"></td>
        </tr>
      </table> 
      <br>
      <br>
      <br>
      <br>
      <br>
      <br>
      <br>
      <br>
      <br>
      
    </td>
    <td width="596" background="images/rt_bg.gif"> 
      <iframe src="myshow.html" width="100%" height="100%" border="0" frameborder="0" scrolling="no" resize="no"></iframe>
    </td>
  </tr>
</table>
</html>

<?php
function CheckLogin()
{
	global $loginname,$password,$saveuid,$ClientUID,$ClientPWD,$isLogined,$isLogOut,$bCookieAuth,$Work,$strUID;
	$db=mysql_pconnect(get_cfg_var("SIPSERVER"),get_cfg_var("SIPUSER"),get_cfg_var("SIPPWD"));
	mysql_select_db(get_cfg_var("SIPDB"),$db);
	$timestr=strftime("%Y-%m-%d %H:%M:%S");
	$password1="";
	$bHaveUserInfo=FALSE;
	if ($loginname!="" && $password!="") {
		$bHaveUserInfo=TRUE;
	}
	else {
		if ($ClientUID!="") {
			$bHaveUserInfo=TRUE;
			$loginname=$ClientUID;
			$password="";
		}
	}

	$userIP = $_SERVER["REMOTE_ADDR"];			//读取该用户当前使用电脑IP地址
	$rs = mysql_query("select userid from login where ipaddr='".$userIP."'",$db);		//查找该IP是否已经登录
	if ( ($row = mysql_fetch_array($rs))==FALSE ) {			//还没有登录
		mysql_free_result($rs);
		//合法性和有效性校验	
		if (!$bHaveUserInfo) {
    		$n=0;
		}
		else {
			$rs = mysql_query("select userid,password,type,onlines,cookiemask,gpid,ipaddr,suspend,mac from users where loginname='".$loginname."' and checked='n'",$db);		//查找该用户ID记录
			if ( ($row = mysql_fetch_array($rs))==FALSE ) {										//没有找到
				mysql_free_result($rs);
				$n=1;				//不存在该用户ID
			}
			else {
				$userid = $row["userid"];
				$usertype = $row["type"];
				$password1=$row["password"];
				$maxonline=$row["onlines"];
				$cookiemask=$row["cookiemask"];
				$gpid = $row["gpid"];
				$allowip = $row["ipaddr"];
				$suspend = $row["suspend"];
				if (is_null($suspend)) {
					$suspend="";
				}
				$mac = $row["mac"];
				mysql_free_result($rs);
				if (is_null($cookiemask)) {
					$cookiemask="1234567890";
				}
				if (is_null($allowip)) {
					$allowip="";
				}
				if (is_null($mac)) {
					$mac="";
				}
				$bPass=FALSE;
				if ($loginname!="" && $password!="") {
					if ($password==$password1) {					//比较密码
						$bPass=TRUE;
					}
				}
				else {
					$md5str=md5($loginname.",".$cookiemask.",".$password1);
					if ($md5str==$ClientPWD) {
						$bPass=TRUE;
					}
				}
				if (!$bPass) {					//比较密码
					$n=2;			//密码不对
				}
				else {
					if ($password=="" && $ClientUID!="" && $ClientPWD!="" && $Work!="Confirm") {	//客户端已经存在合法COOKIE，而且不是上网确认
						//转到是否上网提示页面
						mysql_close($db);
						return 0;	//需要转到确认网页
					}
					if ($suspend!="y") {		//不是欠费状态
						$onlineusers=0;
						$rs = mysql_query("select count(ipaddr) as allcount from login where userid='".$userid."'",$db);		//查找该用户ID是否已经登录过
						if ($row = mysql_fetch_array($rs)) {
							$onlineusers=$row["allcount"];
						}
						mysql_free_result($rs);
						if ($onlineusers<$maxonline) {		//还没有达到用户ID的同时最多在线数限制
							if ($allowip=="") {		//用户没有登录IP地址限制
								$allowip=$userIP;
							}
							if ($allowip==$userIP) {		//客户机登录IP地址就是设定用户使用IP地址
								$rs=mysql_query("select typemode,unit,limittype,limithour,limitflow from types where typeid='".$usertype."'",$db);
								if ($row = mysql_fetch_array($rs)) {
									$typemode=$row["typemode"];
									$typeunit=$row["unit"];
									$limittype=$row["limittype"];
									$limithour=$row["limithour"];
									$limitflow=$row["limitflow"];
									mysql_free_result($rs);
									$remaintime=0;
									$remaindata=0;
									$bPass=FALSE;
									if ($typemode=="0") {		//免费
										$bPass=TRUE;
									} elseif ($typemode=="2") {		//先使用后结算，不检查上网时间和流量是否用完
										//但还需要检查是否有包天、包月使用时间和流量限制
										if ($limittype=="2" && ($typeunit==3 || $typeunit==4) && ($limithour>0 || $limitflow>0)) {		//有限制，而且不能超过，而且是天或者月的类型，才可能有单位时间内的限制
											$rs=mysql_query("select starttime from usertime where userid='".$userid."' and overed='n'",$db);
											$starttime=$row["starttime"];
											mysql_free_result($rs);
											$str1="";
											$str2="";
											//计算当前所在开始时间和结束时间范围
											$ret=GetTimeRange($typeunit,$starttime,$str1,$str2);
											//计算出当前时刻所在时间范围内的已上网时间和流量
											$alltime=0;
											$alldata=0;
											$rs=mysql_query("select sum(facttime) as alltime,sum(factdata) as alldata from history where userid='".$userid."' and starttime>='".$str1."' and starttime<='".$str2."'",$db);	//以打折后的使用量计算
											if ($row = mysql_fetch_array($rs)) {
												$alltime=$row["alltime"];
												if (is_null($alltime)) {
													$alltime=0;
												}
												$alldata=$row["alldata"];
												if (is_null($alldata)) {
													$alldata=0;
												}
											}
											mysql_free_result($rs);
											if ($alltime>0) {
												$bPass=TRUE;
												if ($limithour>0) {
													if ($alltime>=$limithour*3600) {		//已经超过当月（天）使用小时数的限制
														$n=3;							//本月（天）上网时间已经超过使用小时数的限制
														$bPass=FALSE;
													} else {
														$remaintime=$limithour*3600-$alltime;		//本月（天）剩下时间
													}
												}
												if ($limitflow>0) {
													if ($alldata>=$limitflow*1024) {		//已经超过当月（天）使用流量数的限制
														$n=3;							//本月（天）上网流量已经超过使用流量数的限制
														$bPass=FALSE;
													} else {
														$remaindata=$limitflow*1024-$alldata;		//本月（天）剩下流量
													}
												}
											} else {			//当月（天）还完全没有上过网
												$bPass=TRUE;
												$remaintime=$limithour*3600;
												$remaindata=$limitflow*1024;
											}
											if ($bPass) {
												if ($remaintime>DateDiff("s",time(),strtotime($str2))) {		//本月（天）剩下时间超过现在到本月（天）结束的时间间隔
													$remaintime=DateDiff("s",time(),strtotime($str2));		//剩下时间就取较小者
												}
											}
										} else {
											$bPass=TRUE;
											$remaintime=0;
											$remaindata=0;
										}
									} else {			//先购买后使用
										//检查该用户的上网时间或流量是否已经用完
										$rs=mysql_query("select starttime,length,datalength from usertime where userid='".$userid."' and overed='n'",$db);
										if ( ($row = mysql_fetch_array($rs))==FALSE ) {		//该用户时间或者流量已经用完，且没有续费增加
											$n=5;
											mysql_free_result($rs);
										} else {
											$starttime=$row["starttime"];
											$length=$row["length"];
											$datalength=$row["datalength"];
											mysql_free_result($rs);
											if ($typeunit==1) {		//按分钟计时
												$rs=mysql_query("select sum(facttime) as alltime from history where userid='".$userid."' and starttime>='".$starttime."'",$db);
												if ($row = mysql_fetch_array($rs)) {
													$alltime=$row["alltime"];
													if (is_null($alltime)) {
														$alltime=0;
													}
													if ($alltime>=$length*60) {		//已经超过购买的时间总数
														$n=5;			//购买时间已经用完
													} else {
														$bPass=TRUE;
														$remaintime=$length*60-$alltime;
													}
												} else { 				//还没有上网记录
													$bPass=TRUE;
													$remaintime=$length*60;
												}
												mysql_free_result($rs);
											} elseif ($typeunit==2) {		//按小时计时
												$rs=mysql_query("select sum(facttime) as alltime from history where userid='".$userid."' and starttime>='".$starttime."'",$db);
												if ($row = mysql_fetch_array($rs)) {
													$alltime=$row["alltime"];
													if (is_null($alltime)) {
														$alltime=0;
													}
													if ($alltime>=$length*3600) {		//已经超过购买的时间总数
														$n=5;			//购买时间已经用完
													} else {
														$bPass=TRUE;
														$remaintime=$length*3600-$alltime;
													}
												} else { 				//还没有上网记录
													$bPass=TRUE;
													$remaintime=$length*3600;
												}
												mysql_free_result($rs);
											} elseif ($typeunit==3) {		//包天
												if (time()<strtotime("+".strval($length)." day",strtotime($starttime))) {			//还没到天数期限
													if ($limittype=="2" && ($limithour>0 || $limitflow>0)) {		//有限制，而且不能超过
														$str1="";
														$str2="";
														//计算当前所在开始时间和结束时间范围
														$ret=GetTimeRange($typeunit,$starttime,$str1,$str2);
														//计算出当前时刻所在时间范围内的已上网时间和流量
														$alltime=0;
														$alldata=0;
														$rs=mysql_query("select sum(facttime) as alltime,sum(factdata) as alldata from history where userid='".$userid."' and starttime>='".$str1."' and starttime<='".$str2."'",$db);	//以打折后的使用量计算
														if ($row = mysql_fetch_array($rs)) {
															$alltime=$row["alltime"];
															if (is_null($alltime)) {
																$alltime=0;
															}
															$alldata=$row["alldata"];
															if (is_null($alldata)) {
																$alldata=0;
															}
														}
														mysql_free_result($rs);
														if ($alltime>0) {
															$bPass=TRUE;
															if ($limithour>0) {
																if ($alltime>=$limithour*3600) {		//已经超过当天使用小时数的限制
																	$n=3;							//本天上网时间已经超过使用小时数的限制
																	$bPass=FALSE;
																} else {
																	$remaintime=$limithour*3600-$alltime;		//本天剩下时间
																}
															}
															if ($limitflow>0) {
																if ($alldata>=$limitflow*1024) {		//已经超过当天使用流量数的限制
																	$n=3;							//本天上网流量已经超过使用流量数的限制
																	$bPass=FALSE;
																} else {
																	$remaindata=$limitflow*1024-$alldata;		//本天剩下流量
																}
															}
														} else {			//当天还完全没有上过网
															$bPass=TRUE;
															$remaintime=$limithour*3600;
															$remaindata=$limitflow*1024;
														}
														if ($bPass) {
															if ($remaintime>DateDiff("s",time(),strtotime($str2))) {		//本天剩下时间超过现在到本天结束的时间间隔
																$remaintime=datediff("s",time(),strtotime($str2));		//剩下时间就取较小者
															}
														}
													} else {
														$bPass=TRUE;
														$remaintime=DateDiff("s",time(),strtotime("+".strval($length)." day",strtotime($starttime)));		//可上网时间为到包天到期时间为止
														$remaindata=0;
													}
												} else {
													$n=5;
												}
											} elseif ($typeunit==4 || $typeunit==5) {		//包月、包年
												if (time()<strtotime("+".strval($length)." month",strtotime($starttime))) {			//还没到月数期限
													if ($limittype=="2" && ($limithour>0 || $limitflow>0)) {		//有限制，而且不能超过
														$str1="";
														$str2="";
														//计算当前所在开始时间和结束时间范围
														$ret=GetTimeRange($typeunit,$starttime,$str1,$str2);
														//计算出当前时刻所在时间范围内的已上网时间和流量
														$alltime=0;
														$alldata=0;
														$rs=mysql_query("select sum(facttime) as alltime,sum(factdata) as alldata from history where userid='".$userid."' and starttime>='".$str1."' and starttime<='".$str2."'",$db);	//以打折后的使用量计算
														if ($row = mysql_fetch_array($rs)) {
															$alltime=$row["alltime"];
															if (is_null($alltime)) {
																$alltime=0;
															}
															$alldata=$row["alldata"];
															if (is_null($alldata)) {
																$alldata=0;
															}
														}
														mysql_free_result($rs);
														//计算出当前时刻所在月度时间范围内的已上网时间和流量
														if ($alltime>0) {
															$bPass=TRUE;
															if ($limithour>0) {
																if ($alltime>=$limithour*3600) {		//已经超过当月使用小时数的限制
																	$n=3;
																	$bPass=FALSE;							//本月上网时间已经超过使用小时数的限制
																} else {
																	$remaintime=$limithour*3600-$alltime;		//本月剩下时间
																}
															}
															if ($limitflow>0) {
																if ($alldata>=$limitflow*1024) {		//已经超过当月使用流量数的限制
																	$n=3;							//本月上网流量已经超过使用流量数的限制
																	$bPass=FALSE;
																} else {
																	$remaindata=$limitflow*1024-$alldata;		//本月剩下流量
																}
															}
														} else {			//当月还完全没有上过网
															$bPass=TRUE;
															$remaintime=$limithour*3600;
															$remaindata=$limitflow*1024;
														}
														if ($bPass) {
															if ($remaintime>DateDiff("s",time(),strtotime($str2))) {		//本月剩下时间超过现在到本月结束的时间间隔
																$remaintime=DateDiff("s",time(),strtotime($str2));		//剩下时间就取较小者
															}
														}
													} else {
														$bPass=TRUE;
														$remaintime=DateDiff("s",time(),strtotime("+".strval($length)." month",strtotime($starttime)));		//可上网时间为到包月到期时间为止
														$remaindata=0;
													}
												} else {
													$n=5;
												}
											} elseif ($typeunit==6 || $typeuint==7) {		//计流量
												$rs=mysql_query("select sum(factdata) as alldata from history where userid='".$userid."' and starttime>='".$starttime."'",$db);
												if ($row = mysql_fetch_array($rs)) {
													$alldata=$row["alldata"];		//上网记录的流量是以k为单位
													if (is_null($alldata)) {
														$alldata=0;
													}
													if ($alldata>=$datalength*1024) {		//已经超过购买的流量总数
														$n=5;
													} else {
														$bPass=TRUE;
														$remaindata=$datalength*1024-$alldata;
													}
												} else { 			//还没有上过网
													$bPass=TRUE;
													$remaindata=$datalength*1024;			//都是以m计流量
												}
												mysql_free_result($rs);
											} else {
												$bPass=FALSE;
											}
											if (!$bPass && $n!=3) {		//设置时间已经用完标志。n=3是当月时间限制达到，不等于全部时间用完
												mysql_query("update usertime set overed='y' where userid='".$userid."' and overed='n'",$db);
											}
										}
									}
								} else {
									mysql_free_result($rs);
									$n=11;	//非法的计费类
								}
							}
							else {
								$bPass=FALSE;
								$n=9;			//非法的客户机IP地址
							}
							if ($bPass) {
								//还需要判断用户每天允许上网的时间范围
								$w=intval(strftime("%w"));
								if ($w==0) $w=7;
								$rs = mysql_query("select starttime,endtime from allowtimelist where userid='".$userid."' and (weeknumber=0 or weeknumber=".strval($w).") order by starttime",$db);
								if ($row = mysql_fetch_array($rs)) {		//需要判断是否在每天允许上网的时间范围内
									$bPass=FALSE;
									$datestr=strftime("%Y-%m-%d");
									while ($row) {
										$starttime=$datestr." ".$row["starttime"].":00";
										$endtime=$datestr." ".$row["endtime"].":00";
										if ( DateDiff("s",time(),strtotime($starttime))<=0 and DateDiff("s",time(),strtotime($endtime))>0 ) {		//登录时间大于开始时间，小于结束时间，落在一个允许的时间范围内
											$remaintime=DateDiff("s",time(),strtotime($endtime));	//本次允许的上网时间只持续到该时间范围段结束
											$bPass=TRUE;
											break;
										}
										$row = mysql_fetch_array($rs);
									}
									mysql_free_result($rs);
								}
								else {			//检查其所属组别是否存在每天上网时间段限制
									mysql_free_result($rs);
									if ($gpid>0) {		//存在组别
										$rs = mysql_query("select starttime,endtime from allowtimelist where userid='gp_".strval($gpid)."' and (weeknumber=0 or weeknumber=".strval($w).") order by starttime",$db);
										if ($row = mysql_fetch_array($rs)) {		//组别需要判断是否在每天允许上网的时间范围内
											$bPass=FALSE;
											$datestr=strftime("%Y-%m-%d");
											while ($row) {
												$starttime=$datestr." ".$row["starttime"].":00";
												$endtime=$datestr." ".$row["endtime"].":00";
												if ( DateDiff("s",time(),strtotime($starttime))<=0 and DateDiff("s",time(),strtotime($endtime))>0 ) {		//登录时间大于开始时间，小于结束时间，落在一个允许的时间范围内
													$remaintime=DateDiff("s",time(),strtotime($endtime));	//本次允许的上网时间只持续到该时间范围段结束
													$bPass=TRUE;
													break;
												}
												$row = mysql_fetch_array($rs);
											}
										}
										mysql_free_result($rs);
									}
								}
								if ($bPass) {
									//向登录表中插入当前用户上网新记录
									mysql_query( "insert into login(ipaddr,userid,type,remaintime,remaindata,logintime,maskword,mac) values('".$userIP."','".$userid."','".$usertype."',".strval($remaintime).",".strval($remaindata).",'".$timestr."','n','".$mac."')",$db );
									$tmprs = mysql_query("select ipaddr from contact where ipaddr='".$userIP."'",$db);
									if ( ($tmprow = mysql_fetch_array($tmprs))==FALSE ) {
										mysql_free_result($tmprs);
										mysql_query( "insert into contact(ipaddr,contacttime) values('".$userIP."',".strval(time()).")",$db );
									}
									else {
										mysql_free_result($tmprs);
										mysql_query( "update contact set contacttime=".strval(time())." where ipaddr='".$userIP."'",$db );
									}
									$_SESSION["userid"]=$userid;
									$n=4;				//登录成功
								}
								else {
									$n=8;				//不在每天允许上网的时间登录
								}
							}
						}
						else {
							$n=6;					//已经达到最多在线数限制
						}
					}
					else {
						$n=10;		//欠费
					}
				}
			}
		}
	}
	else {
		$_SESSION["userid"]=$row["userid"];
		mysql_free_result($rs);
		$n=7;					//已经登录
	}
	//登录未成功，显示原因
	$bPass=FALSE;
	if ($n==0) {
		if (!$bCookieAuth) {		//不是COOKIE验证
			echo("<script>alert(\"<操作失败>\\n必须输入登录帐号和密码！\\n请检查。\");</script>");
		}
	}
	elseif ($n==1) {
		if (!$bCookieAuth) {		//不是COOKIE验证
			echo("<script>alert(\"<操作失败>\\n您输入的登录帐号不存在。\\n如果您需要开通上网功能，请咨询服务商。\\n请检查。\");</script>");
		}
	}
	elseif ($n==2) {
		if (!$bCookieAuth) {		//不是COOKIE验证
			echo("<script>alert(\"<操作失败>\\n您输入的登录密码错误！\\n如果您忘记密码，请咨询服务商。\\n请检查。\");</script>");
		}
	}
	elseif ($n==3) {
		echo("<script>alert(\"<操作失败>\\n您在本月(或本天)上网时间(或流量)已经超过限制！\\n如果您不清楚限制情况，请咨询服务商。\\n请检查。\");</script>");
	}
	elseif ($n==4) {
		$bPass=TRUE;
		if ($saveuid=="yes" && $loginname!="" && $password!="") {
			setcookie("SIPUID",$loginname,time()+60*60*24*30,"/",get_cfg_var("SIPWWWHOST"),0);
			setcookie("SIPPWD",md5($loginname.",".$cookiemask.",".$password1),time()+60*60*24*30,"/",get_cfg_var("SIPWWWHOST"),0);
		}
	}
	elseif ($n==5) {
		echo("<script>alert(\"<操作失败>\\n您购买的上网时间或流量已经用完，请续缴费用！\");</script>");
	}
	elseif ($n==6) {
		echo("<script>alert(\"<操作失败>\\n用户ID已经有人在线，且已达到允许同时在线最多人数！\");</script>");
	}
	elseif ($n==7) {
		$bPass=TRUE;
	}
	elseif ($n==8) {
		echo("<script>alert(\"<操作失败>\\n当前时间属于禁止上网的时间范围！请在允许上网的时间段内上网！\");</script>");
	}
	elseif ($n==9) {
		echo("<script>alert(\"<操作失败>\\n您当前使用电脑的IP地址非法！请把电脑IP设置为给您分配的IP地址！\");</script>");
	}
	elseif ($n==10) {
		echo("<script>alert(\"<操作失败>\\n您已经发生欠费，缴清欠费后才能继续上网，请咨询服务商！\");</script>");
	}
	else {
		if (!$bCookieAuth) {		//不是COOKIE验证
			echo("<script>alert(\"<操作失败>\\n您未能通过用户身份验证！\");</script>");
		}
	}
	mysql_close($db);			//关闭数据库连接
	if ($bPass) return 1;	//通过
	else return -1;		//未通过
}

function LogOut()
{
	$db=mysql_pconnect(get_cfg_var("SIPSERVER"),get_cfg_var("SIPUSER"),get_cfg_var("SIPPWD"));
	mysql_select_db(get_cfg_var("SIPDB"),$db);
	$userIP = $_SERVER["REMOTE_ADDR"];			//读取该用户当前使用电脑IP地址
	$rs = mysql_query("select ipaddr from logout where ipaddr='".$userIP."'",$db);		//查找该IP是否已经登出
	if ( ($row = mysql_fetch_array($rs))==FALSE ) {			//还没有登出
		mysql_free_result($rs);
		//向logout表中插入当前用户上网IP地址，以通知监控计费器取消该IP地址连接
		mysql_query( "insert into logout(ipaddr) values('".$userIP."')",$db );
		mysql_query( "delete from contact where ipaddr='".$userIP."'",$db );
	}
	else {
		mysql_free_result($rs);
	}
	mysql_close($db);			//关闭数据库连接
	return FALSE;
}

function GetTimeRange($typeunit,$starttime,&$str1,&$str2)
{
	if ($typeunit==3) {		//以当天为时间范围
		$str1=strftime("%Y-%m-%d 00:00:00");
		$str2=strftime("%Y-%m-%d 23:59:59");
	}
	else {				//月
		$m=DateDiff("m",strtotime($starttime),time());
		if ( intval(date("j"))>=intval(date("j",strtotime($starttime))) ) {		//计算出当月所在的起止时间段
			$tmptime1=strtotime("+".strval($m)." month",strtotime($starttime));
			$tmptime2=strtotime("+".strval($m+1)." month",strtotime($starttime));
		} else {
			$tmptime1=strtotime("+".strval($m-1)." month",strtotime($starttime));
			$tmptime2=strtotime("+".strval($m)." month",strtotime($starttime));
		}										//计算出当月所在的起止时间段
		$str1=strftime("%Y-%m-%d %H:%M:%S",$tmptime1);
		$str2=strftime("%Y-%m-%d %H:%M:%S",$tmptime2);
	}
	return 1;
}

function DateDiff($opertype,$starttime,$endtime)
{
	if ($starttime>=$endtime) return 0;	//starttime在endtime之后，返回0
	$n=0;
	if ($opertype=="d") {
		if ( strftime("%Y-%m-%d",$starttime)==strftime("%Y-%m-%d",$endtime) ) return 0;	//同一天
		while (TRUE) {
			$n++;
			if ( strftime("%Y-%m-%d",strtotime("+".strval($n)." day",$starttime))==strftime("%Y-%m-%d",$endtime) ) {
				//年月日部分已经相同
				break;
			}
		}
	}
	elseif ($opertype=="m") {
		if ( strftime("%Y-%m",$starttime)==strftime("%Y-%m",$endtime) ) return 0;	//同一月
		while (TRUE) {
			$n++;
			if ( strftime("%Y-%m",strtotime("+".strval($n)." month",$starttime))==strftime("%Y-%m",$endtime) ) {
				//年月部分已经相同
				break;
			}
		}
	}
	elseif ($opertype=="yyyy") {
		if ( strftime("%Y",$starttime)==strftime("%Y",$endtime) ) return 0;	//同一年
		while (TRUE) {
			$n++;
			if ( strftime("%Y",strtotime("+".strval($n)." year",$starttime))==strftime("%Y",$endtime) ) {
				//年部分已经相同
				break;
			}
		}
	}
	elseif ($opertype=="s") {
		$n=$endtime-$starttime;
	}
	else {
		$n=0;
	}
	return $n;
}
?>

