Re: Re: validating directory and file name with preg_match

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



""Boyd, Todd M."" <tmboyd1@xxxxxxxx> wrote in message 
news:33BDE0B2C17EEF46ACBE00537CF2A19003BB9843@xxxxxxxxxxxxxxxxxxxxxxx
> -----Original Message-----
> From: Frank Stanovcak [mailto:blindspotpro@xxxxxxxxxxx]
> Sent: Wednesday, January 28, 2009 1:04 PM
> To: php-general@xxxxxxxxxxxxx
> Subject:  Re: validating directory and file name with preg_match
>
>
> ""Frank Stanovcak"" <blindspotpro@xxxxxxxxxxx> wrote in message
> news:A8.D6.08436.5CF80894@xxxxxxxxxxxxxxx
> > I'm limiting access to certain proceedures based on the file trying
> to use
> > them, and the directory they are located in on my server.  Right now
> I am
> > using two preg_match statments as you will see.  What I want to know
> is
> > this.  Is there a way to write a single regex for this that will
> supply
> > the file name as a match, and only return if the directory is valid?
> >
> > ------------
> > //make sure we are calling from the propper directory, and get the
> file
> > name that included to determine
> > //database access needs
> >
>
preg_match('#^C:\\\\Inetpub\\\\wwwroot\\\\folder\\\\(entry|edit)\\\\(\w
> *\\.(php|pdf))#i',
> > $included_files[0], $check1);
> >
>
preg_match('#^C:\\\\Inetpub\\\\wwwroot\\\\folder\\\\(\w*\\.(php|pdf))#i
> ',
> > $included_files[0], $check2);
> > if(isset($check1)){
> > if(is_array($check1)){
> >  $matches[4] = $check1[2];
> > };
> > unset($check1);
> > };
> > if(isset($check2)){
> > if(is_array($check2)){
> >  $matches[4] = $check2[1];
> > };
> > unset($check2);
> > };
> > if(isset($matches[4]){
> > more code here
> > };
> >
>
> ------Then Robyn Sed------
> Looks like the difference between the 2 patterns is the
> '(entry|edit)\\\\' part -- couldn't you make that optional and combine
> it into one expression? Ie,  '((entry|edit)\\\\)*'
>
> As for returning the filename, basename() is your friend.
>
> R
> ------end------
>
> I would use basename, but I want only the two file types specified to
> trigger a return.  They are the only two valid php types on this
> server.
>
> Your suggestion worked like a charm!  Thank you very much!

Upon reading this, I realize that I over-thought my suggestion.

/^c:\\inetpub\\wwwroot\\folder\\(?:entry|edit)\\(\w+\.(?:php|pdf))$/i

That's my final answer. :)


// Todd

Thank you too Todd.  I don't know why, but for some reason if I don't double 
escape the slashes it fails everytime.  I never knew you could stop the 
return with ?:  that will help a great deal in the future!

Frank 



-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux