当前位置:首页> PHP教程> PHP接触
关键字
文章内容
我学php从自动摇奖系统开始
 
 
修改时间:[2009/10/23 05:59]    阅读次数:[1196]    发表者:[起缘]
 
巧合,这种东西我可没写过,而且我也是刚学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]);
}
fclose($File_reputs);
}//delete 结束

如果哪位老大知道有直接删行的函数告诉我吧。

请又说回来。这个删除函数带入的值就是当前指针的位置,怎么做呢?


delete(ftell($File));

这样就行。

记得要关掉文件哦: fclose($File);


$File = @fopen($Dir_File.$ipip[3].".txt","a+");
if ($File)
{//222对应的括号
if ($qusi)
{//111
$StartTime=date("U")."|".$Head;
fputs($File,"$StartTime
");
}//111
fclose($File);
}
上边的都完事啦。如果全检查了也没发现这位老兄以前来过,那就把他的IP也加进去吧。上面的方法就行了。


至此,IP检测部分全都完成。其它部分就是产生一些随机数了,所以很简单。我也不用说了。
给初学者一个思路,如果有更好的方法,请一定要告诉我。我才学了几天php。哈哈~!!!!addoil!


忘记了最重要的事情,这个摇奖摇出来的是oicq号的密码,全部的靓号哦。
就连:13211313和13211314这样的情侣号都有呢。
(一生爱你一生一生/一生爱你一生一世)
想要的话就来吧,送给女朋友一个,她一定很开心。