Verzeichnisstruktur phpBB-3.1.0


Veröffentlicht
27.10.2014

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

RequestMatcher.php

Zuletzt modifiziert: 09.10.2024, 12:58 - Dateigröße: 3.71 KiB


001  <?php
002   
003  /*
004   * This file is part of the Symfony package.
005   *
006   * (c) Fabien Potencier <fabien@symfony.com>
007   *
008   * For the full copyright and license information, please view the LICENSE
009   * file that was distributed with this source code.
010   */
011   
012  namespace Symfony\Component\HttpFoundation;
013   
014  /**
015   * RequestMatcher compares a pre-defined set of checks against a Request instance.
016   *
017   * @author Fabien Potencier <fabien@symfony.com>
018   *
019   * @api
020   */
021  class RequestMatcher implements RequestMatcherInterface
022  {
023      /**
024       * @var string
025       */
026      private $path;
027   
028      /**
029       * @var string
030       */
031      private $host;
032   
033      /**
034       * @var array
035       */
036      private $methods = array();
037   
038      /**
039       * @var string
040       */
041      private $ips = array();
042   
043      /**
044       * @var array
045       */
046      private $attributes = array();
047   
048      /**
049       * @param string|null          $path
050       * @param string|null          $host
051       * @param string|string[]|null $methods
052       * @param string|string[]|null $ips
053       * @param array                $attributes
054       */
055      public function __construct($path = null, $host = null, $methods = null, $ips = null, array $attributes = array())
056      {
057          $this->matchPath($path);
058          $this->matchHost($host);
059          $this->matchMethod($methods);
060          $this->matchIps($ips);
061          foreach ($attributes as $k => $v) {
062              $this->matchAttribute($k, $v);
063          }
064      }
065   
066      /**
067       * Adds a check for the URL host name.
068       *
069       * @param string $regexp A Regexp
070       */
071      public function matchHost($regexp)
072      {
073          $this->host = $regexp;
074      }
075   
076      /**
077       * Adds a check for the URL path info.
078       *
079       * @param string $regexp A Regexp
080       */
081      public function matchPath($regexp)
082      {
083          $this->path = $regexp;
084      }
085   
086      /**
087       * Adds a check for the client IP.
088       *
089       * @param string $ip A specific IP address or a range specified using IP/netmask like 192.168.1.0/24
090       */
091      public function matchIp($ip)
092      {
093          $this->matchIps($ip);
094      }
095   
096      /**
097       * Adds a check for the client IP.
098       *
099       * @param string|string[] $ips A specific IP address or a range specified using IP/netmask like 192.168.1.0/24
100       */
101      public function matchIps($ips)
102      {
103          $this->ips = (array) $ips;
104      }
105   
106      /**
107       * Adds a check for the HTTP method.
108       *
109       * @param string|string[]|null $method An HTTP method or an array of HTTP methods
110       */
111      public function matchMethod($method)
112      {
113          $this->methods = array_map('strtoupper', (array) $method);
114      }
115   
116      /**
117       * Adds a check for request attribute.
118       *
119       * @param string $key    The request attribute name
120       * @param string $regexp A Regexp
121       */
122      public function matchAttribute($key, $regexp)
123      {
124          $this->attributes[$key] = $regexp;
125      }
126   
127      /**
128       * {@inheritdoc}
129       *
130       * @api
131       */
132      public function matches(Request $request)
133      {
134          if ($this->methods && !in_array($request->getMethod(), $this->methods)) {
135              return false;
136          }
137   
138          foreach ($this->attributes as $key => $pattern) {
139              if (!preg_match('{'.$pattern.'}', $request->attributes->get($key))) {
140                  return false;
141              }
142          }
143   
144          if (null !== $this->path && !preg_match('{'.$this->path.'}', rawurldecode($request->getPathInfo()))) {
145              return false;
146          }
147   
148          if (null !== $this->host && !preg_match('{'.$this->host.'}i', $request->getHost())) {
149              return false;
150          }
151   
152          if (IpUtils::checkIp($request->getClientIp(), $this->ips)) {
153              return true;
154          }
155   
156          // Note to future implementors: add additional checks above the
157          // foreach above or else your check might not be run!
158          return count($this->ips) === 0;
159      }
160  }
161