آژانس هواپیماییexchanging

پسورد گذاشتن روی فايل php

شروع موضوع توسط mmdmmd ‏7 نوامبر 2005 در انجمن PHP

  1. mmdmmd

    mmdmmd Registered User

    تاریخ عضویت:
    ‏31 اکتبر 2005
    نوشته ها:
    12
    تشکر شده:
    0
    <<<ميشه يک فايل را که روی سرور قرار دارد به صورت زيپ درآورد>>>>>>
    حالا چه جوری ميشه روی اين فايل زيپ شده پسورد گذاشت و بعد اون را دانلود کرد.
    چون ميخام با اين کار امنيت بالا تر بره
    ممنون ميشم کمک کنيد.
     
  2. Parsa_361

    Parsa_361 کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏5 آگوست 2005
    نوشته ها:
    889
    تشکر شده:
    10
    محل سکونت:
    Isfahan, php.ini
    zip رو می شه کرد

    ولی Password رو فکر نکنم
    اما با بعضی از ترفند های PHP می شه فایل رو دست کاری کرد تا کسی نتونه بازش کنه !
    بعد دوباره باید یه برنامه دیگه نوشت که اگه پسورد وارد شده درست هست دوباره اونو مثل اولش کنه

    ;)
     
  3. adnan

    adnan Registered User

    تاریخ عضویت:
    ‏5 اکتبر 2003
    نوشته ها:
    1,250
    تشکر شده:
    10
    محل سکونت:
    مشهد
    یک کار ساده این است که بر روی فولدر رمز بگذارید .
    اینکار از طریق cpanel انجام پذیره یا با htaccess میشه نوشتش !
    سپس فایلها را به آن فولدر انتقال دهید .

    اگر نمی خواهید هر فایل زیپ پسورد منحصر بفردی داشته باشه راه حل خوبی است !
     
  4. mmdmmd

    mmdmmd Registered User

    تاریخ عضویت:
    ‏31 اکتبر 2005
    نوشته ها:
    12
    تشکر شده:
    0
    من منظورم اينه که يک فايل روی سرور سايتم قرار داره.حال ميخام اونو اول زيپش کنم . بعد روی اين فايل زيپ شده رمز بزارم . تا در آخر اونو دانلودش کنم. راستش چون برای دانلوش از يک کافی نت سرعت بالا استفاده ميکنم ميخام فايلم رمز داشته باشه .تا اونجا هم کسی نتونه بازش کنه...البته ميدونم فايلهای رمز دار رو هم ميشه کرک کرد ولی من ميخام کارهای لازمه رو انجام داده باشم...
     
  5. Parsa_361

    Parsa_361 کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏5 آگوست 2005
    نوشته ها:
    889
    تشکر شده:
    10
    محل سکونت:
    Isfahan, php.ini
    ZIP رو می تونی بکنی
    ولی پسورد رو فکر نکنم

    باید از قبل روشون پسورد بزاری
     
  6. Shahed

    Shahed کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏30 ژوئن 2003
    نوشته ها:
    7,175
    تشکر شده:
    31
    محل سکونت:
    mt.cgi
    پارسا !
    اسکريپتي دم دست داري واسه زيپ کردن رو سرور؟
     
  7. appbannerkhuniresbanner
  8. Parsa_361

    Parsa_361 کاربر فعال صفحات داینامیک کاربر فعال

    تاریخ عضویت:
    ‏5 آگوست 2005
    نوشته ها:
    889
    تشکر شده:
    10
    محل سکونت:
    Isfahan, php.ini
    برو اینجا همه چی هست :
    http://ir.php.net/zip

    هم قشنگ یاد داده
    هم کد آماده داره
     
  9. sama_sally

    sama_sally Registered User

    تاریخ عضویت:
    ‏5 آپریل 2005
    نوشته ها:
    2,598
    تشکر شده:
    1
    محل سکونت:
    Essen, Deutschland
    اینم کد من که در نسخه بعدی فارسی نیوز یک بک آپ از پوشه data میگیره:
    PHP:
    <?php
    class zipfile
    {

        var 
    $datasec = array(); // array to store compressed data
        
    var $ctrl_dir = array(); // central directory
        
    var $eof_ctrl_dir "\x50\x4b\x05\x06\x00\x00\x00\x00"//end of Central directory record
        
    var $old_offset 0;

        function 
    add_dir($name)

        
    // adds "directory" to archive - do this before putting any files in directory!
        // $name - name of directory... like this: "path/"
        // ...then you can add files using add_file with names like "path/file.txt"
        
    {
            
    $name str_replace("\\""/"$name);

            
    $fr "\x50\x4b\x03\x04";
            
    $fr .= "\x0a\x00";    // ver needed to extract
            
    $fr .= "\x00\x00";    // gen purpose bit flag
            
    $fr .= "\x00\x00";    // compression method
            
    $fr .= "\x00\x00\x00\x00"// last mod time and date

            
    $fr .= pack("V",0); // crc32
            
    $fr .= pack("V",0); //compressed filesize
            
    $fr .= pack("V",0); //uncompressed filesize
            
    $fr .= pack("v"strlen($name) ); //length of pathname
            
    $fr .= pack("v"); //extra field length
            
    $fr .= $name;
            
    // end of "local file header" segment

            // no "file data" segment for path

            // "data descriptor" segment (optional but necessary if archive is not served as file)
            
    $fr .= pack("V",$crc); //crc32
            
    $fr .= pack("V",$c_len); //compressed filesize
            
    $fr .= pack("V",$unc_len); //uncompressed filesize

            // add this entry to array
            
    $this -> datasec[] = $fr;

            
    $new_offset strlen(implode(""$this->datasec));

            
    // ext. file attributes mirrors MS-DOS directory attr byte, detailed
            // at http://support.microsoft.com/support/kb/articles/Q125/0/19.asp

            // now add to central record
            
    $cdrec "\x50\x4b\x01\x02";
            
    $cdrec .="\x00\x00";    // version made by
            
    $cdrec .="\x0a\x00";    // version needed to extract
            
    $cdrec .="\x00\x00";    // gen purpose bit flag
            
    $cdrec .="\x00\x00";    // compression method
            
    $cdrec .="\x00\x00\x00\x00"// last mod time & date
            
    $cdrec .= pack("V",0); // crc32
            
    $cdrec .= pack("V",0); //compressed filesize
            
    $cdrec .= pack("V",0); //uncompressed filesize
            
    $cdrec .= pack("v"strlen($name) ); //length of filename
            
    $cdrec .= pack("v"); //extra field length
            
    $cdrec .= pack("v"); //file comment length
            
    $cdrec .= pack("v"); //disk number start
            
    $cdrec .= pack("v"); //internal file attributes
            
    $ext "\x00\x00\x10\x00";
            
    $ext "\xff\xff\xff\xff";
            
    $cdrec .= pack("V"16 ); //external file attributes  - 'directory' bit set

            
    $cdrec .= pack("V"$this -> old_offset ); //relative offset of local header
            
    $this -> old_offset $new_offset;

            
    $cdrec .= $name;
            
    // optional extra field, file comment goes here
            // save to array
            
    $this -> ctrl_dir[] = $cdrec;


        }


        function 
    add_file($data$name)

        
    // adds "file" to archive
        // $data - file contents
        // $name - name of file in archive. Add path if your want

        
    {
            
    $name str_replace("\\""/"$name);
            
    //$name = str_replace("\\", "\\\\", $name);

            
    $fr "\x50\x4b\x03\x04";
            
    $fr .= "\x14\x00";    // ver needed to extract
            
    $fr .= "\x00\x00";    // gen purpose bit flag
            
    $fr .= "\x08\x00";    // compression method
            
    $fr .= "\x00\x00\x00\x00"// last mod time and date

            
    $unc_len strlen($data);
            
    $crc crc32($data);
            
    $zdata gzcompress($data);
            
    $zdata substrsubstr($zdata0strlen($zdata) - 4), 2); // fix crc bug
            
    $c_len strlen($zdata);
            
    $fr .= pack("V",$crc); // crc32
            
    $fr .= pack("V",$c_len); //compressed filesize
            
    $fr .= pack("V",$unc_len); //uncompressed filesize
            
    $fr .= pack("v"strlen($name) ); //length of filename
            
    $fr .= pack("v"); //extra field length
            
    $fr .= $name;
            
    // end of "local file header" segment

            // "file data" segment
            
    $fr .= $zdata;

            
    // "data descriptor" segment (optional but necessary if archive is not served as file)
            
    $fr .= pack("V",$crc); //crc32
            
    $fr .= pack("V",$c_len); //compressed filesize
            
    $fr .= pack("V",$unc_len); //uncompressed filesize

            // add this entry to array
            
    $this -> datasec[] = $fr;

            
    $new_offset strlen(implode(""$this->datasec));

            
    // now add to central directory record
            
    $cdrec "\x50\x4b\x01\x02";
            
    $cdrec .="\x00\x00";    // version made by
            
    $cdrec .="\x14\x00";    // version needed to extract
            
    $cdrec .="\x00\x00";    // gen purpose bit flag
            
    $cdrec .="\x08\x00";    // compression method
            
    $cdrec .="\x00\x00\x00\x00"// last mod time & date
            
    $cdrec .= pack("V",$crc); // crc32
            
    $cdrec .= pack("V",$c_len); //compressed filesize
            
    $cdrec .= pack("V",$unc_len); //uncompressed filesize
            
    $cdrec .= pack("v"strlen($name) ); //length of filename
            
    $cdrec .= pack("v"); //extra field length
            
    $cdrec .= pack("v"); //file comment length
            
    $cdrec .= pack("v"); //disk number start
            
    $cdrec .= pack("v"); //internal file attributes
            
    $cdrec .= pack("V"32 ); //external file attributes - 'archive' bit set

            
    $cdrec .= pack("V"$this -> old_offset ); //relative offset of local header
    //      &n // bsp; echo "old offset is ".$this->old_offset.", new offset is $new_offset<br>";
            
    $this -> old_offset $new_offset;

            
    $cdrec .= $name;
            
    // optional extra field, file comment goes here
            // save to central directory
            
    $this -> ctrl_dir[] = $cdrec;
        }

        function 
    file() { // dump out file
            
    $data implode(""$this -> datasec);
            
    $ctrldir implode(""$this -> ctrl_dir);

            return
                
    $data.
                
    $ctrldir.
                
    $this -> eof_ctrl_dir.
                
    pack("v"sizeof($this -> ctrl_dir)).     // total # of entries "on this disk"
                
    pack("v"sizeof($this -> ctrl_dir)).     // total # of entries overall
                
    pack("V"strlen($ctrldir)).             // size of central dir
                
    pack("V"strlen($data)).                 // offset to start of central dir
                
    "\x00\x00";                             // .zip file comment length
        
    }
    }


    $abort ignore_user_abort(1);

    if (!
    ini_get('safe_mode')){
        
    set_time_limit(600);
    }


    if (
    $_GET['action'] != 'backup' or !$is_loged_in or ($is_loged_in and $member['level'] > 2)){
    ?>

    <a href="<?=$PHP_SELF?>?action=backup">Download</a>

    <?
        
    exit;
    }

    $zipfile = new zipfile();

    $fdir opendir('data/');
    while(
    $file readdir($fdir)){
        if (
    $file != '.' and $file != '..'){
            if (
    is_file('data/'.$file)){$zipfile->add_file(file_get_contents('data/'.$file), 'data/'.$file);}
            if (
    is_dir('data/'.$file)){
                
    $sdir opendir('data/'.$file);
                while(
    $sfile readdir($sdir)){
                    if (
    $sfile != '.' and $sfile != '..'){
                        if (
    is_file('data/'.$file.'/'.$sfile)){$zipfile->add_file(file_get_contents('data/'.$file.'/'.$sfile), 'data/'.$file.'/'.$sfile);}
                    }
                }
            }
        }
    }

    header('Content-type: application/octet-stream');
    header('Content-disposition: attachment; filename=backup.zip');
    echo 
    $zipfile->file();
    ?>
    آخراشو باید ادیت کنید!
     
  10. Shahed

    Shahed کاربر قدیمی پرشین تولز

    تاریخ عضویت:
    ‏30 ژوئن 2003
    نوشته ها:
    7,175
    تشکر شده:
    31
    محل سکونت:
    mt.cgi
    تنکس !!
    .