#!/usr/local/bin/perl

#use warnings;
#use diagnostics;




$cgiurl="/cgi-bin/ticket.cgi"; 
$serverpath="/home/comoman/httpd/htdocs";
$datapath="$serverpath/../database";

$uploadpath="$serverpath/../upload";

$vdata = "$serverpath/tvdata/setup.conf";
$filehead ="$datapath/tdata/";
$pagehead="$serverpath/tpage/";
$mailhead="$serverpath/mailpage/";
$backuphead="$serverpath/tbackup/";
#$time_miss=8;
$expDate = "Sunday, 31-Dec-2000 00:00:00 GMT";
$domain = ".como.com.tw";
$path = "/cgi-bin/"; 

##################################################
#read Var From Disk
#################################################

open (SETMYVAR,"$vdata");
while (<SETMYVAR>)
    {
	$_ =~ s/\r//g;	
    $_ =~ s/^\s+//g;
    $_ =~ s/\s+$//g;
	($myvarname,$mynamevalue) = split (/\=/, $_);
	$$myvarname="$mynamevalue";
	}
close (SETMYVAR);
##################################################
#Page Setup
################################################## Member DBM
$tcityidname      ="TICKETCITYIDNAME";		#城市簡稱-->城市中文全名
$tcitystate		  ="TICKETCITYSTATE";		#城市簡稱-->州別與英文全名中文全名
$tcitybelong      ="TICKETCITYBELONG";		#城市簡稱-->城市規屬國名
$tairlineidname	  ="TICKETAIRLINE1";		#航空公司代號與中文名稱
$tairlinestr	  ="TICKETAIRLINE2";		#航空公司代號與直航否

$tflight_to		  ="TICKETFTO";				#班機代號與目的地
$tflight_co		  ="TICKETFCO";				#班機代號與航空公司
$tflight_no		  ="TICKETFNO";				#班機代號與班次代號
$tflight_class	  ="TICKETFCLASS";			#班機代號與艙等
$tflight_price	  ="TICKETFPRICE";			#班機代號與價格
$tflight_date	  ="TICKETFDATE";			#班機代號與日期
$tflight_stime	  ="TICKETFSTIME";			#班機代號與起飛時間
$tflight_middle	  ="TICKETFMIDDLE";			#班機代號與中途情形
$tflight_eta	  ="TICKETFETA";			#班機代號與抵達時間
$tflight_memo	  ="TICKETFMEMO";			#班機代號與備註
$tflight_more	  ="TICKETFMORE";			#班機代號與延伸
$tchinafile		  ="TICKETCHINA";			#大陸聯程
$tbacktotaipei	  ="TBACKT";				#回航至台北
$tbacktotaipei2	  ="TBACKT2";				#回航至台北2
$tbacktotaipei3	  ="TBACKT3";				#台北離開之中繼點航單

$tgsman				="TGSMAN";				#團體分享票人數檔
$tgsprice			="TGSPRICE";			#團體分享票價格檔
$tgsmemo			="TGSMEMO";				#團體分享票備註檔
$tgsbelong			="TGSBELONG";			#團體分享票案號-->機票案號



$torder_belong	  ="TORDERBELONG";			#訂單號-->會員編號
$torder_no		  ="TORDERNO";				#訂單號-->資料編號
$torder_date	  ="TORDERDATE";			#訂單號-->訂單日期
$torder_amout	  ="TORDERAMOUT";			#訂單號-->數量
$torder_cash	  ="TORDERCASH";			#訂單號-->總金額
$torder_passname  ="TORDERPNAME";			#訂單號-->旅客中英文姓名(共10格)
$torder_outback	  ="TORDEROUTBACK";			#訂單號-->出發與回程時間(共4格)
$torder_child	  ="TORDERCHILD";			#訂單號-->小孩備註
$torder_visa	  ="TORDERVISA";			#訂單號-->簽證備註
$torder_hotel	  ="TORDERHOTEL";			#訂單號-->訂房備註
$torder_gif		  ="TORDERGIF";				#訂單號-->贈品
$torder_state	  ="TORDERSTATE";			#訂單號-->贈品
$torder_type	  ="TORDERTYPE";			#訂單號-->訂單類別--(FIT 或 GROUP)
$torder_num_no	  ="TORDERNUMNO";			#訂單號-->每日流水號
$torder_food	  ="TORDERFOOD";			#訂單號-->餐
$torder_postman	  ="TORDERPOSTMAN";			#訂單號-->取件
$torder_myway	  ="TORDERMYWAY";			#訂單號-->單雙程
$torder_myclass	  ="TORDERMYCLASS";			#訂單號-->艙等

$ttaipei			="TTAIPEI";				#目的地-->加成
$tkaohsiung			="TKAOHSIUNG";			#目的地-->加成
$tmainland			="TMAINLAND";			#目的地-->加成

$sporder_belong		="SPORDERBELONG";			#訂單號-->會員編號
$sporder_no			="SPORDERNO";				#訂單號-->資料編號
$sporder_date		="SPORDERDATE";				#訂單號-->訂單日期
$sporder_amout		="SPORDERAMOUT";			#訂單號-->數量
$sporder_cash		="SPORDERCASH";				#訂單號-->總金額
$sporder_passname	="SPORDERPNAME";			#訂單號-->旅客中英文姓名(共10格)
$sporder_gif    	="SPORDERGIF";				#訂單號-->gif
$sporder_flyday    	="SPORDERFLYDAY";			#訂單號-->出發日期


$packageorder_belong	="PORDERBELONG";			#訂單號-->會員編號
$packageorder_no		="PORDERNO";				#訂單號-->資料編號
$packageorder_date		="PORDERDATE";				#訂單號-->訂單日期
$packageorder_amout		="PORDERAMOUT";			#訂單號-->數量
$packageorder_passname	="PORDERPNAME";			#訂單號-->旅客中英文姓名(共10格)
$packageorder_gif    	="PORDERGIF";				#訂單號-->gif
$packageorder_remark   	="PORDERREMARK";				#訂單號-->remark



$tspprice		  ="TSPPRICE";				#key 特惠價
$tsptitle		  ="TSPTITLE";				#key 標題
$tsptime		  ="TSPTIME";				#key 結止時間

$tcashier		  ="TCASHIER";				#key 結帳檔案
$csflow			  ="CSFLOW";				#流水號

$inside_ticket		  ="INSIDE_TICKET";		#國內機票檔案

$lastlogindatefile  ="LASTLOGINDATE";		#代號-->最後使用時間----------
$lastloginipfile    ="LASTLOGINIP";			#代號-->最後使用IP------------

##################################################
#Page Setup
##################################################
$errorpage					="error.htm"; 
$succpage					="succpage.htm"; 
$newpage					="mlogin.htm";
$userfirst					="userfirst.htm";
$doagainpage				="doagain.htm";
$joinsuccpage				="joinsucc.htm";
$profilepage				="profile.htm";
$profile2page				="profile2.htm";
$loginpage					="login.htm";
$t001page					="t001.htm";
$modifypage					="tmodify.htm";
$tmasterpasspage			="tmpage.htm";
$tm002page					="tm002.htm";
$tm003page					="tm003.htm";
$tm004page					="tm004.htm";
$tm003bapage				="tm003ba.htm";
$tm003bbpage				="tm003bb.htm";
$tm003bcpage				="tm003bc.htm";

