>> 欢迎您,客人登录 按这里注册 忘记密码 在线 搜索 论坛风格  帮助  插件   


>>> 什么是CGI,CGI是怎么编写的,Perl又是什么,请在这里交流
雷傲极酷超级论坛『 CGI 编程讨论区 』 [返回] → 浏览:[原创]用户数据集中写入  本帖为精华帖子 标记论坛所有内容为已读 

 目前论坛总在线 335 人,本主题共有 1 人浏览。其中注册用户 0 人,访客 1 人。  [关闭详细列表]
发表一个新主题 回复贴子 开启一个新投票 ◆此帖被阅读 3584 次◆  浏览上一篇主题  刷新本主题  树形显示贴子 浏览下一篇主题
 * 贴子主题: [原创]用户数据集中写入 不分页显示此帖  保存该页为文件  本贴有问题,发送短消息报告给版主  加入个人收藏&关注本贴  显示可打印的版本  把本贴加入收藏夹   

 一窍不通 

 

等级: 风云使者
信息: 该用户目前不在线 帅哥 未羊 双子座
威望: +1 积分: 579
现金: 25338 雷傲元
存款: 没开户
贷款: 没贷款
来自: 河北石家庄 China
发帖: 579
精华: 0
资料:   发送即时消息给一窍不通  
在线: 843 时 48 分 19 秒
注册: 2002/09/01 08:18pm
造访: 2003/09/17 09:20pm
消息 查看 搜索 好友 引用 回复贴子回复 只看我 [楼 主]
  以前看到小石榴写的一个用户数据集中读写的帖子,看了好几遍,没看懂,实在对不起,又没看懂。没看懂就自己写,下面是个我写的集中写入用户数据的过程。4*.

