• Discuz 学习笔记一 :getgdc 和get_client_ip


    1. Getgdc函数

      discuz有一个超级变量的自定义函数:

       

      function getgpc($k, $type='GP') {

          $type = strtoupper($type);

          switch($type) {

              case 'G': $var = &$_GET; break;

              case 'P': $var = &$_POST; break;

              case 'C': $var = &$_COOKIE; break;

              default:

                  if(isset($_GET[$k])) {

                      $var = &$_GET;

                  } else {

                      $var = &$_POST;

                  }

                  break;

          }

       

          return isset($var[$k]) ? $var[$k] : NULL; //注意这里没有设置的时候返回的是NULL.

      }

       

      这里我讲一下,比如你要获取$_GET['odaboy']的值,那么你只要这么调用getgpc('odaboy','G'),同时你也可以这样getgpc('odaboy')这种默认接受GET和POST,

      这个函数在function_core.php文件里面

       

    2. 获取ip地址

          private function _get_client_ip() {

              $ip = $_SERVER['REMOTE_ADDR'];

              if (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) {

                  $ip = $_SERVER['HTTP_CLIENT_IP'];

              } elseif(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all('#d{1,3}.d{1,3}.d{1,3}.d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {

                  foreach ($matches[0] AS $xip) {

                      if (!preg_match('#^(10|172.16|192.168).#', $xip)) {

                          $ip = $xip;

                          break;

                      }

                  }

              }

              return $ip;

          }

       

      不过这样有风险,给了客户端伪造ip的机会。具体看这篇文章:

      http://www.cnblogs.com/kingthy/archive/2007/11/24/970783.html

  • 相关阅读:
    JavaScrip t将单词的字母按大小写间隔写出
    JavaScript将数组包含某字符串内容的项组成新数组
    JavaScript找出唯一不同的数字
    JavaScript将数组变成电话号码
    JavaScript数组查找是否包含某些字符串
    JavaScript 找出整数的约数
    Excel导出
    yii打印sql
    yii使用createCommand()增删改查
    yii 图片展示
  • 原文地址:https://www.cnblogs.com/time-is-life/p/3675626.html
Copyright © 2020-2023  润新知