$tm003capage				="tm003ca.htm";
$tm003cbpage				="tm003cb.htm";
$tm003ccpage				="tm003cc.htm";
$cpassok					="cpassok.htm";
$tfirstpage					="tfirst.htm";
$gfirstpage					="gfirst.htm";
$regpage					="fit1.htm";
$group1page					="group1.htm";
$group3page					="group3.htm";
$sp001page					="sp1.htm";
$sp002page					="sp2.htm";
$sp003page					="sp3.htm";
$sp004page					="sp4.htm";
$sp006page					="sp6.htm";
$sp007page					="sp7.htm";
$sp000page					="sp0.htm";
$splinkpage					="sp.htm";
$sp5page					="sp5.htm";
$porderpage					="porder.htm";
$error1page					="error1.htm";
$statepage					="state.htm";
$setuptpage					="setupt.htm";
$setupkpage					="setupk.htm";
$setupmpage					="setupm.htm";
$ccpage						="cc.htm";
$cc1page					="ccmore.htm";
$dailypage					="daily.htm";
$torderform					="torderform.htm";   #BY 蘇俊合 團體行程
$regokpage					="tregok.htm";
$rporder                                        ="rporder.htm";     #by CHOCHO 900927
$comospecial_order                              ="comospecial_order.htm";     #by CHOCHO 901205

##################################################
#Main Program
##################################################
print "Content-type: text/html\n\n";

#### for debug by cho at 20210212
#if ("test" eq "test")	{print "<h1>here I call cgi</h1>\n";  do './qa_form.cgi'; &regok;}
#### End of debug by cho at 20210212

@querys = split(/&/, $ENV{'QUERY_STRING'});
foreach (@querys) {($name,$value)=split(/=/, $_); &setv($name,$value);}

read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach (@pairs) {($name,$value)=split(/=/, $_); &setv($name,$value);}

$V{'id'}         =~ s/\n|∥|"|<|>|\&|;| |\?|\.|\|//g;
$V{'password'}   =~ s/\n|∥|"|<|>|\&|;| |\?|\.|\|//g;
$V{'oldpassword'}=~ s/\n|∥|"|<|>|\&|;| |\?|\.|\|//g;

$V{'email'}="" if ($V{'email'} !~ /(.*)\@(.*)\.(.*)/);
$V{'newemail'}="" if ($V{'newemail'} !~ /(.*)\@(.*)\.(.*)/);
$V{'youremail'}="" if ($V{'youremail'} !~ /(.*)\@(.*)\.(.*)/);

$ip=$ENV{'REMOTE_ADDR'};

#($secn,$minn,$hourn,$dayn,$monn,$yearn,$weekn,$yeardayn,$isdst) = localtime(time+(3600*$time_miss));    #SERVER在國外之時間修正
($secn,$minn,$hourn,$dayn,$monn,$yearn,$weekn,$yeardayn,$isdst) = localtime(time);                       #SERVER在國內

$monn=$monn+1;
if ($monn<10)  {$monn="0$monn";}
if ($dayn<10)  {$dayn="0$dayn";}
if ($hourn<10) {$hourn="0$hourn";}
if ($minn<10)  {$minn="0$minn";}
if ($secn<10)  {$secn="0$secn";}

#y2k correction from here
##################################################
$yearn+=1900;
#end of y2k correction
##################################################

$timen="$yearn/$monn/$dayn($hourn\:$minn\:$secn)";
$timeo="$yearn/$monn/$dayn($hourn\:$minn\:$secn)";
$timew="$yearn$monn$dayn";
$timeno   =$timen;
$timeno   =~ s/\/|\(|\)|\://g;
$chktime=substr($timeno,0,10);
$ticketchktime=substr($timeno,0,8);
$chktimemore=substr($timeno,0,8);
################################################################
# Count Limit Days
################################################################

if ($V{'name'}) {
if (length($V{'name'})>20)			{&doagain("姓名長度不得超過 10 個中文字!");} 
if (length($V{'name'})<2)			{&doagain("姓名長度不得小於 1 個中文字!");}
}
if ($V{'id'}) {
if (length($V{'id'})>20)			{&doagain("使用代號長度不得超過 20 個字!");} 
if (length($V{'id'})<=1)			{&doagain("使用代號長度不得小於 2 個字!");}
}
if ($V{'password'}) {
if (length($V{'password'})>10)		{&doagain("密碼長度不得超過10!");} 
if (length($V{'password'})<2)		{&doagain("密碼長度不得小於2!");} 
}
if ($V{'email'}) {
if ($V{'email'}!~m/\@/)				{&doagain("錯誤的郵件地址 !");} 
if ($V{'email'}!~m/\./)				{&doagain("錯誤的郵件地址 !");} 
}
if ($V{'newemail'}) {
if ($V{'newemail'}!~m/\@/)			{&doagain("錯誤的郵件地址 !");} 
if ($V{'newemail'}!~m/\./)			{&doagain("錯誤的郵件地址 !");} 
}
##################################################
#General CGI Code
##################################################


	if ($V{'ac'} eq "master")				    {do 'masterdis.cgi';				&masterdis;}
	elsif ($V{'ac'} eq "t02")				    {do 'masterdis2.cgi';				&masterdis;}
	elsif ($V{'ac'} eq "start")				    {do 'slist.cgi';					&slist;}
	elsif ($V{'ac'} eq "start2")			    {do 'slist2.cgi';					&slist;}
	elsif ($V{'ac'} eq "show")				    {do 'tlist.cgi';					&tlist;}
	elsif ($V{'ac'} eq "insideshow")		    {do 'insidetlist.cgi';				&tlist;}
	elsif ($V{'ac'} eq "insidereg")				{do 'atregi.cgi';					&reg;}
	elsif ($V{'ac'} eq "insideref")				{do 'atrefi.cgi';					&reg;}

	#elsif ($V{'ac'} eq "chinashow")				{do 'chinatlist.cgi';				&tlist;}
        #elsif ($V{'ac'} eq "chinashow")				{do 'china000.cgi';				&redir;}
	elsif ($V{'ac'} eq "chinashow")				{do 'chinatlist.cgi';				&tlist;}
	elsif ($V{'ac'} eq "show2")				    {do 'tlist2.cgi';					&tlist;}
	elsif ($V{'ac'} eq "modify")			    {do 'modify.cgi';					&modify;}
	elsif ($V{'ac'} eq "modify2")			    {do 'modify2.cgi';					&modify;}
	elsif ($V{'ac'} eq "tm002")				    {do 'tm002.cgi';					&tm002;}
	elsif ($V{'ac'} eq "tm0022")				{do 'tm0022.cgi';					&tm0022;}
	elsif ($V{'ac'} eq "tm003")				    {do 'tm003.cgi';					&tm003;}
	elsif ($V{'ac'} eq "tm0032")				{do 'tm0032.cgi';					&tm0032;}
	elsif ($V{'ac'} eq "tm004")					{do 'tm004.cgi';					&tm004;}
	elsif ($V{'ac'} eq "tm0041")				{do 'tm0041.cgi';					&tm0041;}
	elsif ($V{'ac'} eq "tm0041a")				{do 'tm0041a.cgi';					&tm0041a;}
	elsif ($V{'ac'} eq "tm003b")				{do 'tm003b.cgi';					&tm003b;}
	elsif ($V{'ac'} eq "tm003ba")				{do 'tm003ba.cgi';					&tm003ba;}
	elsif ($V{'ac'} eq "tm003bb")				{do 'tm003bb.cgi';					&tm003bb;}
	elsif ($V{'ac'} eq "tm003bc")				{do 'tm003bc.cgi';					&tm003bc;}

	elsif ($V{'ac'} eq "tm003c")				{do 'tm003c.cgi';					&tm003c;}
	elsif ($V{'ac'} eq "tm003ca")				{do 'tm003ca.cgi';					&tm003ca;}
	elsif ($V{'ac'} eq "tm003cb")				{do 'tm003cb.cgi';					&tm003cb;}
	elsif ($V{'ac'} eq "tm003cc")				{do 'tm003cc.cgi';					&tm003cc;}
	elsif ($V{'ac'} eq "tm003cc1")				{do 'tm003cc1.cgi';					&tm003cc1;}
	elsif ($V{'ac'} eq "tdel")					{do 'tm003cc111.cgi';				&tm003cc111;}
	elsif ($V{'ac'} eq "mc")					{do 'tmc.cgi';						&mc;}
	elsif ($V{'ac'} eq "cpass")					{do 'tcpass.cgi';					&cpass;}
	elsif ($V{'ac'} eq "test")				    {do 'testlistnam.pl';				&slist;}
	elsif ($V{'ac'} eq "")					    {do 'ticketstand1.cgi';				&stand;}
	elsif ($V{'ac'} eq "reg")				    {do 'atreg.cgi';						&reg;}
	elsif ($V{'ac'} eq "group1")			    {do 'group1.cgi';					&group1;}
	elsif ($V{'ac'} eq "group2")			    {do 'group2.cgi';					&group2;}
	elsif ($V{'ac'} eq "group3")			    {do 'group3.cgi';					&group3;}
	elsif ($V{'ac'} eq "group4")			    {do 'group4.cgi';					&group4;}
	elsif ($V{'ac'} eq "group5")			    {do 'group5.cgi';					&group5;}	
