i
در حال برنامه نویسی و آماده سازی نسخه جدید «وبگو» هستیم، در این نسخه قابلیت ها و ظاهر سایت به کلی متفاوت و کاملتر خواهد بود، این فرآیند زمانبر و از مدتی پیش شروع شده و همچنان ادامه دارد، روند پیشرفت پروژه در این قسمت به صورت درصدی مشخص است و به تناوب به روزرسانی می شود.
parsgreen.com
نکته:
با توجه به تاریخ نگارش آموزش های سایت و پیشرفت تکنولوژی های مرتبط با وب در سالیان اخیر، محتوای برخی از مطالب قدیمی ممکن است نیاز به ویرایش و به روزرسانی داشته باشند که این کار هم زمان با تهیه نسخه جدید «وبگو» به مرور در حال انجام است، لطفا در استفاده از مطالب سایت به این نکته دقت داشته و حتی المقدور از چند منبع مختلف استفاده نمائید.
article

محدود کردن لینک دانلود مستقیم فایل ها با PHP و htaccess

php-htaccess-download

همان طور که می دانیم، لینک دانلود یک فایل در وب به طور کلی به دو دسته مستقیم و غیر مستقیم تقسیم می شود، منظور از لینک های مستقیم مواردی هستند که عموما به فرمت فایل مورد نظر (به فرض zip.) ختم شده و با کلیک بر روی آنها یا وارد کردن آدرس در مرورگر، بلافاصله برای دانلود ارائه می شوند، قاعدتا تعریف و استفاده از این نوع لینک ها خیلی سخت و پیچیده نیست، اما مشکل اکثر مدیران سایت های مختلف که عمدتا نیاز به محدود کردن دانلود فایل ها یا دانلود با پرداخت هزینه و... دارند، ایجاد و مدیریت نوع دوم از لینک ها یعنی لینک های دانلود غیر مستقیم است، در این حالت کاربر با وارد کردن آدرس لینک در مرورگر (در پس زمینه و در سرور) به صفحه دیگری ارجاع داده شده و به طور مثال ابتدا وضعیت عضویت یا پرداخت هزینه دانلود لینک بررسی و سپس مجوز دسترسی (یا عدم دسترسی) به او داده می شود، از این رو در این مطلب قصد داریم نحوه انجام این کار را با استفاده از PHP و htaccess آموزش دهیم، به این امید که مفید واقع شود.

دستور htaccess برای جلوگیری از دانلود مستقیم


اگر با فایل htaccess. آشنا باشید، می دانید که با استفاده از آن می توان تنظیمات متفاوتی در سرورهای لینوکس و ویندوز (در صورت پیکره بندی مناسب) اعمال کرد که یکی از این تنظیمات، بررسی لینک درخواستی و محدود کردن حالت دانلود مستقیم آن است، در این شیوه در مرحله اول دستوری در htaccess، با استفاده از الگوی عبارات با قاعده فرمت فایل درخواستی را بررسی کرده، اگر فرمت مورد نظر جزء مواردی باشد که نمی خواهیم به صورت مستقیم دریافت شوند، آن را به صورت پارامتر به یک فایل PHP ارسال می کنیم (این کار در سرور و بدون اطلاع کاربر انجام می شود)، به نمونه زیر توجه کنید.
RewriteEngine on
RewriteRule ^file/([^/]+)(\.zip|\.pdf|\.jpg)$ /limit-direct-access/file/download.php?file=$1$2 [NC,L]
در این مثال ساده، در ریشه یا همان root سایت دایرکتوری با نام فرضی limit-direct-access ساخته ایم که درون آن یک فایل htaccess. با دستورات بالا قرار دارد، همچنین یک فولدر با نام file که درون آن فایل download.php به همراه سایر فایل های آماده برای دانلود جای گرفته اند (با دقت به قسمت دوم دستور RewriteRule، درک ترتیب قرار گرفتن فولدرها ساده می شود)، لذا در حالت عادی کاربر برای دانلود فایل فرضی test.zip از دایرکتوری file باید نمونه لینک زیر را از سرور درخواست کند:
http://localhost/limit-direct-access/file/test.zip
اما با توجه به دستور RewriteRule نوشته شده، کاربر بدون اینکه متوجه شود، لینک زیر را از سرور درخواست خواهد کرد:
http://localhost/limit-direct-access/file/download.php?file=test.zip
در واقع لینک اصلی برای سرور مفهوم لینک Rewrite شده را دارد.

