hi, a performance tip!
*Tip* preg_split() <http://us3.php.net/manual/en/function.preg-split.php>, which uses a Perl-compatible regular expression syntax, is often a faster alternative to *split()*. If you don't require the power of regular expressions, it is faster to use explode()<http://us3.php.net/manual/en/function.explode.php>, which doesn't incur the overhead of the regular expression engine. since we are looking just for a string '://' not a patter, explode() y a better choice. and i would use the 3rd param of the explode() function since we only need 2 chunks + $protocolSplit = explode(":\/\/", $url, 2); just not that the return is different Return Values If *delimiter* is an empty string (""), *explode()* will return *FALSE*. If *delimiter* contains a value that is not contained in *string* , then * explode()* will return an array containing *string* . so you need to check that count() > 1 my 2 cents ropu On Tue, Nov 18, 2008 at 11:04 PM, <[EMAIL PROTECTED]> wrote: > Author: chabotc > Date: Wed Nov 19 01:04:25 2008 > New Revision: 718911 > > URL: http://svn.apache.org/viewvc?rev=718911&view=rev > Log: > SHINDIG-662 by Tim Wintle - Check protocol for proxy requests > > Modified: > incubator/shindig/trunk/php/src/gadgets/ProxyHandler.php > > Modified: incubator/shindig/trunk/php/src/gadgets/ProxyHandler.php > URL: > http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/gadgets/ProxyHandler.php?rev=718911&r1=718910&r2=718911&view=diff > > ============================================================================== > --- incubator/shindig/trunk/php/src/gadgets/ProxyHandler.php (original) > +++ incubator/shindig/trunk/php/src/gadgets/ProxyHandler.php Wed Nov 19 > 01:04:25 2008 > @@ -338,8 +338,19 @@ > private function fetchContent($url, $method) > { > //TODO get actual character encoding from the request > - > > + // Check the protocol requested - curl doesn't really > support file:// > + // requests but the 'error' should be handled properly > + $protocolSplit = split(":\/\/", $url); > + if (!count($protocolSplit)) { > + throw new Exception("Invalid protocol specified for > url: $url"); > + } else { > + $protocol = strtoupper($protocolSplit[0]); > + if ($protocol != "HTTP" && $protocol != "HTTPS" && > $protocol != "FTP") { > + throw new Exception("Invalid protocol > specified in url ($protocol)"); > + } > + } > + > // Extract the request headers from the $_SERVER > super-global (this -does- unfortunatly mean that any header that php doesn't > understand won't be proxied thru though) > // if this turns out to be a problem we could add support > for HTTP_RAW_HEADERS, but this depends on a php.ini setting, so i'd rather > prevent that from being required > $headers = ''; > > > -- .-. --- .--. ..- R o p u