#	elsif ($V{'ac'} eq "group")					{do 'group000.cgi';					&redir;}
	elsif ($V{'ac'} eq "group")					{do 'group0.cgi';					&stand;}
	elsif ($V{'ac'} eq "group0")				{do 'group.cgi';					&group;}
	elsif ($V{'ac'} eq "groupman")				{do 'groupman.cgi';					&group;}
	elsif ($V{'ac'} eq "groupman2")				{do 'groupman2.cgi';				&group;}
	elsif ($V{'ac'} eq "groupman3")				{do 'groupman3.cgi';				&group;}
	elsif ($V{'ac'} eq "sp")					{do 'sp.cgi';						&sp;}
	elsif ($V{'ac'} eq "sp2")					{do 'sp2.cgi';						&sp2;}
	elsif ($V{'ac'} eq "spm")					{do 'spm.cgi';						&spm;}
	elsif ($V{'ac'} eq "spm2")					{do 'spm2.cgi';						&spm2;}
	elsif ($V{'ac'} eq "spm3")					{do 'spm3.cgi';						&spm3;}
	elsif ($V{'ac'} eq "spd")					{do 'spd.cgi';						&spd;}
	elsif ($V{'ac'} eq "spd2")					{do 'spd2.cgi';						&spd2;}
	elsif ($V{'ac'} eq "sprate")				{do 'sprate.cgi';					&sprate;}
	#elsif ($V{'ac'} eq "sprate")				{do 'ticketstand1.cgi';					&stand;}
	elsif ($V{'ac'} eq "sprateshow")			{do 'sprate.cgi';				&sprate;}
#	elsif ($V{'ac'} eq "sprateshow")			{do 'sprateshow.cgi';				&sprate;}
	elsif ($V{'ac'} eq "sporder")				{do 'sporder.cgi';					&reg;}
	elsif ($V{'ac'} eq "report1")				{do 'report1.cgi';					&report;}
	elsif ($V{'ac'} eq "report2")				{do 'report2.cgi';					&report;}
	elsif ($V{'ac'} eq "report3")				{do 'report3.cgi';					&report;}
	elsif ($V{'ac'} eq "package")				{do 'package.cgi';					&package;}
	elsif ($V{'ac'} eq "packagelink")			{do 'packagelink.cgi';					&package;}
	elsif ($V{'ac'} eq "package2")				{do 'package2.cgi';					&package2;}
	elsif ($V{'ac'} eq "packageorder")			{do 'packageorder.cgi';				&reg;}
	elsif ($V{'ac'} eq "chkstate")				{do 'chkstate.cgi';					&chk;}
	elsif ($V{'ac'} eq "ref")					{do 'atref.cgi';						&reg;}
	elsif ($V{'ac'} eq "setupt")				{do 'setupt.cgi';					&setup;}
	elsif ($V{'ac'} eq "setupt2")				{do 'setupt2.cgi';					&setup;}

	elsif ($V{'ac'} eq "setupk")				{do 'setupk.cgi';					&setup;}
	elsif ($V{'ac'} eq "setupk2")				{do 'setupk2.cgi';					&setup;}

	elsif ($V{'ac'} eq "setupm")				{do 'setupm.cgi';					&setup;}
	elsif ($V{'ac'} eq "setupm2")				{do 'setupm2.cgi';					&setup;}
	elsif ($V{'ac'} eq "cc")				    {do 'tcc.cgi';					    &cc;}
	elsif ($V{'ac'} eq "china1")			    {do 'china1.cgi';					&china;}
	elsif ($V{'ac'} eq "china2")			    {do 'china2.cgi';					&china;}
	elsif ($V{'ac'} eq "lto")					{do 'listtorder.cgi';				&list;}
	elsif ($V{'ac'} eq "cashier")				{do 'cashier.cgi';					&cs;}
	elsif ($V{'ac'} eq "cashier1")				{do 'cashier1.cgi';					&cs;}
	elsif ($V{'ac'} eq "gtest")					{do 'gtest.cgi';					&gtest;}
	elsif ($V{'ac'} eq "daily")					{do 'daily1.cgi';					&daily;}
	elsif ($V{'ac'} eq "daily2")				{do 'daily2.cgi';					&daily;}
	elsif ($V{'ac'} eq "daily3")				{do 'daily3.cgi';					&daily;}
	elsif ($V{'ac'} eq "ticketuu")				{do 'ticketuu.cgi';					&stand;}
	elsif ($V{'ac'} eq "tback")					{do 'tback.cgi';					&stand;}
	elsif ($V{'ac'} eq "tback2")				{do 'tback2.cgi';					&stand;}
	elsif ($V{'ac'} eq "tback3")				{do 'tback3.cgi';					&stand;}
	elsif ($V{'ac'} eq "syy")					{do 'yy.cgi';						}
	elsif ($V{'ac'} eq "grouplist")					{do 'grouplist.cgi';						&grouplist;}
	elsif ($V{'ac'} eq "grouporder")			{do 'grouporder.cgi';				&order;}
	elsif ($V{'ac'} eq "groupreg")			        {do 'grouporder.cgi';					&regok;}

        #以下由 CHOCHO 新增於 900927 for 鐵路周遊券
	elsif ($V{'ac'} eq "rp_order")			        {do 'rp_order.cgi';					&rp_order;}  

        #以下由 CHOCHO 新增於 901205 for 科摩特廉
	elsif ($V{'ac'} eq "comospecial_order")			        {do 'comospecial_order.cgi';                        &comospecial_order;}

        #以下由 CHOCHO 新增於 970625 for 科摩特廉
	elsif ($V{'ac'} eq "groupticketreg")			        {do 'groupticket_order.cgi';                        &regok;}

        #以下由 CHOCHO 新增於 980623 for 會員註冊
	elsif ($V{'ac'} eq "memberreg")			        {do 'member_reg.cgi';                        &regok;}

        #以下由 CHOCHO 新增於 981116 for 線上需求單
	elsif ($V{'ac'} eq "qa_form")			        {do './qa_form.cgi';                        &regok;}

        #以下由 CHOCHO 新增於 990819 for 自由行
	elsif ($V{'ac'} eq "package_order")			    {do './package_order.cgi';                        &regok;}



	exit 0;

