CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  PHP

php用什么语句可以知道用户的浏览有没有禁用cookies?

楼主songsong2008()2004-12-02 16:52:21 在 Web 开发 / PHP 提问

因为要做一个投票的网页,一个IP只能投一张票。如果用户禁用了cookies,那他就可以无限次地投票了,所以要知道用户有没有禁用cookies,如果有的话,则不准他投票。  
  或者有没有其它的解决方法?  
   
  问题点数:20、回复次数:22Top

1 楼turtlevan(你是猪啊,亲我还愣着干嘛)回复于 2004-12-02 17:17:49 得分 2

可以通过一个页面自动返回结果  
   
  Top

2 楼hflsj(红枫)回复于 2004-12-02 19:19:36 得分 0

用session吧   cookies有的客户端浏览器禁用的Top

3 楼songsong2008()回复于 2004-12-02 19:46:06 得分 0

用session的话只要用户关掉浏览器,然后再打开,他又可以投票了啊Top

4 楼songsong2008()回复于 2004-12-02 19:46:58 得分 0

各位帮我想想办法,很急Top

5 楼syre(神仙)回复于 2004-12-02 20:31:20 得分 2

cookie还可以冒充呢  
   
  你可以记录的ip啊Top

6 楼songsong2008()回复于 2004-12-02 21:02:25 得分 0

我的代码是这样,但是用户禁用了cookies   ,他就可以无限次投票了,正在郁闷中  
   
  $addr=$REMOTE_ADDR;  
  if($HTTP_COOKIE_VARS["addr"])  
  echo   "你已投过票";  
  else  
  {  
  setcookie("addr",$addr,time()+31536000);  
  $v=$radio1;  
  $cn=mysql_connect('202.116.223.38','webdb','123')   or   dir('不能连接数据库');  
  $sql="update   votes   set   star".$v."=star".$v."+1   where   VID=1";  
  mysql_db_query("evote",$sql,$cn);  
  mysql_close($cn);  
  }Top

7 楼songsong2008()回复于 2004-12-02 21:02:40 得分 0

请大家一定要帮一下忙Top

8 楼zhiin(┈ Jcan ┈)回复于 2004-12-02 22:11:25 得分 3

setcookie("testcookie",   true,   time()+1000)   ;  
  if(empty($_COOKIE['testcookie']))  
  {  
                        echo   "不支持COOKIE"   ;  
  }  
   
   
  这样应该可以吧?~~~~~Top

9 楼surfchen(冲浪)回复于 2004-12-02 22:26:50 得分 2

干脆把IP存进数据库里~Top

10 楼xuzuning(唠叨)回复于 2004-12-03 08:09:25 得分 2

你给出的代码只是接收投票提交时的。  
  如果你在产生投票表单的页面中就对cookie赋值的话,参见zhiin(〃稚鹰〃)的代码,就很容易识别是否支持cookie了Top

11 楼songsong2008()回复于 2004-12-03 10:00:03 得分 0

我按楼上所说的这样做了,不行啊,那个testcookie函数返回true,为什么啊?  
   
  <HTML>  
  <HEAD>  
  <TITLE>主界面   </TITLE>  
  </HEAD>  
  <BODY   background="gray.jpg">  
  <img   src="star.jpg"   align="right"   border="0"   width="600"   >  
  <FORM   METHOD=POST   ACTION="vote.php">  
  <INPUT   TYPE="radio"   NAME="radio1"   value="0">张一<br>  
  <INPUT   TYPE="radio"   NAME="radio1"   value="1">张二<br>  
  <INPUT   TYPE="radio"   NAME="radio1"   value="2">张三<br>  
  <INPUT   TYPE="radio"   NAME="radio1"   value="3">张四<br>  
  <INPUT   TYPE="submit"   value="投票"   onsubmit="return   testcookie()"><br>  
  </FORM>  
  <?  
  function   testcookie()  
  {  
  setcookie("test",   true,   time()+1000)   ;  
  if(empty($_COOKIE['test']))  
  {  
                      echo   "<script   language='javascript'>   alert('不支持COOKIE');   </script>";  
      return   false;  
  }  
  return   ture;  
  }  
  ?>  
  <a   href="result.php">查看</a>  
  </BODY>  
  </HTML>  
  Top

12 楼wxq4100798(aa)回复于 2004-12-03 10:15:01 得分 3

呵呵,用IP+cookie记录Top

13 楼magicsnake(北极狐)回复于 2004-12-03 10:15:15 得分 0

嗯,研究一下Top

14 楼xuzuning(唠叨)回复于 2004-12-03 10:19:47 得分 2

你的写法是错误的  
  测试代码  
  <?php  
  setcookie('_my','_test_');   //设置cookie  
  ?>  
  <script>  
  //检查cookie是否被启用,cookie变量和值弄得很奇怪是为了唯一的识别  
  if(/_my=_test_/.test(document.cookie))  
      alert('支持cookie');  
  else  
      alert('不支持cookie');  
  </script>  
  Top

