2012-01-18 95 views
-1

好吧,我做了一个小脚本,其中设置一个$ _SESSION [$ _ SERVER ['REMOTE_ADDR']]的问题,它不适用于机器人,如果我去我的网页,并使页面刷新它工作,但它不适用于机器人。PHP会话和机器人检测

当我在会话目录看,我看到的会议文件1000,与它的IPS,但会话变量始终是= ,所以我的想法,当机器人连接到我的网站,它总是套一个新的会话,而不是增加会话变量。任何想法如何我可以解决这个问题。这里是我的代码:

<?php 
     session_start(); 
     if(isset($_SESSION[$_SERVER['REMOTE_ADDR']])){ 

      $_SESSION[$_SERVER['REMOTE_ADDR']]++; 

      if($_SESSION[$_SERVER['REMOTE_ADDR']] % 2 == 0) { 
      // DO SOMETHING 
} 

     } else { 
      $_SESSION[$_SERVER['REMOTE_ADDR']] = 1; 
     } 
    ?> 

编辑JON:

该脚本上面大干快上我的网站的所有网页执行:

会话变量:被建那么$ _ SERVER [” REMOTE_ADDR']例如是= 127.0.0.1

所以我的SESSION变量将是$ _SESSION ['127.0.0.1'];

所以当IP去,到我的网站的x,y的其他页面,1,2,3,5的$ _SESSION [ '127.0.0.1']变量获得的1

增量但是这不适用于机器人。

乔恩我想:SESSION是serverside,所以瓦尔得到存储在服务器上,我不想设置任何cookie。

+0

认为你错过了一点。 (即你看到的) – psynnott 2012-01-18 16:15:50

+0

你的机器人将需要尊重饼干的会议工作。 – 2012-01-18 16:16:51

+0

@MichaelMior我没有做一个机器人,我想抓住机器人,它来到我的网站。 – user1015314 2012-01-18 16:19:50

回答

2

你不能“修复”这一点。如果有人想要抓取您网站上不需要需要会话处于特定状态(例如登录用户)的部分,那么他们不会打扰存储您的会话ID cookie并将其返回给您。没有会话ID,每次他们看起来像是一个新的会话给你。

你究竟想在这里完成什么?

+0

乔恩,该会话在所有页面上生成,我认为会话是服务器端。请检查我的问题编辑。 – user1015314 2012-01-18 16:24:34

+0

@ user1015314:会话的* data *存储在服务器端,但客户端会告诉您哪个会话是他们的cookie。您应该阅读HTTP会话的工作方式,因为您似乎有一些误解。 – Jon 2012-01-18 16:36:43

1

您遇到的问题来自您为其他问题而发明的解决方案。最初的问题是什么?为什么你需要一个会话变量? // DO SOMETHING会发生什么?

只需don't依靠cookie。它不会工作。