##################################################
#Read Input
##################################################

sub setv {
$_[1]=~ tr/+/ /;
$_[1]=~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$_[1]=~ s/<!--(.|\n)*-->//g;
if ($allow_html != 1) {
   $_[1] =~ s/<([^>]|\n)*>//g;
   $_[1] =~ s/<//g;
}
$_[1]=~ s/\n|∥|\'//g;
if ($V{$_[0]}) {$V{$_[0]}="$V{$_[0]}§$_[1]";} else {$V{$_[0]}=$_[1];}
}



sub homelinks{
  if ($V{'aguser'}) {$tempage1="hall".'_link.htm';
	$outputpage1="$pagehead".'aguser/all/'."$tempage1";  
	@linkpage=&readtxtfile("$outputpage1");
        foreach (@linkpage) {
        $_ =~ s/\$aguser/$aguser/g;	
        $_ =~ s/\$htmlfoot/$htmlfoot/g;
        
        print;
	}
  }
}

sub footdis{
$footer="/home/comoman/httpd/htdocs/page/footer.txt";
open(FOOTER, "$footer") or die "can't open : $!";
local($/) = undef;
$foodis = <FOOTER>;
close FOOTER;
}

sub newsdis{
$news="/home/comoman/httpd/htdocs/page/news.txt";
open(N_EWS, "$news") or die "can't open : $!";
local($/) = undef;
$n_ews = <N_EWS>;
$n_ews =~ s/\r/<br>/g;
$n_ews =~ s/\n/<br>/g;

close N_EWS;
}

##################################################
#Get Cookie
##################################################
sub getCookies {
        # cookies are seperated by a semicolon and a space, this will split
        # them and return a hash of cookies
        local(@rawCookies) = split (/; /,$ENV{'HTTP_COOKIE'});
        local(%cookies);

        foreach(@rawCookies){
        if(/mycomo/i){
		#if(/youemail/i){
            ($key, $val) = split (/=/,$_);
            $cookies{$key} = $val;
            #$cookies{myemail} = $myval;
      ($id,$ltime,$o1,$o2,$o3,$o4,$s) = split (/\:/, $val);
}
        } 

        return %cookies; 
} 



##################################################
#Get Cookie
##################################################
sub setCookie {
        # end a set-cookie header with the word secure and the cookie will only
        # be sent through secure connections
        local($name, $value, $expiration, $path, $domain, $secure) = @_;

        print "Set-Cookie: ";
        print ($name, "=", $value, "; expires=", $expiration,
                "; path=", $path, "; domain=", $domain, "; ", $secure, "\n");
}




##################################################
#Readtxtfile
##################################################
sub readtxtfile {
open(READTXTFILE,"$_[0]");
@readtxtfile=<READTXTFILE>;
close(READTXTFILE);
return @readtxtfile;
}
##################################################
#Readtxtline
##################################################
sub readtxtline {
open(READTXTFILE,"$_[0]");
$readtxtline=<READTXTFILE>;
close(READTXTFILE);
return $readtxtline;
}
##################################################
#Readdbmfile
##################################################
sub readdbmfile {
dbmopen(%READDBMFILE,$_[0],0666);
%TEMPDBM=%READDBMFILE;
dbmclose(%READDBMFILE);
return %TEMPDBM;
}
##################################################
#Readdbmrecord
##################################################
sub readdbmrecord {
$TEMPRECORD="";
dbmopen(%READDBMFILE,$_[0],0666);
if ($READDBMFILE{$_[1]}) {
   $TEMPRECORD=$READDBMFILE{$_[1]};
}
dbmclose(%READDBMFILE);
return $TEMPRECORD;
}
##################################################
#Writedbmrecord
##################################################
sub writedbmrecord {
dbmopen(%WRITEDBMFILE,$_[0],0666);
$WRITEDBMFILE{$_[1]}=$_[2];
dbmclose(%WRITEDBMFILE);
}
##################################################
#Deletedbmrecord
##################################################
sub deletedbmrecord {
dbmopen(%DELETEDBMFILE,$_[0],0666);
delete $DELETEDBMFILE{$_[1]};
dbmclose(%DELETEDBMFILE);
}
##################################################
#Checkempty
##################################################
sub checkempty {
local($chkval)=$_[0];
$chkval =~ s/ |<br>|\n//g;
&error($_[1]) if ($chkval eq "");
}

##################################################
#Error
##################################################
sub error {
&adv;
&footdis;
&newsdis;
@errorpage=&readtxtfile("$pagehead$errorpage");
foreach (@errorpage) {
   $_ =~ s/\$errormessage/$_[0]/g;
   $_ =~ s/\$xip/$ip/g;
   $_ =~ s/\$cgiurl/$cgiurl/g;
   $_ =~ s/\$bannerhere/$bannerhere/g;
   $_ =~ s/\$foodis/$foodis/g;
   $_ =~ s/\$n_ews/$n_ews/g;
   $_ =~ s/\$id/$V{'id'}/g;
   $_ =~ s/\$name/$V{'name'}/g;
   $_ =~ s/\$email/$V{'email'}/g;
   $_ =~ s/\$password/$password/g;
   print;
   }
exit 0;
}

##################################################
#Error
##################################################
sub error1 {
if (!$bannerhere) {&adv;}

&footdis;
&newsdis;
@errorpage=&readtxtfile("$pagehead$error1page");
foreach (@errorpage) {
   $_ =~ s/\$errormessage/$_[0]/g;
   $_ =~ s/\$xip/$ip/g;
   $_ =~ s/\$cgiurl/$cgiurl/g;
   $_ =~ s/\$bannerhere/$bannerhere/g;
   $_ =~ s/\$cgiurl/$cgiurl/g;
   $_ =~ s/\$key/$V{'key'}/g;
   $_ =~ s/\$foodis/$foodis/g;
   $_ =~ s/\$n_ews/$n_ews/g;
  
   print;
   }
exit;
}


sub doagain {
&adv;
&footdis;
&newsdis;
@errorpage=&readtxtfile("$pagehead$doagainpage");
foreach (@errorpage) {
   $_ =~ s/\$errormessage/$_[0]/g;
   $_ =~ s/\$id/$V{'id'}/g;
   $_ =~ s/\$name/$V{'name'}/g;
   $_ =~ s/\$email/$V{'email'}/g;
   $_ =~ s/\$foodis/$foodis/g;
   $_ =~ s/\$n_ews/$n_ews/g;
   $_ =~ s/\$bannerhere/$bannerhere/g;


   print;
   }
exit 0;
}
##################################################
#limitcount
##################################################
sub limitcount{
if ($chkdep eq "v") {$timevar=$viplimitdays;}
if ($chkdep eq "d") {$timevar=$_[0];}

($secn,$minn,$hourn,$dayn,$monn,$yearn,$weekn,$yeardayn,$isdst) = localtime(time+(86400*$timevar)+(3600*$time_miss));
$monn=$monn+1;
if ($monn<10)  {$monn="0$monn";}
if ($dayn<10)  {$dayn="0$dayn";}
if ($hourn<10) {$hourn="0$hourn";}
if ($minn<10)  {$minn="0$minn";}
if ($secn<10)  {$secn="0$secn";}

#y2k correction from here
##################################################
$oldsign=19;
if (($yearn != 99) && ($yearn > 99)) {
$yearntest=$yearn-100;
$yearn=2000+$yearntest;
}
if ($yearn == 99) {
$yearn="$oldsign$yearn";
}
#end of y2k correction
##################################################

$timen="$yearn/$monn/$dayn($hourn\:$minn\:$secn)";
$timew="$yearn$monn$dayn";
$timeno   =$timen;
$timeno   =~ s/\/|\(|\)|\://g;
$limittime=substr($timeno,0,10);
}
##################################################
#Count Now
##################################################
sub count_now{
($secn,$minn,$hourn,$dayn,$monn,$yearn,$weekn,$yeardayn,$isdst) = localtime(time);                       #SERVER在國內
$monn=$monn+1;
$sehour=$hourn;
$semin=$minn;
if ($monn<10)  {$monn="0$monn";}
if ($dayn<10)  {$dayn="0$dayn";}
if ($hourn<10) {$hourn="0$hourn";}
if ($minn<10)  {$minn="0$minn";}
if ($secn<10)  {$secn="0$secn";}

#y2k correction from here
##################################################
$oldsign=19;
if (($yearn != 99) && ($yearn > 99)) {
$yearntest=$yearn-100;
$yearn=2000+$yearntest;
}
if ($yearn == 99) {
$yearn="$oldsign$yearn";
}
#end of y2k correction
##################################################
$timen="$yearn/$monn/$dayn($hourn\:$minn\:$secn)";
$timew="$yearn$monn$dayn";
$starttime=$sehour;
$starttime*=60;
$starttime+=$semin;
$sessiontime=$starttime;
$sessiontime+=2;
$timeno   =$timen;
$timeno   =~ s/\/|\(|\)|\://g;
$timenow=substr($timeno,0,10);
$myuutime=substr($timeno,0,12);

}

#####################################
# get my session number
#####################################
sub getmyno{
($secn,$minn,$hourn,$dayn,$monn,$yearn,$weekn,$yeardayn,$isdst) = localtime(time);                       #SERVER在國內
$monn=$monn+1;
$sehour=$hourn;
$semin=$minn;
if ($monn<10)  {$monn="0$monn";}
if ($dayn<10)  {$dayn="0$dayn";}
if ($hourn<10) {$hourn="0$hourn";}
if ($minn<10)  {$minn="0$minn";}
if ($secn<10)  {$secn="0$secn";}

#y2k correction from here
##################################################
$oldsign=19;
if (($yearn != 99) && ($yearn > 99)) {
$yearntest=$yearn-100;
$yearn=2000+$yearntest;
}
if ($yearn == 99) {
$yearn="$oldsign$yearn";
}
#end of y2k correction
##################################################
$timen="$yearn/$monn/$dayn($hourn\:$minn\:$secn)";
$timew="$yearn$monn$dayn";
$myno   =$timen;
$myno   =~ s/\/|\(|\)|\://g;
$s1=substr($myno,0,12);
#$s1=$sehour;
#$s1*=60;
#$s1+=$semin;
$s2=$s1;
$s2+=2;

}
##################################################
#Find What Member Effect
##################################################
sub find_what_effect{
%ORDERNUM=&readdbmfile("$filehead$orderidtoid");
%DEP=&readdbmfile("$filehead$iddepfile");
%ORDERCOM=&readdbmfile("$filehead$ordercomment");
%ORDEREFF=&readdbmfile("$filehead$ordereff");
%ORDERLIM=&readdbmfile("$filehead$orderlimit");
%ORDERPO=&readdbmfile("$filehead$orderpoint");

@orderid=keys %ORDERNUM;
@orderid=sort @orderid;

$V{'searchword'}="$V{'id'}";
if ($V{'searchword'}) {
   @temp=();
   foreach (@orderid) {
   if ((&searchwordfororder($_)==1)) {
   push(@temp,$_);
   }
   }
   @orderid=@temp;
}
################## BD Counting ##########################################
if ($DEP{$V{'id'}} eq "d") {
&count_now;
foreach  (@orderid) {

if (($timenow > $ORDERLIM{$_}) && ($ORDEREFF{$_} ne 'ff')) {
&writedbmrecord("$filehead$oldorder"				,$_,"$ORDERLIM{$_}");
&deletedbmrecord("$filehead$orderidtoid"			,$_);
&deletedbmrecord("$filehead$ordereff"				,$_);
}
if (($timenow <= $ORDERLIM{$_}) && ($ORDEREFF{$_} ne 'ff')) {
push (@mytemp,$_);
$chkstill=1;
}
}
if ($chkstill != 1) {
&deletedbmrecord("$filehead$idlimit"			,$V{'id'});
&writedbmrecord("$filehead$idlimit"				,$V{'id'},"0");	
&deletedbmrecord("$filehead$idcpass"			,$V{'id'});
}	
}
#################### END Of BD #############################################
################## AV Counting ##########################################
if ($DEP{$V{'id'}} eq "v") {

foreach  (@orderid) {

if (($ORDERPO{$_} <= $vip_per_min)) {
&writedbmrecord("$filehead$oldorder"				,$_,"{$V{'id'}");
&deletedbmrecord("$filehead$orderidtoid"			,$_);
&deletedbmrecord("$filehead$ordereff"				,$_);
}
if ($ORDERPO{$_} > $vip_per_min) {
push (@mytemp,$_);
$chkstill=1;
}
}
if ($chkstill != 1) {
&deletedbmrecord("$filehead$idlimit"			,$V{'id'});
&writedbmrecord("$filehead$idlimit"				,$V{'id'},0);	
&deletedbmrecord("$filehead$idcpass"			,$V{'id'});
}	
}
#################### END Of AV #############################################
if (@mytemp) {@orderid=@mytemp;}

@temp1=();
foreach $orderid(@orderid) {
if ($ORDEREFF{$orderid} eq "vv") {
push(@temp1,$ORDERCOM{$orderid});
push(@temp2,$ORDERPO{$orderid});
$temppoint=$temp2[0];
}
}

@tempworkid=();
foreach  (@temp1) {
@workid=split (/\./,$_);
push (@tempworkid,@workid);
}
@realwork=();
$yy="@realwork";
foreach $tempworkid(@tempworkid) {
if ($yy!~m/\b$tempworkid\b/i) {
push (@realwork,$tempworkid);
$yy="@realwork";
}
}
@realwork=sort @realwork;
}
##################################################
#find what eff again
##################################################



#################################################
# Dispoint 
################################################



