如何限制用户的访问次数?只有cookies和ip吗

gyx999 2010-02-01 02:22:43
我的视频站要限制用户的观看次数,目前采用cookies和IP辨别的方法。
但是只有用户清除cookies或断开adsl后,还是照样可以访问。
有什么高招吗?
...全文
689 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
brilliant_fgh 2010-02-06
  • 打赏
  • 举报
回复
判断用户session,没登录的肯定为空,那就设置只能看x分钟,然后页面友好关闭,这样每次他都只能看重复的X分钟就不能看了;不为空的肯定是注册用户就可以无限制的看了!
骄傲青蛙 2010-02-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 gyx999 的回复:]
引用 8 楼 hanxianglin 的回复:
用一个session变量外加上两把锁就搞定了:具体代码


  <?
session_start();
//从count.txt文件读取数据
$fr=fopen("count.txt","r");
flock($fr,LOCK_SH);//表示其他客户端不能对该文件进行写操作 但是可以进行读操作
$count=fread($fr,filesize("count.txt"));
fclose($fr);
//定义一个变量
if($_SESSION["flag"]=="")
{
//把访问次数加一  100
$count=$count+1;
//把新的访问次数重新写入到文件中
$fw=fopen("count.txt","w");
flock($fw,LOCK_EX);//独占锁 表示其他的客户端不能对该文件执行任何操作
fwrite($fw,$count);
fclose($fw);
$_SESSION["flag"]="ok";
}
?>


但是只要用户清除cookie,或更换IP就可以继续看啊。
可以通过注册用户名来限制,但是我也希望游客也可以看几次。
[/Quote]



你的要求不能做到



因为客户端是不定因素, 可以随时作出改变,而cookie和ip也不确定的, 最多也中是防一般不懂编程的人,

没有恒定值来作为条件判断对方身份的依据, 所以不能。



若要真的实现这个功能, 只能是间隔时间内限定注册帐号, 用帐号来登录浏览。
babysc1 2010-02-06
  • 打赏
  • 举报
回复
设置权限判断啊
phpboy 2010-02-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 gyx999 的回复:]
我的视频站要限制用户的观看次数,目前采用cookies和IP辨别的方法。
但是只有用户清除cookies或断开adsl后,还是照样可以访问。
有什么高招吗?
[/Quote]

注册会员 有会员权限的用户才可以访问,这样就可以很方便记录和控制访问次数
ghostxyz0 2010-02-06
  • 打赏
  • 举报
回复
網站能獲取客戶端相對比較穩定的信息,也就是IP了
我相信你也不會用客戶端類型來判斷吧

能記錄在遠程客戶端的信息也就只有COOKIE了
gyx999 2010-02-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 hanxianglin 的回复:]
用一个session变量外加上两把锁就搞定了:具体代码


<?
session_start();
//从count.txt文件读取数据
$fr=fopen("count.txt","r");
flock($fr,LOCK_SH);//表示其他客户端不能对该文件进行写操作 但是可以进行读操作
$count=fread($fr,filesize("count.txt"));
fclose($fr);
//定义一个变量
if($_SESSION["flag"]=="")
{
//把访问次数加一  100
$count=$count+1;
//把新的访问次数重新写入到文件中
$fw=fopen("count.txt","w");
flock($fw,LOCK_EX);//独占锁 表示其他的客户端不能对该文件执行任何操作
fwrite($fw,$count);
fclose($fw);
$_SESSION["flag"]="ok";
}
?>

[/Quote]
但是只要用户清除cookie,或更换IP就可以继续看啊。
可以通过注册用户名来限制,但是我也希望游客也可以看几次。
dandande 2010-02-01
  • 打赏
  • 举报
回复
跟着学
yishiwucheng 2010-02-01
  • 打赏
  • 举报
回复
个人觉得判断IP不是个好办法,就用注册用户名来限制,容易实现,也方便
hanxianglin 2010-02-01
  • 打赏
  • 举报
回复
用一个session变量外加上两把锁就搞定了:具体代码


<?
session_start();
//从count.txt文件读取数据
$fr=fopen("count.txt","r");
flock($fr,LOCK_SH);//表示其他客户端不能对该文件进行写操作 但是可以进行读操作
$count=fread($fr,filesize("count.txt"));
fclose($fr);
//定义一个变量
if($_SESSION["flag"]=="")
{
//把访问次数加一 100
$count=$count+1;
//把新的访问次数重新写入到文件中
$fw=fopen("count.txt","w");
flock($fw,LOCK_EX);//独占锁 表示其他的客户端不能对该文件执行任何操作
fwrite($fw,$count);
fclose($fw);
$_SESSION["flag"]="ok";
}
?>
Flow_Cloud 2010-02-01
  • 打赏
  • 举报
回复
学习,帮顶
iwantnet 2010-02-01
  • 打赏
  • 举报
回复
如果你的限制很严格的话,你就让用户注册.通过用户名来进行限制.
zbdobast 2010-02-01
  • 打赏
  • 举报
回复
我的做法是 记录一个用户的访问时间差,如果在我规定的时间内,就不让访问,你参考下!!
北京不不 2010-02-01
  • 打赏
  • 举报
回复
没有什么绝对有效地方法,你只要针对大多数用户就是了。
看你一个网页有必要断ADSL么。
你的数据很重要的话,就设立用户。

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