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

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



So richten Sie den Tastaturstart auf dem Motherboard von Gigabyte ein. Wenn es den Tastaturstart unterstützen muss, muss es sich um eine PS2-Tastatur handeln! ! Die Einstellungsschritte sind wie folgt: Schritt 1: Drücken Sie Entf oder F2, um das BIOS nach dem Booten aufzurufen, und rufen Sie den Advanced-Modus (Normal) des BIOS auf. Standardmäßig wechseln Sie in den EZ-Modus (Easy) des Motherboards Drücken Sie F7, um in den erweiterten Modus zu wechseln. Motherboards der ROG-Serie rufen standardmäßig den erweiterten Modus auf (zur Demonstration verwenden wir vereinfachtes Chinesisch). Schritt 2: Wählen Sie „Erweitert“ – „Erweiterte Energieverwaltung (APM)“. Suchen Sie die Option [Aufwecken durch PS2-Tastatur] Schritt 4: Diese Option ist standardmäßig deaktiviert. Nach dem Herunterziehen sehen Sie drei verschiedene Einstellungsoptionen: Drücken Sie die [Leertaste], um den Computer einzuschalten, und drücken Sie die Gruppe

1. Prozessor Bei der Auswahl einer Computerkonfiguration ist der Prozessor eine der wichtigsten Komponenten. Bei Spielen wie CS wirkt sich die Leistung des Prozessors direkt auf die Laufruhe und Reaktionsgeschwindigkeit des Spiels aus. Es wird empfohlen, Prozessoren der Intel Core i5- oder i7-Serie zu wählen, da diese über leistungsstarke Multi-Core-Verarbeitungsfunktionen und hohe Frequenzen verfügen und den hohen Anforderungen von CS problemlos gerecht werden. 2. Grafikkarte Die Grafikkarte ist einer der wichtigen Faktoren für die Spieleleistung. Bei Schießspielen wie CS wirkt sich die Leistung der Grafikkarte direkt auf die Klarheit und Glätte des Spielbildschirms aus. Es wird empfohlen, Grafikkarten der NVIDIA GeForce GTX-Serie oder der AMD Radeon RX-Serie zu wählen. Sie verfügen über hervorragende Grafikverarbeitungsfunktionen und eine hohe Bildratenausgabe und können ein besseres Spielerlebnis bieten

System76 hat kürzlich mit seiner Cosmic-Desktop-Umgebung für Aufsehen gesorgt, die voraussichtlich am 8. August mit der nächsten großen Alpha-Version von Pop!_OS auf den Markt kommt. Ein aktueller Beitrag zu X von System76-CEO Carl Richell hat jedoch darauf hingewiesen, dass die Cosmic DE Entwickler

Reihenfolge der SPDIFOUT-Verbindungsleitungen auf dem Motherboard. Ich bin kürzlich auf ein Problem bezüglich der Verdrahtungsreihenfolge der Drähte gestoßen. Ich habe online nachgesehen, dass 1, 2 und 4 Ausgang, +5 V und Masse entsprechen, während andere Informationen besagen, dass 1, 2 und 4 Ausgang, Masse und +5 V entsprechen. Am besten schauen Sie im Handbuch Ihres Motherboards nach. Wenn Sie das Handbuch nicht finden, können Sie es mit einem Multimeter messen. Suchen Sie zuerst nach der Erdung, dann können Sie die Reihenfolge der restlichen Verkabelung bestimmen. So schließen Sie die VDG-Verkabelung des Motherboards an. Wenn Sie die VDG-Verkabelung des Motherboards anschließen, müssen Sie ein Ende des VGA-Kabels an die VGA-Schnittstelle des Monitors und das andere Ende an die VGA-Schnittstelle der Grafikkarte des Computers anschließen. Bitte achten Sie darauf, es nicht an den VGA-Anschluss des Motherboards anzuschließen. Sobald die Verbindung hergestellt ist, können Sie es tun

Glodon Software ist ein Softwareunternehmen, das sich auf den Bereich der Gebäudeinformatisierung konzentriert. Seine Produkte werden häufig in allen Aspekten der Architekturplanung, des Baus und des Betriebs eingesetzt. Aufgrund der komplexen Funktionen und des großen Datenvolumens der Glodon-Software ist eine hohe Computerkonfiguration erforderlich. In diesem Artikel werden die Computerkonfigurationsempfehlungen von Glodon Software unter verschiedenen Aspekten erläutert, um den Lesern bei der Auswahl eines geeigneten Computerkonfigurationsprozessors zu helfen. Glodon Software erfordert bei der Durchführung von Architekturdesign, Simulation und anderen Vorgängen eine große Menge an Datenberechnungen und -verarbeitungen für den Prozessor sind höher. Es wird empfohlen, einen Multi-Core-Hochfrequenzprozessor zu wählen, z. B. die Intel i7-Serie oder die AMD Ryzen-Serie. Diese Prozessoren verfügen über eine starke Rechenleistung und Multi-Thread-Verarbeitungsfähigkeiten und können die Anforderungen der Glodon-Software besser erfüllen. Speicher Speicher beeinflusst die Datenverarbeitung

Apache Camel ist ein auf Enterprise Service Bus (ESB) basierendes Integrationsframework, das problemlos unterschiedliche Anwendungen, Dienste und Datenquellen integrieren kann, um komplexe Geschäftsprozesse zu automatisieren. ApacheCamel verwendet eine routenbasierte Konfiguration, um Integrationsprozesse einfach zu definieren und zu verwalten. Zu den Hauptmerkmalen von ApacheCamel gehören: Flexibilität: ApacheCamel kann problemlos in eine Vielzahl von Anwendungen, Diensten und Datenquellen integriert werden. Es unterstützt mehrere Protokolle, einschließlich HTTP, JMS, SOAP, FTP usw. Effizienz: ApacheCamel ist sehr effizient und kann eine große Anzahl von Nachrichten verarbeiten. Es verwendet einen asynchronen Nachrichtenmechanismus, der die Leistung verbessert. Erweiterbar

Um das Problem zu lösen, dass jQuery.val() nicht verwendet werden kann, sind spezifische Codebeispiele erforderlich. Für Front-End-Entwickler ist die Verwendung von jQuery eine der häufigsten Operationen. Unter diesen ist die Verwendung der .val()-Methode zum Abrufen oder Festlegen des Werts eines Formularelements eine sehr häufige Operation. In bestimmten Fällen kann jedoch das Problem auftreten, dass die Methode .val() nicht verwendet werden kann. In diesem Artikel werden einige gängige Situationen und Lösungen vorgestellt und spezifische Codebeispiele bereitgestellt. Problembeschreibung: Wenn Sie jQuery zum Entwickeln von Front-End-Seiten verwenden, treten manchmal Probleme auf

Optimieren der Leistung der Go-Sprachkarte In der Go-Sprache ist Karte eine sehr häufig verwendete Datenstruktur, die zum Speichern einer Sammlung von Schlüssel-Wert-Paaren verwendet wird. Allerdings kann die Kartenleistung bei der Verarbeitung großer Datenmengen beeinträchtigt werden. Um die Leistung der Karte zu verbessern, können wir einige Optimierungsmaßnahmen ergreifen, um die zeitliche Komplexität von Kartenoperationen zu reduzieren und dadurch die Ausführungseffizienz des Programms zu verbessern. 1. Kartenkapazität vorab zuweisen. Beim Erstellen einer Karte können wir die Anzahl der Kartenerweiterungen reduzieren und die Programmleistung verbessern, indem wir Kapazität vorab zuweisen. Im Allgemeinen wir
