现在的代码是:
require_once('DB/CUSTOMER.class.php');
$db_cst = & new DB_CUSTOMER($connection);
$customer = array();
$ccd = $request->getParameter('c');
$list = array('DB_HOST', 'DB_PORT', 'DB_USER', 'DB_PASS', 'DB_NAME', 'CUSTOMER_NAME', 'FTP_USER', 'FTP_PASS','IP_CHECK_FLG');
if (!$db_cst->select($customer, $ccd, $list)) {
$request->setError('LOGIN_ERR_INVALID_URL');
return false;
}
else{
if ($customer['IP_CHECK_FLG'] == 1) {        global $_SERVER;
         if (isset ($_SERVER["HTTP_X_FORWARDED_FOR"])) {
         $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
         }
          elseif (isset ($_SERVER["HTTP_CLIENT_IP"])) {
         $realip = $_SERVER["HTTP_CLIENT_IP"];
         } else {
         $realip = $_SERVER["REMOTE_ADDR"];
            }
             }
需要添加一段判断本地IP是否与字段IP_CHECK_LIST中的值是否相同,不相同则跳转到其他叶面
请各位老师指点

解决方案 »

  1.   


    function compare_IP(){
    //获取真实IP
    $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
    $user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"]; 
    //分割IP
    $ip_a_arr = split(".",$user_IP);//分割IP_CHECK_LIST
    $ip_b_arr = split(".",IP_CHECK_LIST);//相同与否的标志
    $flag = true;
        for($i=0; $i<4; $++){
           if($ip_a_arr[$i]!=$ip_b_arr[$i]){
             $flag = false;
             break;
        }
    }
    上面介绍上是大致的算法,具体要修改下,看行否
      

  2.   

    global $_SERVER;
            if (isset ($_SERVER["HTTP_X_FORWARDED_FOR"])) {
            $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
            }
          elseif (isset ($_SERVER["HTTP_CLIENT_IP"])) {
            $realip = $_SERVER["HTTP_CLIENT_IP"];
            } else {
            $realip = $_SERVER["REMOTE_ADDR"];
                } 
    这个能取到本地ip,然后后面的判断好
    if ($realip == $customer['IP_CHECK_LIST']){

    $a=1;
    }
    else {
    $a=0;
    }
    后则么在tpl里面判断,1的话给个框,0的话就正常显示
      

  3.   

    在smarty里是
    $smarty->assign('list',$a);
    $smarty->display('login.tpl');