Yaf中map路由下delimiter的問題,yafdelimiter_PHP教程

來源:互聯網
上載者:User

Yaf中map路由下delimiter的問題,yafdelimiter


  由於map路由下使用者請求的url會按照"/"分級對應到controllers下的目錄下的Controller上,action則預設為indexAction,所以想要實現/key1/param1/key2/param2這種形式進行傳參,就要通過delimiter來講url分割成req_uri和query_str兩個部分。

  在實踐中,定義了delimiter(儘管並沒有用到它的功能),這時,如果使用者的請求(更多的是爬蟲或掃站)無意中包含以下形式:/aaa/bbb[delimiter](xxx)?/key1/param1/key2/param2...,會造成程式崩潰。

  將這個問題提給鳥哥後,鳥哥迅速給出了修複(18~19行):

 1 if (Z_TYPE_P(delimer) == IS_STRING 2             && Z_STRLEN_P(delimer)) { 3         if ((query_str = strstr(req_uri, Z_STRVAL_P(delimer))) != NULL 4             && *(query_str - 1) == '/') { 5             tmp  = req_uri; 6             rest = query_str + Z_STRLEN_P(delimer); 7             if (*rest == '\0') { 8                 req_uri     = estrndup(req_uri, query_str - req_uri); 9                 query_str     = NULL;10                 efree(tmp);11             } else if (*rest == '/') {12                 req_uri     = estrndup(req_uri, query_str - req_uri);13                 query_str   = estrdup(rest);14                 efree(tmp);15             } else {16                 query_str = NULL;17             }18         } else {19             query_str = NULL;20         }

通過delimer擷取了query_str後,判斷delimer的前一個字元是"/"的情況,卻沒有判斷不是的情況,導致不符合/aaa/bbb/[delimer]/key1/param1/...形式的urk被截斷成req_uri和query_str去解析,所以程式出現了問題。

  感謝鳥哥快速的回覆!

http://www.bkjia.com/PHPjc/1035427.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1035427.htmlTechArticleYaf中map路由下delimiter的問題,yafdelimiter 由於map路由下使用者請求的url會按照"/"分級對應到controllers下的目錄下的Controller上,action則預設為in...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.