2024国产成人精品免费视频|日本免费一区二区三区毛片|久久97超碰色中文字幕|亚洲天堂a中文字幕

thinkphp6通過param、get等獲取參數(shù)時多了一個url key解決方案

2022-05-24 13:10 欄目:技術開發(fā) 查看(5277)

把某個基于thinkphp5.0的項目遷移到thinkphp6,發(fā)現(xiàn)很多后臺提交環(huán)節(jié)都報錯了,原因在于進行提交的時候后臺接收到的參數(shù)多出了一個url key,而一些簡單的操作直接把收到的字段更新到數(shù)據(jù)表,就很可能報數(shù)據(jù)表字段不存在。

微信圖片_20220524125440

對于post操作,我們可以通過獲取post數(shù)據(jù),就沒有這個參數(shù)。但是如果通過param、get等方式獲取參數(shù)(實際上很多場景需要用到),就會多了上面那個參數(shù)。在不不過多修改源代碼的前提下如何快速過濾掉這個參數(shù)呢?下面提供兩種方式:

1、修改偽靜態(tài)配置文件

以apache為例,我們可以發(fā)現(xiàn)thinkphp5.0和thinkphp6的偽靜態(tài)配置文件.htaccess有一點不一樣,就是在最后一行不一樣。thinkphp5.0的默認.htaccess內(nèi)容如下:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>

而thinkphp6的默認.htaccess內(nèi)容如下:

<IfModule mod_rewrite.c>
 Options +FollowSymlinks -Multiviews
 RewriteEngine On
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>

如果實測可以知道,只要把老版本默認的.htaccess最后一行覆蓋thinkphp6默認的.htaccess的最后一行即可,也就是

RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]

改成

RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]

即可。

2、直接在應用中進行參數(shù)過濾

除了修改偽靜態(tài)配置文件,我們還可以通過手寫業(yè)務邏輯代碼快速過濾掉對應多余的key參數(shù)。由于這個老項目獲取項目是使用input助手函數(shù),下面我們就以input助手函數(shù)過濾為例。我們可以在app\Resquest.php添加如下代碼:

public function input(array $data = [], $name = '', $default = null, $filter = ''){
   $data = parent::input($data,$name,$default,$filter);
   if(is_array($data)){
      reset($data);
      $firstKey = key($data);
      if(substr_count($firstKey, '/')>0){ 
          array_shift($data);
      }
      return $data;
   }
   return $data;
}

當然也可以通過get、post、param等方式進行過濾,對應的代碼,可以參考vendor\topthink\framework\src\think\Request.php文件中對應方法,進行重寫來進行過濾;這個類文件是tp框架關于請求相關的核心類。

與我們的項目經(jīng)理聯(lián)系
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯(lián)網(wǎng)交流

轉(zhuǎn)載請注明出處:thinkphp6通過param、get等獲取參數(shù)時多了一個url key解決方案 - 微構(gòu)網(wǎng)絡
分享:
娱乐| 灵台县| 徐水县| 龙泉市| 商都县| 博白县| 兰坪| 太保市| 镇赉县| 房山区| 收藏| 正定县| 将乐县| 吴堡县| 新津县| 南充市| 荃湾区| 连州市| 安溪县| 永清县| 神农架林区| 吉林省| 吉木乃县| 屯门区| 鄂伦春自治旗| 将乐县| 鸡泽县| 会理县| 无锡市| 瓦房店市| 浙江省| 张家口市| 三门峡市| 鄂托克前旗| 清远市| 调兵山市| 呼伦贝尔市| 滦平县| 疏附县| 隆子县| 伊宁市|