15 楼songsong2008()回复于 2004-12-03 10:41:53 得分 0

我弄错了,这样才对,不过还是不行,onsubmit根本没有调用testcookie函数?真是郁闷啊,为什么没有调用呢?  
   
  <HTML>  
  <HEAD>  
  <TITLE>主界面   </TITLE>  
  <?  
  function   testcookie()  
  {  
  setcookie("test",   true,   time()+1000)   ;  
  if(empty($_COOKIE['test']))  
  {  
                      echo   "<script   language='javascript'>   alert('不支持COOKIE');   </script>";  
      return   false;  
  }  
  return   true;  
  }  
  ?>  
   
  </HEAD>  
  <BODY   background="gray.jpg">  
  <img   src="star.jpg"   align="right"   border="0"   width="600"   >  
  <FORM   METHOD=POST   ACTION="vote.php"   onsubmit="testcookie()">  
  <INPUT   TYPE="radio"   NAME="radio1"   value="0">张一<br>  
  <INPUT   TYPE="radio"   NAME="radio1"   value="1">张二<br>  
  <INPUT   TYPE="radio"   NAME="radio1"   value="2">张三<br>  
  <INPUT   TYPE="radio"   NAME="radio1"   value="3">张四<br>  
  <INPUT   TYPE="submit"   value="投票"><br>  
  </FORM>  
  <a   href="result.php">查看</a>  
  </BODY>  
  </HTML>  
  Top

16 楼songsong2008()回复于 2004-12-03 10:46:43 得分 0

xuzuning(唠叨)的这一句不是很清楚  
  if(/_my=_test_/.test(document.cookie))  
  那两个/代表什么意思?转义?  
  =又代表什么意思?不是==吗?Top

17 楼isline(缘清)回复于 2004-12-03 10:52:40 得分 2

用cookie也不能防止恶意投票啊,他可以先访问你上面提到的投票界面页,在你检测cookie的事件完成后,他再到cookie的文件夹清空所有cookie,然后将该文件夹NTFS权限deny掉,再在你的頁麵中找到你处理投票的页面,就是你<FORM   METHOD=POST   ACTION="vote.php">中vote.php页,然后自己写一个简单的html页面,每5秒页面自动刷新一次,每一次刷新自动提交表单,这都是很简单的html代码,这样就破解了你的思路,因为你的检测cookie页和投票处理页面是分開的,上述方法先让你建立并检测cookie,然后再禁用cookie,再刷票。所以最安全的办法就是记录ip。  
   
  我写投票程序除非我自己想留后门,不然是不会用cookie的。  
  Top

18 楼xuzuning(唠叨)回复于 2004-12-03 10:53:20 得分 0

“onsubmit根本没有调用testcookie函数”  
  onsubmit只能调用js的函数,而你的testcookie是php函数。当然是不行了  
   
  if(/_my=_test_/.test(document.cookie))  
  这句js语句看不懂吗?  
  他是检查在document.cookie是否包含串“_my=_test_”Top

19 楼songsong2008()回复于 2004-12-04 12:32:55 得分 0

isline(缘清)  
  不要用保存IP的方法  
  用session可不可以解决这个问题?Top

20 楼songsong2008()回复于 2004-12-04 17:18:25 得分 0

记录IP是不是有两种方法啊,一种是存sesion,一种是在数据库里存ip?Top

21 楼loveconan(放牛娃娃)回复于 2004-12-05 02:19:42 得分 0

如果200人用同一个IP呢Top

22 楼isline(缘清)回复于 2004-12-06 11:06:36 得分 2

songsong2008:  
  isline(缘清)  
  不要用保存IP的方法  
  用session可不可以解决这个问题?  
   
  Session只要关闭浏览器就没了。所以Session无法完成你的功能。  
  目前主流使用Cookie,但是要绝对公平只能记录IP。  
  200人一个IP也没办法,但是即使这样,也不会对公平性有影响,因为记录IP会影响票数减少,但是票数大家一起少。Top

相关问题

  • 怎么用JavaScript语句实现控件的禁用
  • 请教这个asp语句如何改为php语句?
  • php的update语句怎么写?
  • mysql4.1.10与php的连接语句?
  • 求php更新datetime字段的语句
  • 需php更新clob字段的语句
  • php+mysql,求一个sql语句???
  • PHP的SQL语句可以有多长?
  • mysql与php编程,sql语句的引号问题?
  • 请教下面语句在PHP中的意思?

关键词

得分解答快速导航

  • 帖主:songsong2008
  • turtlevan
  • syre
  • zhiin
  • surfchen
  • xuzuning
  • wxq4100798
  • xuzuning
  • isline
  • isline

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo