您现在的位置: 无忧电子商务网 >> 信息学院 >> 程序开发 >> php >> 正文

我学php从自动摇奖系统开始…

作者:佚名    信息学院来源:整理    点击数:    更新时间:2008-2-2 我要参与讨论

  巧合,这种东西我可没写过,而且我也是刚学php,好多语法都不是简单的。有些功能用函数能实现的我却非要自己写一个函数来用………真丢人,不过给新手一个学习过程的提示吧。
自动摇奖系统:24小时内不能重复IP,先从这里开始。
$ip=getenv("remote_addr");///取IP值存入$ip,当然,ip的格式是2.2.2.2啊。但是要把ip记录下来……一个文件里就要有几万行了。麻烦。我把ip的最后一位取下来,做文件名来用。这样就有255个文件了,每个文件里只存前三个类。
方法:$ipip=explode(".",$ip);把ip以.分段存入$ipip这个数组中。
这样,IP头就等于:$Head = $ipip[0].".".$ipip[1].".".$ipip[2];
打开文件时就可以用:$File = @fopen($Dir_File.$ipip[3].".txt","r");
用if ($File)做条件开始,这样可以在没有$Dir_File.$ipip[3].".txt"的时候自己用else来建立一个文件。
while(!feof($File))////当没有到文件尾时…
.........
$OldIP=explode("|",fgets($File,255));取出当前行来,因为txt里的格式是要用时间+IP来保存的,所以,中间用|来分格,这样,$OldIP就存了两个值。IP时间和IP C类。

$OldIP[0]用来做时间和现在的date("U")来比较过24小时的秒数86400了,就删掉当前行。没有的话就接着比较。
if (($Head."
")==$OldIP[1])
因为每一行最后有一个
的换行,所以要加上一起比吧。

这里有一个问题,就是删掉当前行上的时间+IP,这个……我是新学啊,不知道有没有函数可以直接做到,反正别人告诉我没有,我就自己写了一个。方法是用读数组的file();来读入数组变量。然后从要删掉的那个位置开始把后面的都向前移动。然后再写回去,注意,最后一个不写,就大功告成了。
function delete($Line_delete)
{//delete开始
global $ipip;///这些在前面都定义了的
global $ip;///这些在前面都定义了的
global $Head;///这些在前面都定义了的
global $Dir_File;///这些在前面都定义了的
$Filedelete = file($Dir_File.$ipip[3].".txt");

for ($i=$Line_delete;$i<count($Filedelete)-1;$i++)
{
$Filedate[$i]=$Filedate[$i+1];
}
$File_reputs=fopen($Dir_File.$ipip[3].".txt","w");
$reback_goto=count($Filedelete);
for ($i=0;$i<$reback_goto;$i++)
{
fputs($File_reputs,$Filedelete[$i]

[1] [2] 下一页

在google里搜索更多我学php从自动摇奖系统开始…

Google
Web www.51ec.org
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
我来说两句 对此文章发表了评论
  昵 称: *必填    ·注册用户·
  评 分: 1分 2分 3分 4分 5分     严禁发表危害国家安全、政治、黄色淫秽等内容的评论,用户需对自己在使用本网站服务过程中的行为承担法律责任。本站管理员有权保留或删除评论内容,评论内容只代表机友个人观点,与本网站立场无关。  
评 论
内 容

 
评论列表 (最新 评论仅限网友观点!)

供求信息




| 设为首页 | 加入收藏 | 关于我们 | 广告服务 | 联系方式 | 友情链接 | 版权申明