代码:
N5(pG
sub upmemberdate {g?
   my $membernametemp = shift;k4F=
   my %userinfo = @_;jO5s^
©雷傲极酷超级论坛 -- 雷傲极酷超级论坛,最新软件,BT 下载,游戏娱乐,交友聊天,您网上的自由天堂  e
   my $filetoopen = "$lbdir$memdir/$membernametemp.cgi";J
   if (-e $filetoopen) {RT
       open (FILE,$filetoopen);}bgt=k
       my $filedata=<FILE>;7
       close(FILE);z.q
       chomp $filedata;)8H
       local ( $membername, $password, $membertitle, $membercode, $numberofposts, $emailaddress, $showemail, $ipaddress, $homepage, $oicqnumber, $icqnumber, $location, $interests, $joineddate, $lastpostdate, $signature, $timedifference, $privateforums, $useravatar, $userflag,  $userxz, $usersx, $personalavatar, $personalwidth, $personalheight, $rating, $lastgone, $visitno,  $addjy, $meili, $mymoney, $postdel, $sex, $education, $marry, $work, $born, $chatlevel,  $chattime, $jhmp, $useradd3, $useradd4, $onlinetime, $userquestion, $useradd6, $useradd7, $useradd8) = split(/\t/,$filedata);Bh
       local($numberofposts,$numofreplys)=split(/\|/,$numberofposts);$S
       foreach my $info (keys %userinfo) {?G3
           if ($userinfo{$info}=~/^[\+\-][0-9]+$/) {4%\s
               $$info += $userinfo{$info};0qj
           }@+-
           else {Mr(15
               $userinfo{$info} =~ s/^\\(\-|\+)/$1/;j{s./W
               $userinfo{$info} =~ s/^\\\\/\\/;4"
               $$info = $userinfo{$info};\0f@1=
           }hl?/
       #print "$info $$info\n";^K'99@
       })P8
       open(FILE,">$filetoopen");IhKt:'
       print FILE "$membername\t$password\t$membertitle\t$membercode\t$numberofposts\|$numberofreplys\t$emailaddress\t$showemail\t$ipaddress\t$homepage\t$oicqnumber\t$icqnumber\t$location\t$interests\t$joineddate\t$lastpostdate\t$signature\t$timedifference\t$privateforums\t$useravatar\t$userflag\t$userxz\t$usersx\t$personalavatar\t$personalwidth\t$personalheight\t$rating\t$lastgone\t$visitno\t$addjy\t$meili\t$mymoney\t$postdel\t$sex\t$education\t$marry\t$work\t$born\t$chatlevel\t$chattime\t$jhmp\t$useradd3\t$useradd4\t$onlinetime\t$userquestion\t$useradd6\t$useradd7\t$useradd8\t\n";{J
       close(FILE);GB"
   }(zo
}©雷傲极酷超级论坛 -- 雷傲极酷超级论坛,最新软件,BT 下载,游戏娱乐,交友聊天,您网上的自由天堂  f;

P3
所传递的参数,第一个是所要写入的用户名,后面是一个哈希表,哈希表的关键字是要被改变的变量名,值是增减的值或被改为的值。jP>
如果哈希表的值以 + - 开头,则是对相应的用户数据增减,否则就将相应的用户数据设为哈希表的值。zv
如果要将一个以 + - 开头的字串付给一个变量的话,就要用 \ 对其进行一次转义,如果以 \ 开头还要进行一次转义。f
例如,将用户 test 的发贴数加1 ,威望设为 -6 ,可以这样调用过程。k{1
&upmemberdate('test',numofposts,'+1',rating,'\-6');W6#








发贴时间2003/05/29 09:50pm IP: 已设置保密[本文共3393字节]  
 红岭小石榴 
   -* 未注册 *-


等级: 未知
信息: 该用户目前不在线
威望: 未知 积分: 未知
现金: 未知
存款: 未知
贷款: 未知
来自: 未知
发帖: 0
精华: 0
在线: 0 时 0 分 0 秒
注册: 未知
造访: 未知
引用 回复贴子回复 只看我 [第 2 楼]
 
下面引用由一窍不通2003/05/29 09:50am 发表的内容:/!v"^*
以前看到小石榴写的一个用户数据集中读写的帖子,看了好几遍,没看懂,实在对不起,又没看懂。没看懂就自己写,下面是个我写的集中写入用户数据的过程。M1pO@c
sub upmemberdate {i))
   my $membernametemp = shift; ...,X;&S

!b1
晕....Du6l
©雷傲极酷超级论坛 -- 雷傲极酷超级论坛,最新软件,BT 下载,游戏娱乐,交友聊天,您网上的自由天堂  G{qD
我的方法就是&(iW
sub upmemberdata($$){/k9V
   my($membername,$upmemberdatacode) = @_;z
   ### 这里读用户数据0==}
   &$upmemberdatacode;E%
   ### 这里写用户数据^b41,
}©雷傲极酷超级论坛 -- 雷傲极酷超级论坛,最新软件,BT 下载,游戏娱乐,交友聊天,您网上的自由天堂  Zpb_
©雷傲极酷超级论坛 -- 雷傲极酷超级论坛,最新软件,BT 下载,游戏娱乐,交友聊天,您网上的自由天堂  %Di-M
调用方法:*
比如在 post.cgi 中Dijo_5
sub upcode {)wZ04
......9KMV
$numberofposts++;O5OE
$numberofreplys++;3b
........+
}©雷傲极酷超级论坛 -- 雷傲极酷超级论坛,最新软件,BT 下载,游戏娱乐,交友聊天,您网上的自由天堂  t=2
upmemberdata($inmembername,\&upcode);t}*
类似这样的\az_








发贴时间2003/05/30 02:01am 此 IP 为代理服务器IP: 已设置保密[本文共761字节]  
 红岭小石榴 
   -* 未注册 *-


等级: 未知
信息: 该用户目前不在线
威望: 未知 积分: 未知
现金: 未知
存款: 未知
贷款: 未知
来自: 未知
发帖: 0
精华: 0
在线: 0 时 0 分 0 秒
注册: 未知
造访: 未知
引用 回复贴子回复 只看我 [第 3 楼]
  你的方法也有它的方便之处, 但缺点是可控制的范围小iHQ








发贴时间2003/05/30 02:04am 此 IP 为代理服务器IP: 已设置保密[本文共72字节]  
 一窍不通 

 

等级: 风云使者
信息: 该用户目前不在线 帅哥 未羊 双子座
威望: +1 积分: 579
现金: 25338 雷傲元
存款: 没开户
贷款: 没贷款
来自: 河北石家庄 China
发帖: 579
精华: 0
资料:   发送即时消息给一窍不通  
在线: 843 时 48 分 19 秒
注册: 2002/09/01 08:18pm
造访: 2003/09/17 09:20pm
消息 查看 搜索 好友 引用 回复贴子回复 只看我 [第 4 楼]
  我还是不明白你的方法,你最好能详细的写一下。rs)
你的好象还要根据不同的需要写出不同的过程再调用,只是把读取写入用户数据的内容集中到一起了。我的不管如何更新数据,只用这一个过程就行了。就是调用的时候累点。JT
你说的控制范围小是什么意思?我不明白。raMM;s








发贴时间2003/05/30 05:51am IP: 已设置保密[本文共268字节]  
 红岭小石榴 
   -* 未注册 *-


等级: 未知
信息: 该用户目前不在线
威望: 未知 积分: 未知
现金: 未知
存款: 未知
贷款: 未知
来自: 未知
发帖: 0
精华: 0
在线: 0 时 0 分 0 秒
注册: 未知
造访: 未知
引用 回复贴子回复 只看我 [第 5 楼]
 
下面引用由一窍不通2003/05/29 05:51pm 发表的内容:Oe
我还是不明白你的方法,你最好能详细的写一下。8^:M.~
你的好象还要根据不同的需要写出不同的过程再调用,只是把读取写入用户数据的内容集中到一起了。我的不管如何更新数据,只用这一个过程就行了。就是调用的时候累 ...X}O}k

