Re: file validation
| From: | Mike Frazer | Date: | Sun, 03 Feb 2002 10:35:49 +0000 |
| Subject: | Re: file validation | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-83292@lists.php.net to get a copy of this message | ||
A slightly less cumbersome method than the while() loop below would be a
foreach() loop:
function check_file($filename) {
if (!$lines = file($filename)) {
return false;
}
foreach ($lines as $line) {
$num_pipes = substr_count($line, '|');
if ($num_pipes < 2 || $num_pipes > 4) {
return false;
}
}
return true;
}
Same result, probably absolutely no measurable (and we're talking fractions
of microseconds here) difference in speed, but much easier to read.
Mike Frazer
"Lars Torben Wilson" <torben@php.net> wrote in message
news:1012602758.3230.127.camel@ali...
> On Fri, 2002-02-01 at 14:02, toni baker wrote:
> > I would like to prevent users from uploading a file
> > that contains more than 4 pipes or less than 2 pipes.
> > The code below prevents users from uploading a file
> > containing more than 4 pipes, but not less than 2
> > pipes. Should I use awk, ereg, or sed? Thanks
>
> Unless you *have* to spawn processes to do this for you
> for some reason, you can keep things a lot simpler by
> doing it in PHP, something like this:
>
> <?php
> error_reporting(E_ALL);
>
> function check_file($filename) {
> if (!$upload_file = file($filename)) {
> return false;
> }
> while (list(, $line) = each($upload_file)) {
> $num_pipes = substr_count($line, '|');
> if ($num_pipes < 2 || $num_pipes > 4) {
> return false;
> }
> }
> return true;
> }
>
> $userfile = 'testpipes.txt';
> if (check_file($userfile)) {
> echo "File passed.\n";
> } else {
> echo "File failed.\n";
> }
>
> ?>
>
>
> Hope this helps,
>
> Torben
>
> > system ("/bin/cat $userfile|/bin/sed -n
> > 's/.*|.*|.*|.*|.*|/&/p'> pipes.txt;
> > $fd =fopen("pipes.txt", 'r');
> > $pipes5=fgets($fd,50);
> > echo ($pipes5);
> > fclose($fd);
> >
> > if ($pipes5) {
> > print "wrong number of pipes";
> > }
> >
> > The uploaded file below should not pass but it does:
> >
> > aaaaa|bbbbb|ccccc|ddddd|eeeee
> > aaaaa|bbbbb|ccccc|
> > aaaaa|bbbbb|ccccc|ddddd
> > aaaaa|bbbbb
> > aaaaa|bbbbb|ccccc|ddddd|eeeee
>
> --
> Torben Wilson <torben@php.net>
> http://www.thebuttlesschaps.com
> http://www.hybrid17.com
> http://www.inflatableeye.com
> +1.604.709.0506
>