Yaf中地图路由下delimiter的有关问题
Yaf中map路由下delimiter的问题
由于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行):
<span style="color: #008080;"> 1</span> <span style="color: #0000ff;">if</span> (Z_TYPE_P(delimer) == <span style="color: #008080;">IS_STRING</span><span style="color: #008080;"> 2</span> &&<span style="color: #000000;"> Z_STRLEN_P(delimer)) {</span><span style="color: #008080;"> 3</span> <span style="color: #0000ff;">if</span> ((query_str = <span style="color: #008080;">strstr</span>(req_uri, Z_STRVAL_P(delimer))) != <span style="color: #0000ff;">NULL</span><span style="color: #008080;"> 4</span> && *(query_str - 1) == '/'<span style="color: #000000;">) {</span><span style="color: #008080;"> 5</span> tmp =<span style="color: #000000;"> req_uri;</span><span style="color: #008080;"> 6</span> rest = query_str +<span style="color: #000000;"> Z_STRLEN_P(delimer);</span><span style="color: #008080;"> 7</span> <span style="color: #0000ff;">if</span> (*rest == '\0'<span style="color: #000000;">) {</span><span style="color: #008080;"> 8</span> req_uri = estrndup(req_uri, query_str -<span style="color: #000000;"> req_uri);</span><span style="color: #008080;"> 9</span> query_str = <span style="color: #0000ff;">NULL</span><span style="color: #000000;">;</span><span style="color: #008080;">10</span> <span style="color: #000000;"> efree(tmp);</span><span style="color: #008080;">11</span> } <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> (*rest == '/'<span style="color: #000000;">) {</span><span style="color: #008080;">12</span> req_uri = estrndup(req_uri, query_str -<span style="color: #000000;"> req_uri);</span><span style="color: #008080;">13</span> query_str =<span style="color: #000000;"> estrdup(rest);</span><span style="color: #008080;">14</span> <span style="color: #000000;"> efree(tmp);</span><span style="color: #008080;">15</span> } <span style="color: #0000ff;">else</span><span style="color: #000000;"> {</span><span style="color: #008080;">16</span> query_str = <span style="color: #0000ff;">NULL</span><span style="color: #000000;">;</span><span style="color: #008080;">17</span> <span style="color: #000000;"> }</span><span style="color: #008080;">18</span> } <span style="color: #0000ff;">else</span><span style="color: #000000;"> {</span><span style="color: #008080;">19</span> query_str = <span style="color: #0000ff;">NULL</span><span style="color: #000000;">;</span><span style="color: #008080;">20</span> }
通过delimer获取了query_str后,判断delimer的前一个字符是"/"的情况,却没有判断不是的情况,导致不符合/aaa/bbb/[delimer]/key1/param1/...形式的urk被截断成req_uri和query_str去解析,所以程序出现了问题。
感谢鸟哥快速的答复!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 문서에서는 끌어서 놓기를 통해 PowerQuery에서 여러 열의 순서를 바꾸는 방법을 보여줍니다. 다양한 소스에서 데이터를 가져올 때 열의 순서가 원하는 순서가 아닌 경우가 많습니다. 열을 다시 정렬하면 분석 또는 보고 요구 사항에 맞는 논리적 순서로 열을 정렬할 수 있을 뿐만 아니라 데이터의 가독성이 향상되고 필터링, 정렬, 계산 수행 등의 작업 속도가 빨라집니다. Excel에서 여러 열을 다시 정렬하는 방법은 무엇입니까? Excel에서 열을 재정렬하는 방법에는 여러 가지가 있습니다. 열 머리글을 선택하고 원하는 위치로 끌기만 하면 됩니다. 그러나 이 접근 방식은 많은 열이 포함된 대규모 테이블을 처리할 때 번거로울 수 있습니다. 열을 보다 효율적으로 다시 정렬하려면 향상된 쿼리 편집기를 사용할 수 있습니다. 쿼리 개선

참고: location의 루트 및 aliasroot 명령은 검색 루트를 루트가 설정한 디렉터리로 설정합니다. 즉, uri는 잘리지 않습니다. 대신 원본 uri는 파일을 찾기 위해 해당 디렉터리로 이동하는 데 사용됩니다. aias 명령은 일치하는 uri를 잘라낸 다음 별칭으로 설정된 경로와 나머지 uri를 하위 경로로 사용하여 해당 위치에서 Proxy_pass의 uri를 찾습니다. /"이면 일치하는 URI가 잘립니다. 꼬리가 "/"가 아닌 경우 Proxy_pass의 URL에 uri가 포함되어 있으면 일치하는 URI가 잘리지 않습니다.

ReactQuery 데이터베이스 플러그인: 데이터 가져오기 및 내보내기를 구현하는 방법에는 특정 코드 예제가 필요합니다. 프론트 엔드 개발에서 ReactQuery가 널리 적용됨에 따라 점점 더 많은 개발자가 이를 사용하여 데이터를 관리하기 시작했습니다. 실제 개발에서는 데이터를 로컬 파일로 내보내거나 로컬 파일의 데이터를 데이터베이스로 가져와야 하는 경우가 많습니다. 이러한 기능을 보다 편리하게 구현하기 위해서는 ReactQuery 데이터베이스 플러그인을 사용할 수 있습니다. ReactQuery 데이터베이스 플러그인은 일련의 메소드를 제공합니다.

이 문서에서는 PowerQuery를 사용하여 데이터를 행으로 분할하는 방법을 소개합니다. 다른 시스템이나 소스에서 데이터를 내보낼 때 데이터가 여러 값을 결합하는 셀에 저장되는 상황이 발생하는 것이 일반적입니다. PowerQuery를 사용하면 이러한 데이터를 행으로 쉽게 분할하여 데이터를 더 쉽게 처리하고 분석할 수 있습니다. 이는 사용자가 Excel의 규칙을 이해하지 못하고 실수로 셀에 여러 데이터를 입력한 경우 또는 다른 소스에서 복사/붙여넣을 때 데이터 형식이 올바르게 지정되지 않은 경우 발생할 수 있습니다. 이 데이터를 처리하려면 분석 또는 보고를 위한 정보를 추출하고 구성하기 위한 추가 단계가 필요합니다. PowerQuery에서 데이터를 분할하는 방법은 무엇입니까? PowerQuery 변환은 단어와 같은 다양한 요소를 기반으로 할 수 있습니다.

1유니코드 컴퓨터 저장의 기본 단위는 8비트로 구성된 바이트(byte)이다. 영어는 26개의 문자와 여러 개의 기호로만 구성되므로 영어 문자를 바이트 단위로 직접 저장할 수 있습니다. 하지만 다른 언어(예: 중국어, 일본어, 한국어 등)는 문자 수가 많기 때문에 인코딩에 여러 바이트를 사용해야 합니다. 컴퓨터 기술이 확산됨에 따라 비라틴어 문자 인코딩 기술이 계속 발전하고 있지만 여전히 두 가지 주요 제한 사항이 있습니다. 다국어 지원이 불가능합니다. 한 언어의 인코딩 방식을 다른 언어에서 사용할 수 없으며 통일된 표준이 없습니다. 예를 들어 중국어에는 GBK, GB2312, GB18030 등과 같은 여러 인코딩 표준이 있습니다. 인코딩 방법이 통일되어 있지 않기 때문에 개발자는 서로 다른 인코딩 간에 전환해야 하며 많은 오류가 필연적으로 발생합니다.

__str__과 __repr__의 유사점과 차이점은 무엇입니까? 우리 모두는 문자열 표현을 알고 있습니다. Python의 내장 함수인 repr()은 식별을 용이하게 하기 위해 문자열 형식으로 객체를 표현할 수 있습니다. 이것이 "문자열 표현"입니다. repr()은 특수 메소드 __repr__을 통해 객체의 문자열 표현을 얻습니다. __repr__이 구현되지 않은 경우 벡터의 인스턴스를 콘솔에 인쇄하면 결과 문자열이 구현될 수 있습니다. >>>classExample:pass>>>print(str(Example()))>>>

1. 배경 소개 기업 디지털화는 인공지능, 빅데이터, 클라우드 컴퓨팅 등 차세대 디지털 기술을 활용하여 기업의 비즈니스 모델을 변화시켜 기업 비즈니스의 새로운 성장을 촉진하는 것을 의미합니다. . 기업 디지털화에는 일반적으로 비즈니스 운영의 디지털화와 기업 관리의 디지털화가 포함됩니다. 이러한 공유는 주로 기업 관리 수준의 디지털화를 도입합니다. 간단히 말해서 정보 디지털화는 디지털 방식으로 정보를 읽고, 쓰고, 저장하고, 전송하는 것을 의미합니다. 이전의 종이 문서에서 현재의 전자 문서, 온라인 협업 문서에 이르기까지 정보의 디지털화는 오늘날 사무실의 새로운 표준이 되었습니다. 현재 Alibaba는 비즈니스 협업을 위해 DingTalk Documents 및 Yuque Documents를 사용하고 있으며 온라인 문서 수가 2천만 개 이상에 도달했습니다. 또한 많은 기업이 내부적으로

1. 소개 위치 지시문은 사전 정의된 URL 일치 규칙에 따라 사용자가 보낸 요청을 수신하고 일치 결과를 기반으로 요청을 백엔드 서버로 전달하여 거부하고 반환합니다. 403. 404, 500 오류 처리 등 2. 위치 명령 구문 location[=|~|~*|^~|@]/uri/{…} 또는 location@name{…} 3. URI 일치 모드 위치 명령은 두 가지 일치 모드로 구분됩니다. 1> 일반 문자 문자열 일치: =로 시작하거나 선행 문자(~) 없이 시작하는 규칙 2> 일반 일치: ~ 또는 ~*로 시작하는 것은 일반 일치를 나타내고, ~*