##################################################
#Succ
##################################################
sub succ {
@succpage=&readtxtfile("$pagehead$succpage");
foreach (@succpage) {
   $_ =~ s/\$succmessage/$_[0]/g;
   $_ =~ s/\$message/$message/g;
   $_ =~ s/\$cgiurl/$cgiurl/g;
   $_ =~ s/\$xid/$xid/g;
   $_ =~ s/\$xpass/$xpass/g;
   $_ =~ s/\$manager/$manager/g;
   $_ =~ s/\$name/$V{'name'}/g;
   $_ =~ s/\$score/$V{'score'}/g;
   $_ =~ s/\$dep/$V{'dep'}/g;
   $_ =~ s/\$email/$V{'email'}/g;
   $_ =~ s/\$id/$V{'id'}/g;
   $_ =~ s/\$password/$noticepass/g;
   print;
}

}
##################################################
#Join Succ
##################################################
sub joinsucc {
&adv;
&footdis;
&newsdis;
@succpage=&readtxtfile("$pagehead$joinsuccpage");
foreach (@succpage) {
   $_ =~ s/\$cgiurl/$cgiurl/g;
   $_ =~ s/\$succmessage/$_[0]/g;
   $_ =~ s/\$bannerhere/$bannerhere/g;
   $_ =~ s/\$foodis/$foodis/g;
   $_ =~ s/\$n_ews/$n_ews/g;
   $_ =~ s/\$id/$V{'id'}/g;
   $_ =~ s/\$password/$noticepass/g;
   $_ =~ s/\$name/$V{'name'}/g;
   $_ =~ s/\$email/$V{'email'}/g;
   $_ =~ s/\$password/$password/g;

   
   print;
}

}

##################################################
#Succ more
##################################################
sub succmore {
@succpage=&readtxtfile("$pagehead$succpage");
foreach (@succpage) {
   $_ =~ s/\$succmessage/$_[0]/g;
   $_ =~ s/\$cgiurl/$cgiurl/g;
   $_ =~ s/\$xid/$xid/g;
   $_ =~ s/\$xpass/$xpass/g;
   $_ =~ s/\$manager/$manager/g;
   $_ =~ s/\$name/$V{'name'}/g;
   $_ =~ s/\$score/$V{'score'}/g;
   $_ =~ s/\$dep/$V{'dep'}/g;
   $_ =~ s/\$email/$V{'email'}/g;
   $_ =~ s/\$id/$V{'id'}/g;
   $_ =~ s/\$password/$noticepass/g;
   print;
}
exit 0;
}
##################################################
#top Succ
##################################################
sub topsucc {
@succpage=&readtxtfile("$pagehead$topsuccpage");
foreach (@succpage) {
   $_ =~ s/\$succmessage/$_[0]/g;
   $_ =~ s/\$cgiurl/$cgiurl/g;
   $_ =~ s/\$xid/$V{'manageid'}/g;
   $_ =~ s/\$xpass/$V{'managepassword'}/g;
   $_ =~ s/\$manager/$manager/g;
   $_ =~ s/\$name/$V{'name'}/g;
   $_ =~ s/\$score/$V{'score'}/g;
   $_ =~ s/\$dep/$V{'dep'}/g;
   $_ =~ s/\$email/$V{'email'}/g;
   $_ =~ s/\$id/$V{'id'}/g;
   $_ =~ s/\$password/$noticepass/g;
   print;
}
exit 0;
}

##################################################
#top Succ
##################################################
sub topsucc_gen {
@succpage=&readtxtfile("$pagehead$topsucc_genpage");
foreach (@succpage) {
   $_ =~ s/\$succmessage/$_[0]/g;
   $_ =~ s/\$cgiurl/$cgiurl/g;
   $_ =~ s/\$xid/$V{'manageid'}/g;
   $_ =~ s/\$xpass/$V{'managepassword'}/g;
   $_ =~ s/\$manager/$manager/g;
   $_ =~ s/\$name/$V{'name'}/g;
   $_ =~ s/\$score/$V{'score'}/g;
   $_ =~ s/\$dep/$V{'dep'}/g;
   $_ =~ s/\$email/$V{'email'}/g;
   $_ =~ s/\$id/$V{'id'}/g;
   $_ =~ s/\$password/$noticepass/g;
   print;
}
exit 0;
}
##################################################
#Banner
##################################################

sub adv {
  
  $image_url = "/ximg";
  $default_image_list = "/home/comoman/httpd/htdocs/vdata/myadv.list";
  $location_of_cgi_lib = "/home/comoman/httpd/cgi-bin/cgi-lib.pl";
  srand;
  require "$location_of_cgi_lib";
  $image_database = "$default_image_list";
    
  open (IMAGE_DATABASE, "$image_database") || 
        &CgiDie ("Can't open $image_database");

  while (<IMAGE_DATABASE>)
    {
    ($image, $url , $kk, $hh , $owner) = split (/\|/, $_);
    chop $url;
    push (@imagelist, $image);
    push (@url_list, $url);
    push (@kk_list, $kk);
    push (@hh_list, $hh);
    push (@owner_list, $owner);
    }
  close (IMAGE_DATABSE);

  $random_number = int(rand(@imagelist));
  $random_image = $imagelist[$random_number];
  $random_url = $url_list[$random_number];
  $random_kk = $kk_list[$random_number];
  $random_hh = $hh_list[$random_number];
  $random_owner = $owner_list[$random_number];
  $bannerhere .="<A HREF =$random_url><IMG SRC =\"$image_url/$random_image\" width=468 height=60 border=0 alt=$random_kk></A>";
      
      
    
}





##################################################
#Check manage id password (2)
##################################################
sub chkme{
$topuser="open";
$guser="use";
$cryptpass=$_[1];;
$temppassword=&readdbmrecord("$filehead$passwordfile",$_[0]);
$tempscore=&readdbmrecord("$filehead$scorefile",$_[0]);

if (($_[0]) && ($temppassword eq $cryptpass) && ($tempscore=~m/(m|$topuser|$guser)/i)) 
{
      $return="&manageid=$_[0]&managepassword=$_[1]&score=$_[3]";
   }   
   return $return;
}
##################################################
#Check Member Id And Password
##################################################
sub chkid_password_1{
$tempchkid=&readdbmrecord("$filehead$idnamefile",$V{'id'});
if (!$tempchkid) {&error("您使用的 ID 並不存在!");}
$temppassword=&readdbmrecord("$filehead$passwordfile",$V{'id'});
if ($V{'password'} ne $temppassword) {&error("密碼不符,無權使用!");}

if ($tempchkid && ($V{'password'} eq $temppassword)) 
{
      $return="&id=$_[0]&password=$_[1]";
   }   
   return $return;
}
##################################################
#Check Member Id And Password
##################################################
sub chkid_password_3{
$tempchkid=&readdbmrecord("$filehead$idnamefile",$V{'id'});
if (!$tempchkid) {&error("您使用的 ID 並不存在!");}
$temppassword=&readdbmrecord("$filehead$passwordfile",$V{'id'});
if ($V{'oldpassword'} ne $temppassword) {&error("密碼不符,無權使用!");}

$tempdep=&readdbmrecord("$filehead$iddepfile",$V{'id'});

if ($tempdep eq "v") {
$tempscoreorg=&readdbmrecord("$filehead$vscorefile",$V{'id'});
}

if ($tempdep eq "d") {
%TSCORE=&readdbmfile("$filehead$dscoreorg$V{'id'}");
@sid=keys %TSCORE;
$tempscoreorg="@sid";
}

if ($tempchkid && ($V{'password'} eq $temppassword) && $tempscoreorg) 
{
      $return="&id=$_[0]&password=$_[1]";
   }   
   return $return;
}
##################################################
#Check Member Id And Old Password
##################################################
sub chkid_password_2{
$tempchkid=&readdbmrecord("$filehead$idnamefile",$V{'id'});
if (!$tempchkid) {&error("您使用的 ID 並不存在!");}
$temppassword=&readdbmrecord("$filehead$passwordfile",$V{'id'});
if ($V{'oldpassword'} ne $temppassword) {&error("密碼不符,無權使用!");}
$tempdep=&readdbmrecord("$filehead$iddepfile",$V{'id'});

if ($V{'needtoid'} eq "") {&error("無任何可啟用的作業!");}

if ($tempchkid && ($V{'oldpassword'} eq $temppassword) && $V{'needtoid'}) 
{
      $return="&id=$_[0]&password=$_[1]";
   }   
   return $return;
}
##################################################
#Check Member Id And Old Password
##################################################

