if(isset($_COOKIE['COOKIE_IP'])) exit();可能你localhost上register_globals = On而server上是off,
off的话,$COOKIE_IP不是你cookie的变量名。

解决方案 »

  1.   

    if(isset($COOKIE_IP)) exit();
    setcookie("COOKIE_IP",$HTTP_SERVER_VARS['REMOTE_ADDR'],time()+86400);===>if(isset($HTTP_COOKIE_VARS['COOKIE_IP'])) exit();
    setcookie("COOKIE_IP",$HTTP_SERVER_VARS['REMOTE_ADDR'],time()+86400);使用统一的表述方式,已排除设置引起的麻烦
      

  2.   

    if (!defined('ESP_BASE'))
    define('ESP_BASE', dirname(dirname(__FILE__)) .'/'); $CONFIG = ESP_BASE . 'admin/phpESP.ini.php';
    if(!file_exists($CONFIG)) {
    echo("<b>FATAL: Unable to open config file Aborting.</b>");
    exit;
    }
    if(!extension_loaded('mysql')) {
    echo('<b>FATAL: Mysql extension not loaded. Aborting.</b>');
    exit;
    }
    require_once($CONFIG);

    esp_init_db();

    $_name = '';
    $_title = '';
    $_css = '';
    if (isset($HTTP_GET_VARS['name'])) {
    $_name = _addslashes($HTTP_GET_VARS['name']);
    unset($HTTP_GET_VARS['name']);
    $HTTP_SERVER_VARS['QUERY_STRING'] =
    ereg_replace('(^|&)name=[^&]*&?', '', $HTTP_SERVER_VARS['QUERY_STRING']);
    } if (!empty($_name)) {
             $_sql = "SELECT id,title,theme FROM survey WHERE name = '$_name'";
             if ($_result = mysql_query($_sql)) {
                 if (mysql_num_rows($_result) > 0)
                     list($sid, $_title, $_css) = mysql_fetch_row($_result);
                 mysql_free_result($_result);
             }
             unset($_sql);
             unset($_result);
    }    // call the handler-prefix once $sid is set to handle
        // authentication / authorization
    include($ESPCONFIG['handler_prefix']); if (empty($_name) && isset($sid) && $sid) {
            $_sql = "SELECT title,theme FROM survey WHERE id = '$sid'";
            if ($_result = mysql_query($_sql)) {
                if (mysql_num_rows($_result) > 0){
                    list($_title, $_css) = mysql_fetch_row($_result);
                }
                mysql_free_result($_result);
            }
            unset($_sql);
            unset($_result);
    }?>
    <html>
    <head><title><?php echo($_title); ?></title>
    <?php
        if (!empty($_css)) {
        echo('<link rel="stylesheet" href="'. $GLOBALS['ESPCONFIG']['css_url'].$_css ."\" type=\"text/css\">\n");
        }
        unset($_css);
    ?>
    </head>
    <body>
    <?php
    unset($_name);
    unset($_title);
    include($ESPCONFIG['handler']);
    ?>
    </body>
    </html>
                                以上是 servey.php 
    ********************************************************************************//*******************************************************************************
    if(isset($HTTP_COOKIE_VARS['COOKIE_IP']))
    {
    echo " Error !!! Please wait 13 min ... ";
    exit();
    }
    setcookie("COOKIE_IP",$HTTP_SERVER_VARS['REMOTE_ADDR'],time()+13);
    //*******************************************************************************
        if (defined('ESP-HANDLER-PREFIX'))
            return;    define('ESP-HANDLER-PREFIX', true);    if (!defined('ESP_BASE'))
            define('ESP_BASE', dirname(dirname(__FILE__)) .'/'); //取前两级的路径名即: phpESP-1.6.1    require_once(ESP_BASE . '/admin/phpESP.ini.php');
        require_once($ESPCONFIG['include_path']."/funcs".$ESPCONFIG['extension']); //包括支持文件 phpESP.ini.php 、 .inc     $GLOBALS['errmsg'] = '';    if(isset($HTTP_GET_VARS['sid'])) { //GET 传递过来的 'sid' 存在 显示错误信息.
            $GLOBALS['errmsg'] = mkerror(_('Error processing survey: Security violation.'));
            return;
        }    if(isset($HTTP_GET_VARS['results']) || isset($HTTP_POST_VARS['results'])) { //GET 传递过来的 'sid' 存在 显示错误信息.
            $GLOBALS['errmsg'] = mkerror(_('Error processing survey: Security violation.'));
            return;
        }    if (isset($sid) && !empty($sid))
            $sid = intval($sid); //将 $sid 转化为整型.
        else if (isset($HTTP_POST_VARS['sid']) && !empty($HTTP_POST_VARS['sid']))
            $sid = intval($HTTP_POST_VARS['sid']);    if(!isset($sid) || empty($sid)) { //不存在 $sid 或者 $sid 为空.
            $GLOBALS['errmsg'] = mkerror(_('Error processing survey: Survey not specified.'));
            return;
        }    if(empty($HTTP_POST_VARS['userid'])) {
            // find remote user id (takes the first non-empty of the following)
            //  1. a GET variable named 'userid'
            //  2. the REMOTE_USER set by HTTP-Authentication
            //  3. the query string
            //  4. the remote ip address
            if (!empty($HTTP_GET_VARS['userid'])) {
                $HTTP_POST_VARS['userid'] = $HTTP_GET_VARS['userid'];
            } elseif(!empty($HTTP_SERVER_VARS['REMOTE_USER'])) {
                $HTTP_POST_VARS['userid'] = $HTTP_SERVER_VARS['REMOTE_USER'];
            } elseif(!empty($HTTP_SERVER_VARS['QUERY_STRING'])) {
                $HTTP_POST_VARS['userid'] = urldecode($HTTP_SERVER_VARS['QUERY_STRING']); //解码 'QUERY_STRING'
            } else {
                $HTTP_POST_VARS['userid'] = $HTTP_SERVER_VARS['REMOTE_ADDR']; //将当前 IP 赋值给 'userid'
            }
        }    if(empty($HTTP_POST_VARS['referer'])) //判断 '提交值' 
            $HTTP_POST_VARS['referer'] = isset($HTTP_SERVER_VARS['HTTP_REFERER']) ?
                $HTTP_SERVER_VARS['HTTP_REFERER'] : '';    if (empty($HTTP_POST_VARS['rid']))
            $HTTP_POST_VARS['rid'] = '';
        else
            $HTTP_POST_VARS['rid'] = intval($HTTP_POST_VARS['rid']) ?
                    intval($HTTP_POST_VARS['rid']) : '';    if($ESPCONFIG['auth_response']) { //判断 '授权相应'
            // check for authorization on the survey
            require_once($ESPCONFIG['include_path']."/lib/espauth".$ESPCONFIG['extension']);
            $espuser = ''; $esppass = '';
            if (isset($HTTP_SERVER_VARS['PHP_AUTH_USER']))
                $espuser = $HTTP_SERVER_VARS['PHP_AUTH_USER'];
            if (isset($HTTP_SERVER_VARS['PHP_AUTH_PW']))
                $esppass = $HTTP_SERVER_VARS['PHP_AUTH_PW'];        if(!survey_auth($sid, addslashes($espuser), addslashes($esppass))) //将 $espuser 和 $esppass 加上斜线以便用来做数据库查询.
                return;        if (auth_get_option('resume')) {
                $HTTP_POST_VARS['rid'] = auth_get_rid($sid, addslashes($espuser),
                        $HTTP_POST_VARS['rid']);            if (!empty($HTTP_POST_VARS['rid']) && (empty($HTTP_POST_VARS['sec']) ||
                        intval($HTTP_POST_VARS['sec']) < 1))
                {
                    $HTTP_POST_VARS['sec'] = response_select_max_sec($sid,
                            $HTTP_POST_VARS['rid']);
                }
            }
        }    if (empty($HTTP_POST_VARS['sec']))
            $HTTP_POST_VARS['sec'] = 1;
        else
            $HTTP_POST_VARS['sec'] = (intval($HTTP_POST_VARS['sec']) > 0) ?
                    intval($HTTP_POST_VARS['sec']) : 1;    define('ESP-AUTH-OK', true);?>                                 以上是 handler-prefix.php
    *******************************************************************************
      

  3.   

    $COOKIE_IP=$_COOKIE['COOKIE_IP'];
    echo $COOKIE_IP;//看看有没有值
       if(isset($COOKIE_IP)) exit();
        setcookie("COOKIE_IP",$HTTP_SERVER_VARS['REMOTE_ADDR'],time()+86400);
    要学会调试!!!
      

  4.   

    if (!defined('ESP_BASE'))
    define('ESP_BASE', dirname(dirname(__FILE__)) .'/'); require_once(ESP_BASE . '/admin/phpESP.ini.php');
    require_once($ESPCONFIG['include_path']."/funcs".$ESPCONFIG['extension']);
    require_once($ESPCONFIG['handler_prefix']);
    if(!defined('ESP-AUTH-OK')) {
    if (!empty($GLOBALS['errmsg']))
    echo($GLOBALS['errmsg']);
    return;
    }
        
        esp_init_db(); if (empty($HTTP_POST_VARS['referer']))
    $HTTP_POST_VARS['referer'] = ''; // show results instead of show survey
    // but do not allow getting results from URL or FORM
    if(isset($results) && $results) {
    // small security issue here, anyone could pick a QID to crossanalyze
    survey_results($sid,$precision,$totals,$qid,$cids);
    return;
    } // else draw the survey 否则 提取调查
    $sql = "SELECT status, name FROM survey WHERE id='${sid}'";
    $result = mysql_query($sql);
        if ($result && mysql_num_rows($result) > 0)
         list ($status, $name) = mysql_fetch_row($result);
        else
            $status = 0; if($status & ( STATUS_DONE | STATUS_DELETED )) {
    echo(mkerror(_('Error processing survey: Survey is not active.')));
    return;
    }
    if(!($status & STATUS_ACTIVE)) {
    if(!(isset($test) && $test && ($status & STATUS_TEST))) {
    echo(mkerror(_('Error processing survey: Survey is not active.')));
    return;
    }
    }    if ($HTTP_POST_VARS['referer'] == $ESPCONFIG['autopub_url'])
            $HTTP_POST_VARS['referer'] .= "?name=$name"; $num_sections = survey_num_sections($sid); $msg = ''; $action = 'http://' . $HTTP_SERVER_VARS['HTTP_HOST'] . $HTTP_SERVER_VARS['PHP_SELF'];
    if (!empty($HTTP_SERVER_VARS['QUERY_STRING']))
    $action .= "?" . $HTTP_SERVER_VARS['QUERY_STRING']; if(!empty($HTTP_POST_VARS['submit'])) {
    $msg = response_check_required($sid,$HTTP_POST_VARS['sec']);
    if(empty($msg)) {
                if ($ESPCONFIG['auth_response'] && auth_get_option('resume'))
                    response_delete($sid, $HTTP_POST_VARS['rid'], $HTTP_POST_VARS['sec']);
    $HTTP_POST_VARS['rid'] = response_insert($sid,$HTTP_POST_VARS['sec'],$HTTP_POST_VARS['rid']);
    response_commit($HTTP_POST_VARS['rid']);
    response_send_email($sid,$HTTP_POST_VARS['rid']);
    goto_thankyou($sid,$HTTP_POST_VARS['referer']);
    return;
    }
    } if(!empty($HTTP_POST_VARS['resume']) && $ESPCONFIG['auth_response'] && auth_get_option('resume')) {
            response_delete($sid, $HTTP_POST_VARS['rid'], $HTTP_POST_VARS['sec']);
    $HTTP_POST_VARS['rid'] = response_insert($sid,$HTTP_POST_VARS['sec'],$HTTP_POST_VARS['rid']);
            if ($action == $ESPCONFIG['autopub_url'])
         goto_saved("$action?name=$name");
            else
                goto_saved($action);
    return;
    } if(!empty($HTTP_POST_VARS['next'])) {
    $msg = response_check_required($sid,$HTTP_POST_VARS['sec']);
    if(empty($msg)) {
                if ($ESPCONFIG['auth_response'] && auth_get_option('resume'))
                    response_delete($sid, $HTTP_POST_VARS['rid'], $HTTP_POST_VARS['sec']);
    $HTTP_POST_VARS['rid'] = response_insert($sid,$HTTP_POST_VARS['sec'],$HTTP_POST_VARS['rid']);
    $HTTP_POST_VARS['sec']++;
    }
    }

    if (!empty($HTTP_POST_VARS['prev']) && $ESPCONFIG['auth_response'] && auth_get_option('navigate')) {
    if(empty($msg)) {
                if (auth_get_option('resume'))
                    response_delete($sid, $HTTP_POST_VARS['rid'], $HTTP_POST_VARS['sec']);
    $HTTP_POST_VARS['rid'] = response_insert($sid,$HTTP_POST_VARS['sec'],$HTTP_POST_VARS['rid']);
    $HTTP_POST_VARS['sec']--;
    }
    }
        
        if ($ESPCONFIG['auth_response'] && auth_get_option('resume'))
            response_import_sec($sid, $HTTP_POST_VARS['rid'], $HTTP_POST_VARS['sec']);

    ?>
    <script language="JavaScript">
    <!-- // Begin <?php // This should really go into <head> tag ?>function other_check(name)
    {
      other = name.split("_");
      var f = document.phpesp_response;
      for (var i=0; i<=f.elements.length; i++) {
        if (f.elements[i].value == "other_"+other[1]) {
          f.elements[i].checked=true;
          break;
        }
      }
    }
    // End -->
    </script>
    <form method="post" name="phpesp_response" action="<?php echo($action); ?>">
    <input type="hidden" name="referer" value="<?php echo htmlspecialchars($HTTP_POST_VARS['referer']); ?>">
    <input type="hidden" name="userid" value="<?php echo($HTTP_POST_VARS['userid']); ?>">
    <input type="hidden" name="sid" value="<?php echo($sid); ?>">
    <input type="hidden" name="rid" value="<?php echo($HTTP_POST_VARS['rid']); ?>">
    <input type="hidden" name="sec" value="<?php echo($HTTP_POST_VARS['sec']); ?>">
    <?php survey_render($sid,$HTTP_POST_VARS['sec'],$msg); ?>
    <?php
    if ($ESPCONFIG['auth_response']) {
    if (auth_get_option('navigate') && $HTTP_POST_VARS['sec'] > 1) { ?>
    <input type="submit" name="prev" value="Previous Page">
    <?php
    }
    if (auth_get_option('resume')) { ?>
    <input type="submit" name="resume" value="Save">
    <?php
    }
    }
    if($HTTP_POST_VARS['sec'] == $num_sections) { ?>
    <input type="submit" name="submit" value="Submit Survey">
    <?php } else { ?>
    <input type="submit" name="next" value="Next Page">
    <?php } ?>
    </form>                                 以上是 handler.php
    *******************************************************************************    我将 COOKIE 放在了 handler-prefix.php 的最上面。    可是运行的时候并不是我想要的效果。    我是想控制两次投票之间的时间。    现在变成 页面转换之间都需要等 COOKIE 失效。    谁能帮帮我??? 代码应该加在什么地方???    还有我想控制同一个 IP 的用户在一天的时间里面 只能投票一次。    怎么实现???
      

  5.   

    setcookie还有一个path的参数,如果你不设path,则在上级目录设置的cookie,下级目录不可以改变其值,看看是不是这个问题引起的
      

  6.   


        谢谢~!    好像不是这个问题,因为每次执行页面切换的时候都要调用 handler-prefix.php 所以我加到这个上面出现了这个问题。    我现在想知道哪个地方只针对投票页面的。    也就是说将 COOKIE 放在哪个地方只实现控制两次投票之间的时间间隔。    现在变成了每只向一次页面‘跳转’就需要等 COOKIE 失效。    谁能帮忙看看呢? 真的很重要,也很急。
      

  7.   


        为什么没有人能帮我呢?    这个对我很重要的,真的~!    我就是想知道因该将这两个 COOKIE 添加到代码的什么地方    大家帮帮忙吧~!
      

  8.   


        我现在已经写好啦 测试好的 功能模块 就是用来控制投票时间 和 相同 IP 的用户在一天之内只能投票一次。    可是还是没有能够找到合适的添加地方。    总是在页面跳转的时候检测 COOKIE     弄得我都快疯啦~!!!    有没有人能帮帮我呢~???    我就是想知道那个地方是控制两次投票的地方    希望大家指点一下我啦~!!! 十分感谢
      

  9.   

    我觉得你判断cooky是否存在很像没有什么意义。你要判断的是这个ip是否投过票。你需要的是建立起ip与透过票的关系。
      

  10.   


        这个是两个功能:    第一个:使用 COOKIE 控制两次投票之间的时间。
        第二个:使用 IP 效验 判断是否为同一个用户重复投票。    我现在最大的问题不是这两个功能,而是这两个功能应该添加到代码的什么地方。    这个调查没有投票页面(是直接从 数据库 中取出激活的投票数据 来生成页面)    所以我找不到应该添加的合适地方    如果谁认为能够解决这个问题的话,帮帮我     这个对我来说实在是太困难啦~!    郁闷死啦……