<-D*
你调用的时候是轻松点, 因为我的要单独写子程序K
而控制范围小是只能修改变量,而不能让其它复杂的代码参与运算d$x
比如在不同情况下,根据用户原有经验, 来求得新的经验值[D=%d1








发贴时间2003/05/30 11:54am 此 IP 为代理服务器IP: 已设置保密[本文共487字节]  
 红岭小石榴 
   -* 未注册 *-


等级: 未知
信息: 该用户目前不在线
威望: 未知 积分: 未知
现金: 未知
存款: 未知
贷款: 未知
来自: 未知
发帖: 0
精华: 0
在线: 0 时 0 分 0 秒
注册: 未知
造访: 未知
引用 回复贴子回复 只看我 [第 6 楼]
  在更新帖子列表的时候,情况会更复杂0F:Nb'








发贴时间2003/05/30 11:57am 此 IP 为代理服务器IP: 已设置保密[本文共57字节]  
 红岭小石榴 
   -* 未注册 *-


等级: 未知
信息: 该用户目前不在线
威望: 未知 积分: 未知
现金: 未知
存款: 未知
贷款: 未知
来自: 未知
发帖: 0
精华: 0
在线: 0 时 0 分 0 秒
注册: 未知
造访: 未知
引用 回复贴子回复 只看我 [第 7 楼]
  我没有这个的LB的子程序~~*po
我只是在我写的社区程序里用到了,目前该程序还没开发完呢yj








发贴时间2003/05/30 00:01pm 此 IP 为代理服务器IP: 已设置保密[本文共103字节]  
 红岭小石榴 
   -* 未注册 *-


等级: 未知
信息: 该用户目前不在线
威望: 未知 积分: 未知
现金: 未知
存款: 未知
贷款: 未知
来自: 未知
发帖: 0
精华: 0
在线: 0 时 0 分 0 秒
注册: 未知
造访: 未知
引用 回复贴子回复 只看我 [第 8 楼]
 
代码:
sub putonemember($$){ ### 写入用户数据h\n"
    my($membername,$memberdata_updatecode) = @_;<'
    $membername =~ tr/A-Z/a-z/;<A:e
    $membername =~ s/[\a\f\n\e\0\r\t\s\`\~\!\@\#\$\%\^\&\*\(\)\+\=\\\{\}\;\'\:\"\,\.\/\<\>\?]//isg;)sQ
    $membername = "客人" if($membername eq "");7?
    my$memberdata_indir = ord(lc(substr($membername,0,1))); ### 用户资料分目录存放)T8
    my$memberdatafile = "${datadir}members/$memberdata_indir/$membername.cgi";=N7*
    if((-e $memberdatafile)&&($membername ne "客人")){#4OF_E
         winlock($memberdatafile,1) if($use_winlock);A+d[!X
         open(FILE,$memberdatafile);jb
         flock(FILE,1) if($OS_USED eq "Unix");W
         my$memberdatastr = <FILE>;yC
         close(FILE);4Byw
         $files_opened++;-!fQa
         chomp($memberdatastr);"-au3
         if(($use_xp_report)&&(($memberdatastr eq "")||($memberdatastr=~/^\s+$/))){HxyQ;o
              xp_report("用户 $membername 的社区资料可能已经完全丢失了!");(|Az\&
         }else{u?ynK
              ($Mem{name},$Mem{password},$Mem{class},$Mem{authcode},$Mem{title},$Mem{prestige},$Mem{jhmp},$Mem{medal},$Mem{postnum},$Mem{lastpost},$Mem{attr},$Mem{regtime},$Mem{regip},$Mem{lvisit},$Mem{numvisit},$Mem{onlinet},$Mem{nation},$Mem{comefrom},$Mem{pinfo},$Mem{email},$Mem{showemail},$Mem{homepage},$Mem{oicq},$Mem{icq},$Mem{avatar},$Mem{avatarw},$Mem{avatarh},$Mem{photostatus},$Mem{intro},$Mem{signature},$Mem{pwprotect})=split(/\t/,$memberdatastr);x5@oe
              &$memberdata_updatecode; ### 执行更新用户数据的代码K
              if($Mem{name} eq "" || $Mem{password} eq ""){(
                   winlock($memberdatafile,0) if($use_winlock);lI_
                   xp_report("用户 $membername 的用户名或密码数据项丢失!") if($use_xp_report);z5
              }else{S)M
                   open(FILE,">$memberdatafile");t-]y
                   flock(FILE,2) if($OS_USED eq "Unix");n
                   print FILE "$Mem{name}\t$Mem{password}\t$Mem{class}\t$Mem{authcode}\t$Mem{title}\t$Mem{prestige}\t$Mem{jhmp}\t$Mem{medal}\t$Mem{postnum}\t$Mem{lastpost}\t$Mem{attr}\t$Mem{regtime}\t$Mem{regip}\t$Mem{lvisit}\t$Mem{numvisit}\t$Mem{onlinet}\t$Mem{nation}\t$Mem{comefrom}\t$Mem{pinfo}\t$Mem{email}\t$Mem{showemail}\t$Mem{homepage}\t$Mem{oicq}\t$Mem{icq}\t$Mem{avatar}\t$Mem{avatarw}\t$Mem{avatarh}\t$Mem{photostatus}\t$Mem{intro}\t$Mem{signature}\t$Mem{pwprotect}\t\t\n";&
                   close(FILE);,<)
                   winlock($memberdatafile,0) if($use_winlock);(?\
                   $files_written++;8k5:
              }h)
         }ygR=
    }69
    else{zH
         xp_report("试图生成并写入不存在的用户文件 $membername.cgi") if(($use_xp_report)&&($thisprog ne "register.cgi"));F
    };w
}

_(*z








发贴时间2003/05/30 06:13pm 此 IP 为代理服务器IP: 已设置保密[本文共4054字节]  
 红岭小石榴 
   -* 未注册 *-


等级: 未知
信息: 该用户目前不在线
威望: 未知 积分: 未知
现金: 未知
存款: 未知
贷款: 未知
来自: 未知
发帖: 0
精华: 0
在线: 0 时 0 分 0 秒
注册: 未知
造访: 未知
引用 回复贴子回复 只看我 [第 9 楼]
  在 post.cgi 中的应用pvz
©雷傲极酷超级论坛 -- 雷傲极酷超级论坛,最新软件,BT 下载,游戏娱乐,交友聊天,您网上的自由天堂  ~YT~<7
if($userregistered){wA\-
my$update_memberdata_code = sub {*,
$Mem{postnum} =~ /p(.*?)\|/i;ay7jKj
$num_of_posts = $1 + 1;c[#
$Mem{postnum} =~ s/p.*?\|(.*?)$/p$num_of_posts\|$1/i;WBxN-d
};=
putonemember($inmemberid,$update_memberdata_code);~YaA2
}©雷傲极酷超级论坛 -- 雷傲极酷超级论坛,最新软件,BT 下载,游戏娱乐,交友聊天,您网上的自由天堂  *F*]M5








发贴时间2003/05/30 06:16pm 此 IP 为代理服务器IP: 已设置保密[本文共306字节]  
 红岭小石榴 
   -* 未注册 *-


等级: 未知
信息: 该用户目前不在线
威望: 未知 积分: 未知
现金: 未知
存款: 未知
贷款: 未知
来自: 未知
发帖: 0
精华: 0
在线: 0 时 0 分 0 秒
注册: 未知
造访: 未知
引用 回复贴子回复 只看我 [第 10 楼]
  我的子程序还是有点问题的, 最近没时间修改, 写到一半不动了`PL








发贴时间2003/05/30 06:20pm 此 IP 为代理服务器IP: 已设置保密[本文共80字节]  
 一窍不通 

 

等级: 风云使者
信息: 该用户目前不在线 帅哥 未羊 双子座
威望: +1 积分: 579
现金: 25338 雷傲元
存款: 没开户
贷款: 没贷款
来自: 河北石家庄 China
发帖: 579
精华: 0
资料:   发送即时消息给一窍不通  
在线: 843 时 48 分 19 秒
注册: 2002/09/01 08:18pm
造访: 2003/09/17 09:20pm
消息 查看 搜索 好友 引用 回复贴子回复 只看我 [第 11 楼]
  看了你的程序,学了两招b=RZd








发贴时间2003/05/30 08:37pm IP: 已设置保密[本文共46字节]  

 该主题只有一页

快速回复主题: [原创]用户数据集中写入
您目前的身份是: 客人 ,要使用其他用户身份,请输入用户名和密码。未注册客人请输入网名,密码留空。
输入用户名和密码: 用户名: 没有注册? 密码: 忘记密码?
上传附件或图片 (最大容量 2048KB)
发帖数要大于 15 篇(认证用户不限)

目前附件:(如不需要某个附件,只需删除内容中的相应 [UploadFile ...] 标签即可) [删除]
选项  插入魔法表情

使用 LeoBBS 标签?
显示您的签名?
使用表情字符转换?
使用字体转换?

    快速引用第 楼层的回复
 顶端 加到"个人收藏夹" 主题管理总固顶 取消总固顶 区固顶 取消区固顶 固顶 取消固顶 提升 沉底
加重 取消加重 精华 取消精华 锁定 解锁 删除 删除回复 移动


© 版权所有: 雷傲极酷超级论坛   皖ICP备06000657号
程序版权所有:山鹰(糊)、花无缺  版本:LeoBBS X Build060830
 

本论坛言论纯属发表者个人意见,与 雷傲极酷超级论坛 立场无关