Re: ZIP it :o)

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

 



On a busy server, with many many users, it is remotely possible that
your time() call will not be unique, and 2 users will end up
corrupting each others' zip files...

PHP has built-in functions for making temp files with unique names.

Use them.

On Fri, June 1, 2007 2:32 am, Auto-Deppe, C. Haensel wrote:
> Hi guys,
>
> thanks to Jim, I made it :o) Here's the source I'm using for testing
> now...
> it works. I just need to make it less vulnerable ;o)
>
> ----- SNIP -----
> <?
> $nr  = $_GET['nr'];
> if(eregi("../", $nr)) {
>  die("Hier wird nicht rumgehackt");
> }
> $directory = '_kfz_images/'.$nr.'/full/';
> $dir = opendir($directory);
> $i = 1;
> while($file = readdir($dir)) {
>  $dest = "temp/Auto-Deppe-".$nr."_".$i.".jpg";
>  if(eregi("jpg", $file)) {
>   copy($directory.$file, $dest);
>   $i++;
>  }
> }
> $now = time();
> header("Content-Type: application/force-download");
> header('Content-Disposition: attachment;
> filename="Auto-Deppe-'.$now.'_Download.zip"');
> exec("zip ".$now."_archive.zip temp/* 2>&1", $output);
> readfile($now."_archive.zip");
> $tempdir = opendir("temp");
> while($tempfile = readdir($tempdir)) {
>  if(eregi("jpg", $tempfile)) {
>   unlink("temp/".$tempfile);
>  }
> }
> ?>
> ----- SNAP -----
> So I am copying the files to a temp dir, and then zip em up, delete
> them
> afterwards. I copy them to the dir so I wouldn't have the whole
> /kfz_images/number/full/ structure in the zip).
>
> Aaaanyhow, it works, it does work fast enough, and I am happy :o)
>
> Thanks a bunch, guys, and have a great day!
>
> This is Christian Haensel live from Extertal, Germany. Back to you.
>
> -:oD)=
>
>
> ----- Original Message -----
> From: "Tijnema" <tijnema@xxxxxxxxx>
> To: "Chris" <dmagick@xxxxxxxxx>
> Cc: "Auto-Deppe, C. Haensel" <c.haensel@xxxxxxxxxxxxx>;
> <php-general@xxxxxxxxxxxxx>
> Sent: Friday, June 01, 2007 9:27 AM
> Subject: Re:  ZIP it :o)
>
>
>> On 6/1/07, Chris <dmagick@xxxxxxxxx> wrote:
>>> Auto-Deppe, C. Haensel wrote:
>>> > Morning guys,
>>> >
>>> > I have been trying to find an easy to use way to zip an archive
>>> on a
>>> > linux
>>> > box running PHP5. Now I've tried the zip-lib.php and others, but
>>> they
>>> > always
>>> > throw an error msg.... But that is not the question.
>>> >
>>> > I am looking to use exec("zip archive.zip $directory");
>>> $directory has
>>> > been
>>> > tried with both full path and relative path ... but that doesn't
>>> work.
>>> > I
>>> > don't get an error, it just doesn't create the zip-file...
>>> >
>>> > So, after a day of Google-ing and trying, I thought I might ask
>>> you for
>>> > help.
>>> >
>>> > Cheers for any answers and hints.
>>>
>>> http://pear.php.net/package/Archive_Zip and/or
>>> http://pear.php.net/package/File_Archive
>>>
>>> and please create a *new* message instead of replying to an
>>> existing one
>>> and changing the topic. It screws up message threading (in email
>>> clients
>>> and in the archives).
>>
>> Not in gmail :)
>>
>> I had same problem lately, wanted also to create zip files from PHP,
>> i
>> tried various build in functions, but i ended up with the exec way.
>> It has been said before, but PHP probably doesn't have the right
>> permissions to write the .zip file, so i would recommend you to
>> write
>> to /tmp first.
>>
>> Tijnema
>>
>>>
>>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


-- 
Some people have a "gift" link here.
Know what I want?
I want you to buy a CD from some indie artist.
http://cdbaby.com/browse/from/lynch
Yeah, I get a buck. So?

-- 
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