بررسی مجوزها و ارسال فایل برای دانلود با PHP


قسمت اول کار که تغییر مسیر لینک کاربر از حالت مستقیم به غیر مستقیم بود به درستی انجام شد! حال نوبت PHP است که کار بررسی مجوزهای ورود، پرداخت و... را انجام دهد و در صورتی که شرایط باب طبع ما باشد، فایل را به مرورگر جهت دانلود ارسال کند، به نمونه زیر توجه کنید.
<?php
@$file_name = $_GET['file'];
//echo $file_name;

//بررسی مجوزهای کاربر
//تعیین نحوه بررسی مجوزها با توجه به برنامه و هدف شما می تواند متفاوت باشد، به طور مثال ممکن است هنگامی که کاربر مبلغ لینک را پرداخت کرده و تراکنش موفقیت آمیز باشد، ضمن نگهداری اطلاعات در دیتابیس جهت استفاده های بعدی، یک سشن آی دی تنظیم کنید، اکنون در هنگام دانلود می توان آن سشن آی دی را بررسی کرد و اگر تنظیم شده باشد، اجازه دسترسی به کاربر داد، یا برای کاربران وارد شده به سایت از همین شیوه می توان استفاده نمود.
$user_access = TRUE;

//کاربر مجاز به دانلود است
if($user_access == TRUE){
    //تابع برای بدست آوردن پسوند فایل
    function getExtension($file){
        preg_match('/\.[^\.]+$/i', $file, $ext);
        return $ext[0];
    }
    
    //نوع فایل    
    $file_type = NULL;
    switch(getExtension($file_name)){
        case 'zip':
        $file_type = 'application/zip';
        break;
        case 'pdf':
        $file_type = 'application/pdf';
        break;
        case 'jpg':
        $file_type = 'image/jpeg';
        break;                
    }
    
    //ارسال فایل به مرورگر برای دانلود
    ob_start();
    header('Content-Description: File Transfer');
    //header('Content-Type: application/octet-stream');    
    header('Content-Type: '.$file_type);
    header('Content-Disposition: attachment; filename='.$file_name);
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Pragma: public');
    header('Content-Length: '.filesize("$file_name"));
    ob_clean();
    flush();
    readfile("$file_name");
    exit;
}
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>وبگو | محدود کردن دسترسی مستقیم به لینک دانلود</title>
<!-- https://webgoo.ir -->
</head>
<body>
<?php
//کاربر مجاز به دانلود نیست
if($user_access == FALSE){
    echo 'Error!';    
}
?>
</body>
</html>
توضیح:
- همان طور که گفتیم نام فایل به صورت یک پارامتر و از طریق متد GET به فایل PHP ارسال می شود، بنابراین در خط اول متغیر file_name را با این روش مقداردهی می کنیم (که برابر با مقادیر دریافتی از پارامتر file است).
- در گام بعدی نیاز به بررسی مجوز دانلود کاربر است، نحوه انجام این مرحله کاملا دلخواه بوده و بستگی به هدف شما دارد، آنچه برای ما اهمیت دارد، مقداردهی متغیر user_access به صورت TRUE یا FALSE است، به طور مثال می توانید برای کاربرانی که تراکنش آنها موفقیت آمیز باشد، یک سشن آی دی تنظیم کنید یا فیلدی را در دیتابیس به صورت حالت پرداخت تعریف کرده و با تطبیق اطلاعات (نام کاربری و کلمه عبور)، وضعیت مجوز دانلود کاربر را بررسی کنید، در هر صورت از هر روشی که استفاده کنید نهایتا باید به نتیجه TRUE یا FALSE ختم شود، لطفا به جهت مفصل بودن این مبحث، در این رابطه به آموزش های سشن و نحوه ایجاد سیستم ورود و خروج سایت مراجعه کنید.
- پس از تعیین حالت TRUE یا FALSE برای متغیر user_access، در صورتی که مقدار TRUE باشد، یعنی کاربر مجاز به دانلود بوده و لذا باید فایل را به مرورگر ارسال کنیم، بدین منظور هم می توانید از دستور زیر برای تعیین نوع MIME فایل استفاده کنید.
header('Content-Type: application/octet-stream');
این دستور به صورت کلی است و برای اکثر فایل ها کاربرد دارد، هم می توانید به صورت اختصاصی نوع MIME فایل ها را با تابع getExtension و دستور switch مشخص کنید (این کار در نمونه کد آموزش حاضر انجام شده است).
نکته: MIME یک استاندارد تعریف شده در وب برای تعیین فایل های مختلف از نظر نوع است که می توانید لیستی از آنها را در لینک زیر مشاهده کنید.
لیست فرمت ها و معادل آنها در استاندارد MIME
- دستورات header که در ادامه تنظیم شده اند برای ارسال صحیح فایل به مرورگر و رعایت استانداردهای HTTP لازم هستند.
- تابع ob_clean و flush برای مدیریت بهتر نقل و انتقال اطلاعات و پاک کردن موارد اضافی از سرور است (ضروری نیست).
- در نهایت نیز تابع readfile فایل مورد نظر را به مرورگر ارسال کرده و دستور exit باعث پایان اجرای کدها می شود.
نکته 1: در صورتی که مقدار متغیر user_access برابر FALSE باشد، بخش دوم دستورات اجرا شده و پیغام Error نمایش داده می شود.
نکته 2: دقت کنید که به دلیل استفاده شدن از توابع header در کد، نباید قبل از اجرای این توابع هیچ نوع خروجی به مرورگر ارسال شود، این خروجی می تواند شامل BOM یا Byte Order Mark نیز شود، لذا باید مطمئن شوید که فایل PHP شما بدون BOM است که بدین منظور می توانید از برنامه Adobe Dreamweaver یا ++Notepad استفاده کرده و BOM را با ذخیره مجدد فایل حذف کنید (در نرم افزار ++Notepad باید از منوی Encoding و امکان Convert to UTF-8 without BOM استفاده کنید).

