مشاهده نسخه کامل
: امکان دانلود فایل برای کاربران خاص
fereshte222
07-04-2007, 12:22
با سلام
من می خواهم فایلی را روی سرور برای دانلود بگذارم منتها می خواهم فقط یک سری کاربران خاص
که پسورد مخصوص دارند و این پسورد هم از دیتابیس خوانده می شود بتوانند آن را دانلود کنند
لطفا من را راهنمایی نمایید
NoneForce
07-04-2007, 12:35
با سلام
من می خواهم فایلی را روی سرور برای دانلود بگذارم منتها می خواهم فقط یک سری کاربران خاص
که پسورد مخصوص دارند و این پسورد هم از دیتابیس خوانده می شود بتوانند آن را دانلود کنند
لطفا من را راهنمایی نمایید
سلام
اگر امنيت خيلي مهم است، يكي از بهترين راهها ذخيره فايل داخل ديتابيس است.
درصورتيكه اگر فايل داراي آدرس مشخص باشد ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]) نميتوان روي امنيت زياد حساب كرد.
فايل را داخل ديتابيس مثلا بصورت rar همراه با password ذخيره كنيدو با استفاده از يك صفحه رابط كه كلمه عبور را كنترل مي كند بصورت Response.BinaryWrite براي كاربر ارسال كنيد.
يا فايل را خارج از www قرار دهيد و بوسيله يك صفحه رابط فايل را بصورت گفته شده ارسال كنيد.
fereshte222
07-04-2007, 13:08
سلام.از راهنمایتون ممنونم
اما اول یه سوال و اون اینکه ایا برای فایل های با حجم زیاد مشکلی ایجاد نمیشود؟
در ضمن شما میتونید یه نمونه برنامه برای من بفرستید راستش خیلی فوری است .و سریع باید فایلمون را برای دانلود بذاریم
بازم ممنون
NoneForce
07-04-2007, 14:17
سلام.از راهنمایتون ممنونم
اما اول یه سوال و اون اینکه ایا برای فایل های با حجم زیاد مشکلی ایجاد نمیشود؟
در ضمن شما میتونید یه نمونه برنامه برای من بفرستید راستش خیلی فوری است .و سریع باید فایلمون را برای دانلود بذاریم
بازم ممنون
سلام
بستگي دارد به چي بگيد حجيم، فكر نكنم 10 -20 مگ مشكلي داشته باشد.
اين هم يك مثال :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
يا
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام
در کل سریعترین راه اضافه کردن یک فایل ashx است (Generic Handler)
بعد از اضافه کردن فایل شما باید داخل رویه ProcessRequest و با توجه به مقادیر context دستورات لازم را
بنویسید. به کد نمونه زیر دقت کنید
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
این کد فایل درخواستی را از QueryString میگیرد و در صورت True بودن Allow در شی Session دانلود را شروع
میکند.
1- فرض شده تمامی فایلها در پوشه Download و در ریشه سایت هستند. و واضح است که با تنظیم IIS یا یک فایل web.config باید جلوی ورود به پوشه Dowwnload ها بسته شود تا کاربران نتوانند با حدس زدن مسیر مدیر ashx ما را دور بزنند!
2- کد ها باید اصلاح شوند.
3- باید پیش بینی های خطا صورت گیرد
4- اعتبار سنجی کاربر را با الگوریتم خود اصلاح کنید.
بعد هر کجا خواستید لینک دانلود بدهید،
باید به جایب مسیر اصلی این لینک را بگذارید handlerpagename.ashx?File=filename.zip
handlerpagename نام اصلی فایل ashx شما است و filename.zip نام فایل درخواستی
من خودم اولین بار که سایتم را آپلود کردم از این روش استفاده کردم ولی بعد تغییرش دادم و حالا که وقت بیشتری
داشته ام از کد بسیار جالب دیگری استفاده کرده ام. ولی این چیزی از قدرت و سرعت فایلهای ashx نمی کاهد.
fereshte222
07-04-2007, 21:52
من خودم اولین بار که سایتم را آپلود کردم از این روش استفاده کردم ولی بعد تغییرش دادم و حالا که وقت بیشتری
داشته ام از کد بسیار جالب دیگری استفاده کرده ام.
.
سلام خسته نباشید
راستش میدونم که انتظارم خیلی نابجا است ولی اگه این برنامتون را برای من ارسال کنید خیلی ممنون میشوم
البته اگه مایل هستید.
راستش من درگیر یک برنامه دیگر هستم و از اونجایی که تازه وارد هستم نمیتونم درگیر برنامه جدیدی شوم از طرفی یه فایل برای دانلود داریم که حتما باید برای کاربران خاصمون قرار دهیم.
در ضمن میشه درمورد فایل های ashx بیشتر توضیح بدهید
خیلی ممنون
سلام
برنامه من به کار شما نمی آید!
تازه سورس اولیه را دیگر ندارم و کد جدید از روش پیچیده تری استفاده میکند که جنبه های خاص امنیتی را هم لحاظ کرده.
من نمی خواستم اجازه دانلود را برای کاربران خاص فراهم کنم (همه اجازه دانلود مستقیم را دارند) فقط میخواستم آمار دقیق دانلودها را داشته باشم. (چندبار؟ آخرین تاریخ دانلود؟ و...)
طبیعی است که بادادن مسیر مستقیم پوشه به هدفم نمی رسیدم (و همچنین شما!)
ولی بنیان کار یکی است و آن در دست گیری اتوبان دانلودها است!!!!! حال چه برای شمارش و آمار گیری و چه برای جلوگیری از دانلود افراد غیر مجاز.
به همان کد نمونه رجوع کنید. به نظر من که اصل مطلب را به روشنی توضیح داده.
sadegh13591367
10-10-2012, 10:01
سلام
من می خواهم هر کاربر فایل مربوط به خودش را بتواند دانلود کند تکه کدی رانوشتم که همهکاربران 1فایل را می توانند دانلود کنند.
لطفا کمکم کنید.
سلام
من می خواهم هر کاربر فایل مربوط به خودش را بتواند دانلود کند تکه کدی رانوشتم که همهکاربران 1فایل را می توانند دانلود کنند
فایل مخصوص خودش یعنی چه؟
یعنی هر کاربر فقط یک تک فایل خاص را باید دانلود کند؟ یا یک گروه فایل؟
فایلهای دو کاربر مختلف یک نام هستند یا تفاوت نام هم دارید؟
...
شرایط را بیشتر تشریح کنید تا بتوان کوتاه ترین راه حل را پیشنهاد داد.
(((
طبیعتاً یکی از کاملترین راه ها ذخیره اطلاعات فایلها و مجوزهای دسترسی و... در جداول دیتابیس است که بعد برنامه برای هر کاربر مجوزها و بررسی و Stream مربوطه را ارسال کند...
)))
موفق باشید
sadegh13591367
28-10-2012, 09:26
سلام
سایتی که می خواهم طراحی کنم این هست که تعدادی مشتری ثبت نام می کنند و سپس فایلی را می خواهند ترجمه کنند را آپلود می کنند و سپس تعدای از مترجمین هم برای همکاری ثبت نام می کنند و وقتی که مترجم فایلهای مربوط به مشتریان را ترجمه کرد فایلها را آپلود می کند سپس هر مشتری باید بتواند فایل مخصوص خودرا که مترجم برای آن ترجمه کرده را دانلود کنند.
احتمالا باید از sessionاستفاده کنم ولی نمیدونم طرز استفاده از آن چطوری است.
ممنونم
سلام
سایتی که می خواهم طراحی کنم این هست که تعدادی مشتری ثبت نام می کنند و سپس فایلی را می خواهند ترجمه کنند را آپلود می کنند و سپس تعدای از مترجمین هم برای همکاری ثبت نام می کنند و وقتی که مترجم فایلهای مربوط به مشتریان را ترجمه کرد فایلها را آپلود می کند سپس هر مشتری باید بتواند فایل مخصوص خودرا که مترجم برای آن ترجمه کرده را دانلود کنند.
اول آنکه تمام مطالب زیر بر محوریت دانلود است.
در این شرایط به مکانیزم کامل تری نیاز دارید و باز هم به دلایلی مشخص شد به پیچیده ترین شرایط نیاز ندارید ... در واقع رابطه کاربر-فایل شما یک به چند است.
(نه یک به یک و نه چند به چند)
مسدود کردن دسترسی کاربران به فایلهای خودشان را باید به نوعی ذخیره کنید و بتوانید با کد مشخص کنید ...
الف) باید بتوانید فهرستی از فایلهای هر فرد بدست آورید
ب) باید بتوانید مشخص کنید هر فرد اجازه دانلود یک فایل مشخص را دارد یا خیر ...
==============
راه حل اول)
حتماً جدولی برای کاربران در دیتابیس دارید که حاوی فهرست User, Pass ها است؟!
یک جدول دیگر هم برای فایلها اضافه کنید که {حاوی نام فایل/مسیر فایل در هارد/کاربر مالک} فایل باشد.
الف) بعد از لوگین کاربرتان میتوانید با یک SELECT ساده همه فایلهای مرتبط با او را استخراج کنید و در جدولی نشان اش دهید ...
ب) در زمان دانلود هم به سادگی ID فایل مورد نظر را در دیتابیس چک میکنید تا مطمئ شوید کاربر جازه دانلودش را دارد
حداقل جداول پیشنهادی:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
راه حل دوم)
یک پوشه به نام هر Username یا ID_User در هارد تشکیل میدهید و فایل های هر فرد را درون پوشه خودش میریزید.
الف) باز هم به سادگی با استراج فایل های چوشه هر فرد میتوانید فهرست فایلهای او را نشان دهید
ب) و در زمان دانلود هم روت مسیر دانلود را پوشه مخصوص او فرض میکنید و با این کار فرد به دانلود محتویات همان پوشه محدود میشود.
(گرچه باید نکته کوچکی را در کدتان لحاظ کنید تا کسی نتواند این قابلیت را دور بزند ولی فعلاً این نکته خیلی مهم نیست)
==============
کد نمونه (فقط به عنوان یک بذر اولیه یا سرنخ که باید پیگیری و تکمیلش کنید):
یک Generic Handler با کدی شبیه این اضافه کنید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشید.
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.