برگزیده های پرشین تولز

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

mmdmmd

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

Parsa_361

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
5 آگوست 2005
نوشته‌ها
889
لایک‌ها
10
محل سکونت
Isfahan, php.ini
به نقل از mmdmmd :
<<<ميشه يک فايل را که روی سرور قرار دارد به صورت زيپ درآورد>>>>>>
حالا چه جوری ميشه روی اين فايل زيپ شده پسورد گذاشت و بعد اون را دانلود کرد.
چون ميخام با اين کار امنيت بالا تر بره
ممنون ميشم کمک کنيد.
zip رو می شه کرد

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

;)
 

adnan

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

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

mmdmmd

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

Parsa_361

کاربر فعال صفحات داینامیک
کاربر فعال
تاریخ عضویت
5 آگوست 2005
نوشته‌ها
889
لایک‌ها
10
محل سکونت
Isfahan, php.ini
به نقل از mmdmmd :
من منظورم اينه که يک فايل روی سرور سايتم قرار داره.حال ميخام اونو اول زيپش کنم . بعد روی اين فايل زيپ شده رمز بزارم . تا در آخر اونو دانلودش کنم. راستش چون برای دانلوش از يک کافی نت سرعت بالا استفاده ميکنم ميخام فايلم رمز داشته باشه .تا اونجا هم کسی نتونه بازش کنه...البته ميدونم فايلهای رمز دار رو هم ميشه کرک کرد ولی من ميخام کارهای لازمه رو انجام داده باشم...
ZIP رو می تونی بکنی
ولی پسورد رو فکر نکنم

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

Shahed

کاربر قدیمی پرشین تولز
تاریخ عضویت
30 ژوئن 2003
نوشته‌ها
7,270
لایک‌ها
34
محل سکونت
mt.cgi
به نقل از Parsa_361 :
ZIP رو می تونی بکنی
ولی پسورد رو فکر نکنم

باید از قبل روشون پسورد بزاری
پارسا !
اسکريپتي دم دست داري واسه زيپ کردن رو سرور؟
 

Parsa_361

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

sama_sally

Registered User
تاریخ عضویت
5 آپریل 2005
نوشته‌ها
2,598
لایک‌ها
1
سن
35
محل سکونت
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", 0 ); //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", 0 ); //extra field length
        $cdrec .= pack("v", 0 ); //file comment length
        $cdrec .= pack("v", 0 ); //disk number start
        $cdrec .= pack("v", 0 ); //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 = substr( substr($zdata, 0, strlen($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", 0 ); //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", 0 ); //extra field length
        $cdrec .= pack("v", 0 ); //file comment length
        $cdrec .= pack("v", 0 ); //disk number start
        $cdrec .= pack("v", 0 ); //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();
?>
آخراشو باید ادیت کنید!
 
بالا