دانلود نمونه فایل های آموزش


دانلود نمونه فایل های آموزش محدود کردن  لینک دانلود مستقیم فایل ها با PHP و htaccess
sectionدسته بندی: آموزش کاربردی » PHP
related مطالب بیشتر:
» ارسال پارامتر به URL و دریافت مقادیر با PHP
» تبدیل تاریخ میلادی به شمسی، با استفاده از مبدل jdf در php
» نمایش قسمتی از متن و پاراگراف با PHP
» نحوه نمایش متن و تصاویر اتفاقی در php و mysql
» ساخت فید خوان آر اس اس (RSS Feed Reader) با php
commentنظرات (۹۱ یادداشت برای این مطلب ارسال شده است)
نویسنده: امین
زمان: ۱۴:۴۴:۵۰ - تاریخ: ۱۳۹۳/۱۱/۱۷
ممنون از مطالب خوبتون
یه سوال داشتم نمیدونم به این بخش مربوط میشه یا نه یکم هم طولانی هست
چطوری میشه آی پی ثابت کاربر رو بدست اورد؟ یعنی حالا فرق نمیکنه ای پی باشه یا چیز دیگه ای . قصدم اینه که کاربر بعد از وارد شدن به حسابش یک مشخصه ای که همیشه واسش ثابت هست مثل ای پی (به این شرط که همیشه ثابت باشه) یعنی در دفعات بعد هم که وارد میشه ثابت باشه رو بدست اورد؟ (نمیدونم تونستم خوب سوالم رو بیان کنم یا نه)
قصدم اینه که اکانت تک کاربره ایجاد کنم یعنی بعد از اولین ورودش یک سری اطلاعات که یکتا و ثابت هست رو در دیتابیس ذخیره بشه و در دفعات بعدی چک بشه اگه درست بود اجازه وارد شدن داشته باشه اون ای پی (یا هرچیز دیگری که ثابت باشه)رو واسه همین کار میخواستم
با تشکر
پاسخ: 
برای اینگونه موارد استفاده از IP راه حل مناسبی نیست، با توجه به اینکه در اینترنت عموما تنها سرورها هستند که برای مدت زمان طولانی IP ثابت دارند و سایر کاربران از IP داینامیک (IP که در هر اتصال به اینترنت تغییر می کند) استفاده می کنند، لذا باید از روش های دیگری استفاده کنید که هر کدام شرایط خاص خودشان را دارند و باید کاملا روی این مباحث مسلط باشید تا بتوانید هدفتان را به درستی پیاده سازی کنید، یکی از این روش ها استفاده از کوکی است، یعنی در ورود کاربر یک کوکی در مرورگر او ایجاد و مقدار آن را در دیتابیس ذخیره داشته باشید، با این روش در هر بار فراخوانی صفحه، مقدار ارسال شده توسط مرورگر با دیتابیس چک می شود، البته قاعدتا محدودیت هایی در این روش هست (به فرض اگر کوکی پاک شود، یا کاربر از مرورگر دیگری استفاده کند و...)، روش دیگر این است که به هر کاربر یک کد رمز اختصاص دهید که توسط متد GET (یا SESSION) به سرور ارسال شود، اگر از این کد رمز، هم زمان دو یا چند نفر در حال استفاده باشند، دسترسی تمام آنها مسدود شود، همچنین می توان سیستم عضوگیری و ورود و خروج طراحی کرد که هر کاربر تنها با حساب خودش قادر به ورود باشد.
نویسنده: amin
زمان: ۱۹:۱۲:۰۴ - تاریخ: ۱۳۹۳/۱۱/۲۲
خیلی ممنون که مثل همیشه با صبر و حوصله پاسخ کاربران رو میدید
واقعا ممنونم
نویسنده: پرهام
زمان: ۲۰:۰۹:۰۴ - تاریخ: ۱۳۹۳/۱۱/۳۰
با سلام
یه سوال داشتم در این رابطه.
چطور میشه کاری کرد که مثل سرور آپدیت آنتی ویروس نود وقتی شخصی یوزر و پسورد آپدیت رو وارد کرد بتونه آپدیت رو انجام بده و اکانت تک کاربره یا چند کاربره ایجاد کنیم؟
پاسخ: 
سلام
سوال کلی است! باید با توجه به هدف برنامه این سیستم را تعریف کنید که قاعدتا مباحث زیادی (بحث سشن و کوکی، کار با توابع، دیتابیس و...) دخیل هستند!
نویسنده: حسین
زمان: ۱۲:۲۵:۴۶ - تاریخ: ۱۳۹۳/۱۲/۰۷
سلام
خیلی قشنگ بود
فقط یه چیز تو فایل htaccess شما سه تا فرمت نوشتین من میخام همه فرمت ها باشه لطفا راهنمایی کنین
با تشکر
پاسخ: 
سلام
می توانید از نمونه دستور زیر استفاده کنید:
RewriteEngine on
RewriteRule ^file/([^/]+)(\.)([^/]+)$ /limit-direct-access/file/download.php?file=$1$2$3 [NC,L]
نویسنده: مهدیار
زمان: ۲۰:۱۶:۲۲ - تاریخ: ۱۳۹۳/۱۲/۱۲
سلام
خداقوت
من تو لوکال تست گرفتم
مد headers_module و rewrite_module رو فعال و آپاچی رو ریست کردم
اما بازم لینک ها مستقیمه
ممنون میشم اگر بنده رو بیشتر راهنمایی کنید.
پاسخ: 
سلام
از چه برنامه سرور مجازی استفاده می کنید؟
نویسنده: مهدیار
زمان: ۲۱:۲۳:۱۴ - تاریخ: ۱۳۹۳/۱۲/۱۲
سلام
ضمن تشکر بابت آموزش های خوبتون
اگر بخوایم لینک غیر مستقیم و قابلیت resume داشته باشه باید چه کار کنم؟
متشکرم
پاسخ: 
سلام
هنگامی که با PHP فایل را به مرورگر ارسال می کنیم برای مدیریت قابلیت دانلود و پیدا کردن Range درخواستی، نیاز به کدنویسی اضافه است، لطفا نمونه کدها و توضیحات موجود در لینک زیر را ملاحظه کنید:
http://stackoverflow.com/questions/157318/resumable-downloads-when-using-php-to-send-the-file
نویسنده: امین
زمان: ۱۶:۵۲:۲۷ - تاریخ: ۱۳۹۳/۱۲/۱۵
سلام و خسته نباشید
بعضی سایت های پاپ اپ میگن در کنار کد ما نباید مثلا بیشتر از 2 تا کد پاپ اپ باشه و یکی دیگه اینکه پاپ اپ باز شده باید 4 ثانیه بمونه تا شمارش بشه
میخواستم بدونم از چه متدی استفاده میکنند تا بعد از گذر از این شرط ها دستور دلخواه اجرا میشه؟
ممنون میشم یه توضیحی بدید
باتشکر فراوان
پاسخ: 
سلام
برای مورد اول روشی جزء بررسی دستی صفحات وجود ندارد (متد قابل اتکایی وجود ندارد که تعداد صفحات pop-up سایت شما را بررسی کند)، برای مورد دوم برنامه نویس می تواند زمان فراخوانی کد در صفحه تا زمان دریافت پاسخ را به شیوه های مختلف (توضیح نحوه این کار ساده و کوتاه نیست!) به دست آورد (نمونه کدها باید بررسی شوند).
نویسنده: morteza
زمان: ۱۹:۱۹:۵۸ - تاریخ: ۱۳۹۴/۰۱/۱۶
با سلام و خسته نباشید
آموزش مثل همیشه عالیه . . . فقط به نظرم یه مشکلی داره
اینکه فایل با این آدرس
http://localhost/limit-direct-access/file/test.zip
اصلا بدون فایل htaccess هم دانلود میشه! در واقع این لینک خودش کاملا مستقیمه.
مگه نباید یه لینک مجازی باشه و فایل واقعا در اون مسیر قرار نگرفته باشه؟!
پاسخ: 
سلام
دستورات htaccess به همین دلیل است که با فراخوانی آدرس فایل اصلی، کاربر به صفحه دیگری منتقل شود (امکان دانلود مستقیم از کاربر گرفته می شود!)، برای هر چه پیچیده تر کردن این فرآیند در صورت آشنایی با Rewrite می توانید الگوهای دیگری نیز داشته باشید.
نویسنده: morteza
زمان: ۲۲:۴۷:۲۸ - تاریخ: ۱۳۹۴/۰۱/۲۰
با سلام و عرض ادب
من رفتم کلی گشتم دنبال کدی که قابلیت دانلود با Resume داشته باشه . . . به این صفحه رسیدم.
http://www.phpclasses.org/package/2221-PHP-Server-files-for-downloading-with-resume-support.html
بسیار عاااالی و کاربردیه . . . گفتم اینجا هم بگم هرکی خواست استفاده کنه.
دارای قابلیت محدود کردن سرعت هم هست.
با تشکر
پاسخ: 
سلام
سپاس فراوان از به اشتراک گذاری.
نویسنده: ehsan
زمان: ۱۶:۴۹:۰۳ - تاریخ: ۱۳۹۴/۰۱/۲۱
با سلام
من تازه با سیستم وردپرس اشنا شدم و یک سایت راه اندازی کردم برای فروش فایل با استفاده از افزونه edd، کاربر بعد از پرداخت میتونه با لینک دانلود غیر مستقیم فایلشو دانلود کنه اما اگه توسط idm بعد از شروع دانلود به لینک نگاهی بیندازه لینک مستقیم فایل رو میشه دید، تو راهنمای خود افزونه نوشته بود که اگه سایت nginx هست باید از redirect rule در htaccess. استفاده کنی، راستش من اصلا سر در نمیارم از php و ازتون میخوام کمکم کنید که چکار کنم ، ببخشید طولانی شد. ممنونم
پاسخ: 
سلام
توضیحات ارائه شده برای دریافت پاسخ کافی نیست! لطفا یک نمونه لینک جهت بررسی درج کنید.
نکته: بهترین سایت جهت دریافت پاسخ مشکلات مربوط به سیستم های مدیریت محتوا، انجمن پشتیبانی آنها است.
نویسنده: ehsan
زمان: ۱۰:۰۵:۴۰ - تاریخ: ۱۳۹۴/۰۱/۲۲
سلام
ببخشید اگه حرف هام واضح نبود ، راستش اونجا کسی پاسخگو نیست یعنی کسی اطلاعی نداره نه که بخواد دریغ کنه، من زیاده خواهی میکنم و متن انگلیسی خود افزونه که راهنمایی کرده رو میذارم براتون و یک لینک جهت نمونه
«By default, Easy Digital Downloads will protect download files inside of the wp-content/uploads/edd/ folder with a .htaccess, but this will only work if your site is running on Apache. If your site is running on NGINX, the download files will not be protected and will be able to be downloaded by anyone. This doc will walk you through protecting the download files by adding a custom redirect rule to your site's configuration.
To properly protect the files on NGINX, you will need to register a redirect in your site's server config that prevents users from directly accessing the download files.
نمونه لینک که زمان دانلود غیر مستقیمه ولی اگه از idm به لینک نگاه کنیم میبینیم که مستقیمه
http://nymkat.ir/?page_id=2  
یه دنیا ممنونم
پاسخ: 
سلام
- بر اساس اطلاعات متن اگر سرور سایت شما از نوع Apache باشد مشکلی برای افزونه پیش نمی آید، اما در سرورهای Nginx (سرور سایت شما از همین نوع است)، موضوع به این راحتی نیست و باید یک دستور Redirect در تنظیمات سرور ثبت کنید که مانع دسترسی مستقیم به فایل های آن دایرکتوری باشد، برای انجام این کار یا باید افزونه WP Engine در سرور سایت شما نصب باشد یا اینکه فایل Config سرور در دسترس و قابل ویرایش باشد (در سرورهای اشتراکی چاره ای جزء طرح موضوع با پشتیبانی هاست وجود ندارد).
http://docs.easydigitaldownloads.com/article/682-protected-download-files-on-nginx
نکته: لینکی که قرار داده اید هیچ کمکی به درک و حل مشکل نمی کند، چون لینک به یک صفحه است (نه فایل) و در صفحه هیچ لینک دانلود فعال دیگری نیز وجود ندارد (ظاهرا دکمه دانلود هم مشکل دارد!).
نویسنده: ehsan
زمان: ۱۱:۲۸:۴۰ - تاریخ: ۱۳۹۴/۰۱/۲۲
سلام
ممنون که به این سرعت پاسخگوی کاربراتونید یعنی من الان از پشتیبانی هاست بخوام که برام چکار کنن میشه بشتر توضیح بدید. اماتورم دیگه چکار کنم :)
یه چیز دیگه لینی که واسه چک گذاشتم سالمه شما به پایین صفحه مراجعه کنید گزینه رایگان خرید رو میبینید .
پاسخ: 
سلام
یا باید افزونه WP Engine را برای شما نصب کنند تا امکان تنظیمات دستی و محدود کردن دایرکتوری های مد نظر (مطابق نمونه موجود در لینکی که در پاسخ قبل ارائه شد) فراهم شود، یا اینکه فایل config سرور ویرایش و دستورات مربوط به محدود کردن دایرکتوری اضافه شود (البته معمولا شرکت های میزبانی تا این حد پشتیبانی را ارائه نمی کنند!).
نویسنده: باران علمشاهی
زمان: ۱۴:۴۵:۱۲ - تاریخ: ۱۳۹۴/۰۲/۳۰
سلام میخوام یه سایت دانلود فیلم بسازم بدون استفاده از وردپرس و جوملا
خودم دارم کدهای php رو مینویسم
میتونین کمکم کنین چه جوری یک فایل تصویری رو دانلود کنم؟؟
پاسخ: 
سلام
سوالتان کلی و مبهم است!
لطفا به صورت دقیق و موردی مشکلتان را مطرح کنید تا امکان پاسخگویی وجود داشته باشد.
نویسنده: ahmad
زمان: ۱۲:۳۰:۲۳ - تاریخ: ۱۳۹۴/۰۳/۱۱
سلام ، ممنون از مطالبی که میزارید.
میخواستم بپرسم برای زمانی که پوشه ها بصورت زیر مجموعه ای اضافه میشند چه تغییری در اچ تی اکسس باید بدم یا باید برای هر پوشه زیر مجموعه چیزی اضافه کنم.
برای مثال :
در همون پوشه فایل من یه پوشه بنام فایل 2 و درون این پوشه یه پوشه دیگه بنام فایل 3 دارم باید چیکار کرد که محدودیت برای فایلهای توی این پوشه ها هم اعمال بشه؟
متشکرم.
پاسخ: 
سلام
آموزش با فرض وجود یک دایرکتوری برای فایل ها ارائه شده، برای ساب دایرکتوری ها باید همین روش را (پس از درک نحوه کار قسمت htaccess و کدهای PHP) پیاده سازی کنید که نیاز به اعمال تغییراتی در کدنویسی است.
نویسنده: کسرا
زمان: ۰۴:۱۸:۰۱ - تاریخ: ۱۳۹۴/۰۵/۱۱
سلام ضمن تشکر از شما بزرگواران میخواستم خواهش کنم همین اموزش رو ویژه افزونه Easy Digital Downloads یا در همین تاپیک یا تاپیک دیگری توضیح بدید . اگر این اموزش رو بزارید واقعا کمک بزرگی به وبمستران زیادی که از این افزونه استفاد میکنند کردید
سپاس
پاسخ: 
سلام
به جهت مرتبط بودن افزونه با CMS وردپرس، قاعدتا این کار باید توسط دوستان فعال در انجمن های وردپرس انجام شود.
paged صفحه 3 از 7




more لطفا دقت کنید که یادداشت های زیر منتشر نشده و حذف خواهند شد:
- یادداشت های خارج از موضوع این مطلب.
- سوالات کلی، غیر ضروری و مشکلاتی که هیچ تلاشی برای رفع آن نکرده باشید.
- نظرات حاوی کدها و اسکریپت های خیلی طولانی (به طور مثال کد کامل قالب وبلاگ).

8 × 6
 refresh
آگهی
رنگین کمان عکس
Ranginkamaan.com

آرشیو عکس های باکیفیت با موضوعات متنوع...
پرشین آی تی
Persianit.net

آموزش و دانلود پروژه های برنامه نویسی سی شارپ (#C)