sub chkid_password_4{
$tempchkid=&readdbmrecord("$filehead$idnamefile",$V{'id'});
if (!$tempchkid) {&error("您使用的 ID 並不存在!");}
$temppassword=&readdbmrecord("$filehead$passwordfile",$V{'id'});
if ($V{'oldpassword'} ne $temppassword) {&error("密碼不符,無權使用!");}

if ($tempchkid && ($V{'oldpassword'} eq $temppassword) ) 
{
      $return="&id=$_[0]&password=$_[1]";
   }   
   return $return;
}

##################################################
#cp do
##################################################
sub cpdo{
$oldpass=$_[1];
$noticepass=$_[2];
$newpass=crypt($noticepass,NB);
&deletedbmrecord("$filehead$passwordfile",$_[0]);
&writedbmrecord("$filehead$passwordfile",$_[0],$newpass);
&deletedbmrecord("$filehead$idcpass",$_[0]);
&writedbmrecord("$filehead$idcpass",$_[0],$timew);
}
##################################################
#cpemail do
##################################################
sub cpemaildo{
$oldemail=$_[1];
$noticeemail=$_[2];
&deletedbmrecord("$filehead$idemailfile",$_[0]);
&writedbmrecord("$filehead$idemailfile",$_[0],$noticeemail);
}
##################################################
#Check manage id password
##################################################
sub checkmanageidpassword {
local($return)="";
#$managefile="f:/users/myyankee/www/htdocs/member/page/xfile.conf";
$managefile="/home/comoman/httpd/htdocs/member/page/xfile.conf";

open (XFILE, "$managefile");

  foreach (<XFILE>)
    {
if (/$_[0]/i){

    ($xid, $xpass,$manager) = split (/\|/, $_);
    chop $manager;
    $manage{"$xid"} = "$xpass";
        }
  close (XFILE);
}

if (($_[0] ne "") && ($_[1] ne "")) {
   if (($manage{$_[0]}) && ($manage{$_[0]} eq $_[1])) {
      $return="&manageid=$_[0]&managepassword=$_[1]";
   }     
}
return $return;
}
##################################################
#Check MASTER id password 
##################################################
sub checktopmaster {
$topuser="open";
$cryptpass=$_[1];;
$temppassword=&readdbmrecord("$filehead$passwordfile",$_[0]);
$tempscore=&readdbmrecord("$filehead$scorefile",$_[0]);
$tempdep=&readdbmrecord("$filehead$depfile",$_[0]);

if (($_[0]) && ($temppassword eq $cryptpass) && ($tempscore=~m/$topuser/i)) 
{
	  $return="&manageid=$_[0]&managepassword=$_[1]";
   }   
   return $return;
}


##################################################
#Check manage id password super again
##################################################
sub pc32chkmasteragn {
local($return)="";
#$superfile="f:/users/myyankee/www/htdocs/member/page/xxfile.conf";
$superfile="/home/comoman/httpd/htdocs/tvdata/xxfile.conf";

open (XFILE, "$superfile");

  foreach (<XFILE>)
    {
if (/super/i){

    ($xid, $xpass,$manager) = split (/\|/, $_);
    $manage{"$xid"} = "$xpass";
	chop $manager;
        }
  close (XFILE);
}

if (($_[0] ne "") && ($_[1] ne "")) {


   if (($manage{$_[0]}) && ($manage{$_[0]} eq $_[1]) && ($_[2] eq $manager )) {
      $return="&manageid=$_[0]&managepassword=$_[1]&manager=$_[2]";
   }     
}
return $return;
}

##################################################
#check manage id password super
##################################################

sub pc32chkmaster {
local($return)="";
#$superfile="f:/users/myyankee/www/htdocs/member/page/xxfile.conf";
$superfile="/home/comoman/httpd/htdocs/tvdata/xxfile.conf";
open (XFILE, "$superfile");

  foreach (<XFILE>)
    {
if (/super/i){

    ($xid, $xpass,$manager) = split (/\|/, $_);
    $manage{"$xid"} = "$xpass";
	chop $manager;
        }
  close (XFILE);
}

if (($_[0] ne "") && ($_[1] ne "")) {

$_[1]=crypt($_[1],NB);

   if (($manage{$_[0]}) && ($manage{$_[0]} eq $_[1]) && ($manager eq 'top')) {
      $return="&manageid=$_[0]&managepassword=$_[1]";
   }     
}
return $return;
}

##################################################
#Check Referers
##################################################

sub chkrefer {
@referers = ('210.59.231.40','www.como.com.tw','www.comoo.com');

	local($check_referer) = 0;
  
    if ($ENV{'HTTP_REFERER'}) {
        foreach $referer (@referers) {
            if ($ENV{'HTTP_REFERER'} =~ m|https?://([^/]*)$referer|i) {
                $check_referer = 1;
				last;
                
            }
        }
    }
    #else {
    #    $check_referer = 1;
    #}
if ($check_referer != 1) { &error("不合法的使用!"); }
 
}



##################################################
#check manage id password super cp
##################################################
sub s32cp {
local($return)="";
$superfile="/home/comoman/httpd/htdocs/tvdata/xxfile.conf";

open (XFILE, "$superfile");

  foreach (<XFILE>)
    {
if (/super/i){

    ($xid, $xpass,$manager) = split (/\|/, $_);
    $manage{"$xid"} = "$xpass";
	chop $manager;
        }
  close (XFILE);
}

if (($_[0] ne "") && ($_[1] ne "")) {

#$_[1]=crypt($_[1],NB);

   if (($manage{$_[0]}) && ($manage{$_[0]} eq $_[1]) && ($manager eq 'top')) {
      $return="&manageid=$_[0]&managepassword=$_[1]";
    
 
  
$oldpass=$V{'managepassword'};
$newpass1=$V{'newpass'};
$newpass =crypt($V{'newpass'},NB);

$superfile="/home/comoman/httpd/htdocs/tvdata/xxfile.conf";
$newfile="/home/comoman/httpd/htdocs/tvdata/xxfile.temp";

$record="$_[0]|$newpass|top";

open (WRITE,">$newfile");
open (XFILE,"$superfile");

foreach (<XFILE>) {
  if(/super/){
      print WRITE "$record\n";
}
  else {
      print WRITE "$_";
    }
	
  close(XFILE);
  
  close(WRITE);
}
$t1='/home/comoman/httpd/htdocs/tvdata/xxfile.temp';
$t2='/home/comoman/httpd/htdocs/tvdata/xxfile.conf';


open (kk,"/home/comoman/httpd/htdocs/tvdata/xxfile.temp");
  
open (kk1,">/home/comoman/httpd/htdocs/tvdata/xxfile.conf");
  

  while(<kk>){
    print kk1 "$_";
    }

  close(kk);
  
  close(kk1);

  
}
}
return $return;

  }



sub searchwordfororder {
$return=0;
if ($ORDERNUM{$_[0]} =~m/\b$V{'searchword'}\b/i) {$return=1;}
 
return $return;
}


  
  sub replaceit{

if ($_ =~m /$kk/) {
$_ =~ s/\$replace/selected/g;
   }
   else {
   $_ =~ s/\$replace//g;
   }
   }
sub chkyou{
$tempname=&readdbmrecord("$filehead$idnamefile",$V{'id'});
$tempdep=&readdbmrecord("$filehead$iddepfile",$V{'id'});
$templimit=&readdbmrecord("$filehead$idlimit",$V{'id'});

if ($tempdep eq "v") {
$tempscore=&readdbmrecord("$filehead$vscorefile",$V{'id'});
$tempscoreorg=&readdbmrecord("$filehead$vscoreorg",$V{'id'});
}

&count_now;

if (($tempdep eq "v") && ($tempscore eq "") && $tempscoreorg) {&error("您的帳戶資料尚未確認!");}
if (($tempdep eq "d") && ($timenow > $templimit) ) {&error("您先前購買的天數已使用完畢!");}

if (($tempdep eq "d") && ($templimit eq "")) {&error("您的帳戶資料尚未確認!");}

if (($tempdep eq "v") && ($tempscore <= 0) && $tempscoreorg) {&error("您的帳戶資料尚未確認!");}
if (($tempdep eq "v") && ($timenow > $templimit) && (!$tempscoreorg)) {&error("您的帳戶已無點數可使用!");}
if (($tempdep eq "v") && ($tempscore < $vip_per_min) && (!$tempscoreorg)) {&error("您的帳戶點數已使用完畢,需續購方可繼續使用!");}
}

use Socket;

sub sendmail{

my ($from, $reply, $to, $smtp, $subject, $mailmessage) = @_;
$from=$_[1];
$reply=$from;
$to=$_[0];
$subject=$_[3];
$mailmessage=$_[2];
$smtp="como.com.tw";
my ($fromaddr) = $from;
my ($replyaddr) = $reply;
$to =~ s/[ \t]+/, /g; # pack spaces and add comma
$fromaddr =~ s/.*<([^\s]*?)>/$1/; # get from email address
$replyaddr =~ s/.*<([^\s]*?)>/$1/; # get reply email address
$replyaddr =~ s/^([^\s]+).*/$1/; # use first address
$mailmessage =~ s/^\./\.\./gm; # handle . as first character
$mailmessage =~ s/\r\n/\n/g; # handle line ending
$mailmessage =~ s/\n/\r\n/g;
$smtp =~ s/^\s+//g; # remove spaces around $smtp
$smtp =~ s/\s+$//g;

if (!$to) { return -8; }

my($proto) = (getprotobyname('tcp'))[2];
my($port) = (getservbyname('smtp', 'tcp'))[2];

my($smtpaddr) = ($smtp =~
/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/)
? pack('C4',$1,$2,$3,$4)
: (gethostbyname($smtp))[4];

if (!defined($smtpaddr)) { return -1; }

if (!socket(S, AF_INET, SOCK_STREAM, $proto)) { 
  return -2; }
if (!connect(S, pack('Sna4x8', AF_INET, $port, $smtpaddr))) { 
  return -3; }

my($oldfh) = select(S); $| = 1; select($oldfh);

$_ = <S>; if (/^[45]/) { close S; return -4; }

print S "helo localhost\r\n";
$_ = <S>; if (/^[45]/) { close S; return -5; }

print S "mail from: <$fromaddr>\r\n";
$_ = <S>; if (/^[45]/) { close S; return -5; }

foreach (split(/, /, $to)) {
  print S "rcpt to: <$_>\r\n";
  $_ = <S>; if (/^[45]/) { close S; return -6; }
  }

print S "data\r\n";
$_ = <S>; if (/^[45]/) { close S; return -5; }

print S "To: $to\r\n";
print S "From: $from\r\n";
print S "Reply-to: $replyaddr\r\n" if $replyaddr;
print S "X-Mailer: Windows NT Sendmail build 1.98 By YankeeNET\r\n";
print S "Subject: $subject\r\n\r\n";
print S "$mailmessage";
print S "\r\n.\r\n";

$_ = <S>; if (/^[45]/) { close S; return -7; }

print S "quit\r\n";
$_ = <S>;

close S;

return;
}


sub sendmail4 {

my ($from, $reply, $to, $smtp, $subject, $mailmessage) = @_;
$from=$_[1];
$reply=$from;
$to=$_[0];
$subject=$_[3];
$mailmessage=$_[2];
$ccto=$_[4];
my ($fromaddr) = $from;
my ($replyaddr) = $reply;

$to =~ s/[ \t]+/, /g; # pack spaces and add comma
$fromaddr =~ s/.*<([^\s]*?)>/$1/; # get from email address


$replyaddr =~ s/.*<([^\s]*?)>/$1/; # get reply email address
$replyaddr =~ s/^([^\s]+).*/$1/; # use first address
$ownmessage =~ s/^\./\.\./gm; # handle . as first character
$mailmessage =~ s/\r\n/\n/g; # handle line ending
$mailmessage =~ s/\n/\r\n/g;
$smtp =~ s/^\s+//g; # remove spaces around $smtp
$smtp =~ s/\s+$//g;

if (!$to) { return -8; }

my($proto) = (getprotobyname('tcp'))[2];
my($port) = (getservbyname('smtp', 'tcp'))[2];

my($smtpaddr) = ($smtp =~
/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/)
? pack('C4',$1,$2,$3,$4)
: (gethostbyname($smtp))[4];

if (!defined($smtpaddr)) { return -1; }

if (!socket(S, AF_INET, SOCK_STREAM, $proto)) { 
  return -2; }
if (!connect(S, pack('Sna4x8', AF_INET, $port, $smtpaddr))) { 
  return -3; }

my($oldfh) = select(S); $| = 1; select($oldfh);

$_ = <S>; if (/^[45]/) { close S; return -4; }

print S "helo localhost\r\n";
$_ = <S>; if (/^[45]/) { close S; return -5; }

print S "mail from: <$fromaddr>\r\n";
$_ = <S>; if (/^[45]/) { close S; return -5; }

foreach (split(/, /, $to)) {
  print S "rcpt to: <$_>\r\n";
  $_ = <S>; if (/^[45]/) { close S; return -6; }
  }

print S "data\r\n";
$_ = <S>; if (/^[45]/) { close S; return -5; }

print S "To: $to\r\n";
print S "Cd: $ccto\r\n";
print S "From: $from\r\n";
print S "Reply-to: $replyaddr\r\n" if $replyaddr;
print S "X-Mailer: Windows NT Sendmail build 1.98 By YankeeNET\r\n";
print S "Subject: $subject\r\n\r\n";
print S "$mailmessage";
print S "\r\n.\r\n";

$_ = <S>; if (/^[45]/) { close S; return -7; }

print S "quit\r\n";
$_ = <S>;

close S;

return;
}
