PDA

View Full Version : سوال: کمک در مورد ساختن کد رهگیری و گرفتن عکس از داوطلب برای ثبت نام اینترنتی



bamzi software
جمعه 22 آذر 1387, 10:21 صبح
سلام دوستان

من با c# و sql2000 صفحه وب طراحی کردم.
در یکی از این صفحات ثبت نام قرار دادم و 2 مورد رو می خوام انجام بدم:

1- می خوام بعد از ثبت نام کد رهگیری به داوطلب بدم.

2- عکس داوطلب رو بگیرم تا برای صدور کارت ازش استفاده کنم.

چطوری باید این 2 کار رو انجام بدم؟
ممنون میشم راهنماییم کنید

milade
جمعه 22 آذر 1387, 10:50 صبح
برا گرفتن عکس از fileupload استفاده کن توی سایت تا بخوای نمونه هست
برا اون کد رهگیری هم از یه تابع رندم استفاده کن که باز اونم توی سایت هست
البته اون فیلد رو خاص کن تا دو تا کد رهگیری مثل هم ثبت نشه
سوالی بود بفرمایید
موفق باشید

mahdi_farhani
جمعه 22 آذر 1387, 15:31 عصر
بهتره برای کد رهگیری فرمول خاص داشته باشی
آقا میلاد همه چیز رو نمیشه با رندوم پیاده کرد ، اول در مورد موضوع فکر کن ،ببین آیا کد رندوم به دردت میخوره
اصلاً چرا کد رهگیری میدن ؟
کد رهگیری میدن که یه زمانی بتونی یکسری اطلاعات رو بدست بیارن!!!!!!!!!!! وگرنه کافی بود که فیلد Autoinceremt میزاشتن آخر ثبت نام هم هون عدد رو بش بدن ، دیگه احتیاجی به کد رندوم هم نبود uniq هم بود.
فرمول بستگی به کاربرد بعد کد رهگیری داره ، هرچیزی میتونه باشه
1-تاریخ
2-ساعت شروع ثبت نام ( مدت زمان ثبت نام ) ساعت پایان ثبت نام
3-کد ورودی به قسمت ثبت نام
4-IP
5-رشته ، درس ، ...... که شرکت کرده
و.......
در آخر هم عمل رمز گذار روی فرمول تولید شده با استفاده از از فرمول های رمز گذاری (پیشنهاد من 3des هست )

milade
جمعه 22 آذر 1387, 17:16 عصر
سلام
البته صحبت شما استاد زمانی قبوله که این فرایند ثبت نام به صورت ویزارد طی بشه تا بتونیم اطلاعات رو بدون نیاز به ذخیره به دست بیاریم وگرنه میبایست از سشن و ... استفاده کرد که زیاد هم عاقلانه نیست !
در هر صورت همین سنجش هم از رندم استفاده میکنه که تاحالا هم تونسته دوام بیاره !
در ضمن اگه میخواستم از auto استفاده کنن نام کاربری هم توی سایتها نمیخواستن
پس نمیشه گفت اگه یه فیلد باشه دیگه بقیه با عمل مشابه کاربرد ندارن !
پ.ن:البته دقیق نمیدونم برا سنجش که چی میکنه چون تا حالا چند بار ثبت نام بیشتر نکردم(نه برا خودم :D )
موفق باشید

mahdi_farhani
جمعه 22 آذر 1387, 18:01 عصر
دوست عزیز هیچ ربطی به ویزارد بودن مراحل کار نداره !!!!!!
میشه بگی به وسیله چه چیزی فهمیدی که سنجش با استفاده از رندوم کد رهگیری رو تولید میکنه .
برای اطلاعت بگم که اکثر اوقات فیلد Auto رو شما در جدوالت داری ( البته اگر از روشهای سرخپوستی استفاده نکنی )
خلاصه مطلب اینه که شما رندوم نمیتونی کد رهگیری قویی بدست بیاری. همیشه آینده نگر باش .

milade
جمعه 22 آذر 1387, 18:21 عصر
wow

برای اطلاعت بگم که اکثر اوقات فیلد Auto رو شما در جدوالت داری ( البته اگر از روشهای سرخپوستی استفاده نکنی )
مگه من گفتم نداریم؟!
(نه حوصله بحث دارم نه دلم میخواد(چت رومه هنوز یادمه :D ))
ولی در کل
1-میشه بگید چرا توی این سایت نام کاربری دارید و به جای اون یه عدد (auto خودتون)رو ندارید؟!
(جواب شما میشه علت اینکه من میگم رندم)
2-رندم چه مشکلی داره؟اینده قرار چی بشه؟حالا ما اگه ندونیم 3 رقم اول ایپی طرف برابر با 3 رقم اول کدمون چی میشه؟!
ممنون و موفق باشید

mahdi_farhani
جمعه 22 آذر 1387, 18:27 عصر
به علت اینکه همیشه باید کارها روی اصول خاصی پیش بره ، هیچ وقت مطالب رو ساده در نظر نگیر.
به جای این همه آف تاپیک میتونستی بحث بهتری رو راه بندازی

bamzi software
شنبه 23 آذر 1387, 12:07 عصر
این خیلی واضحه که با کنترل فایل آپلود عکس رو بگیر و میزان حجم و فرمت رو با type ها.قبلا توضیح دادند.

جناب "tarhebartar"میشه لطف کنین حداقل لینک برام بذارین؟تو search نتونستم متوجه بشم که از کجا باید شروع کنم و به جز کنترل فایل آپلود از چه کنترلهایی استفاده کنم!!!

لطفا راهنماییم کنید،ممنونم


و اینکه برای کد رهگیری از hash و اینها برای یونیک شدنش که قبلا این هم توضیح داده شده.

مشکل آپلود عکس که تموم بشه در این مورد مزاحمتون می شم

milade
شنبه 23 آذر 1387, 13:14 عصر
ای بابا (من مطمعن ام که خودم حتی کد دادم که ویروس یابی هم کنه!)
در کل این یه کنترل فایل اپلود هست:

<asp:FileUpload ID="Fg" runat="server" />
حالا برا ارسال یه دکمه بزار و این کد رو توش بنویس:

Dim sp As String = Request.PhysicalApplicationPath
Dim fx As String
fx = System.IO.Path.GetExtension(Fg.FileName)
If fx = ".gif" Or fx=".jpg" Then
Fg.SaveAs(sp + "Uploads\image\" + Fg.FileName)
Lg.Text = "فایل ذخیره شد"
Hg.Text = "~/Uploads/image/ (http://www..ir/Uploads/image/)" + Fg.FileName
Hg.NavigateUrl = Hg.Text
Else
Lg.Text = "نوع فایل مربوط به فایلهای عکسی نمی باشد"
End If

که فقط اجازه اپلود با فرمت .gif و .jpg رو میده
(ولی بودا)
موفق باشید

bamzi software
شنبه 23 آذر 1387, 14:40 عصر
ممنون ،اول گفته بودم که با c# کد می نویسم:چشمک:...اما ممنون

فقط اینکه متوجه نشدم Hg چیه!!!!???

این کد C#:

string sp=Request.PhysicalApplicationPath;
string fx=null;
fx=System.IO.Path.GetExtension(FileUpload1.FileNam e);
if ((fx==".gif") | (fx==".jpg"))
{
FileUpload1.SaveAs(sp+"Uploads\\image\\" + FileUpload1.FileName);
Label1.Text="فایل ذخیره شد";
Hg.Text = "~/Uploads/image/" + Fg.FileName;
Hg.NavigateUrl = Hg.Text;
}
else
{

Label1.Text="نوع فایل مربوط به فایلهای عکسی نمی باشد";
}

milade
شنبه 23 آذر 1387, 15:48 عصر
شرمنده دقت نکردم
اون hg هم یه hyperlink هست که ادرس فایل رو برمیگردونه(مهم نیست)
موفق باشید

sara_B
شنبه 23 آذر 1387, 17:59 عصر
سلام دوستان

من با c# و sql2000 صفحه وب طراحی کردم.
در یکی از این صفحات ثبت نام قرار دادم و 2 مورد رو می خوام انجام بدم:
...
2- عکس داوطلب رو بگیرم تا برای صدور کارت ازش استفاده کنم.

چطوری باید این 2 کار رو انجام بدم؟
ممنون میشم راهنماییم کنید



با سلام

براي گرفتن عكس از كاربر :
توي ديتا بيس يه فيلد به نام User_Images از جنس nvarchar در نظر بگيريد براي ذخيره ي نام كامل عكس هاتون (نام و پسوند).
واسه سرعت عمل ، بهتره توي فولدر Images كه در ريشه ي وب سايتتون ساختيد، عكس ها رو ذخيره كنيد.(اينجا به ترتيب اولين فولدر : images ، و سپس ساب فولدر Users و مجددا ساب فولدرUsersThumbnails ساخته شده)
بعد از اينكه توي فرم كنترل FileUpload گذاشتيد ، به بخش كد بريد و تابع زير را بنويسيد:
اما قبل از اينكه تابع رو استفاده كنيد ، چند تا نكته مهم بگم :
1-چون ممكنه دو كاربر مختلف ، دو عكس با نام هاي مشابه داشته باشند ، همانطور كه مي دونيد ،عكس نفر دوم روي عكس نفر قبلي ، Overwrite مي شه ، پس عملا تصوير كاربر اول ، از بين مي ره.واسه رفع اين مشكل ، به نام عكس ها در تابع زير(توسط Guid.NewGuid()) ،در هر بار يك عدد 16 بايتي (32 كاراكتري) يكتا اضافه مي كنيم ، تا از تكراري نبودن نام عكس ها مطمئن شويم.
2-در اكثر موارد ، نياز مي شه كه يك نمونه ي Thumbnails (بند انگشتي) از تصاوير را نيز ذخيره كنيم ، تا به هنگام نمايش تصاوير با سايز كوچك ، نياز به نمايش عكس با سايز بزرگ نباشد.(در اينجا عكس هايي كه Thumbnails شدند توي ساب فولدر UsersThumbnails ،و در اندازه ي 200*200 ذخيره مي شوند.)
3-بهتره تمام عكس ها پس از upload شدن ، با يك فرمت واحد، مثلا .jpg روي سرور ذخيره شوند.
4- بايد روي upload شدن عكس ها محدوديت قرار دهيد ، مثلا اجازه ي Upload عكس هاي با سايز بسيار بزرگ را ندهيم ، و يا تنها كاربر مجاز به Upload عكس هاي با فرمت دلخواه ما باشد.


حالا تابع ذخيره ي عكس:


string save_image()
{
string filename = FileUpload1.FileName;
try
{
if (FileUpload1.HasFile == true)
{
string fileExt = System.IO.Path.GetExtension(filename);
if (fileExt.ToLower() == ".jpg" || fileExt.ToLower() == ".gif")
{
int filesize = FileUpload1.PostedFile.ContentLength;
if ((filesize > 5 * 1024) && (filesize < 500 * 1024))
{

filename = System.IO.Path.GetFileNameWithoutExtension(filenam e) + Guid.NewGuid().ToString() + ".jpg";
System.Drawing.Image img_original = System.Drawing.Image.FromStream(FileUpload1.Posted File.InputStream);
System.Drawing.Bitmap bmp_original = new System.Drawing.Bitmap(img_original);
bmp_original.Save(MapPath("~/images/Users/") + filename, System.Drawing.Imaging.ImageFormat.Jpeg);
System.Drawing.Image img = System.Drawing.Image.FromFile(MapPath("~/images/Users/") + filename);
System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(img, 200, 200);
bmp.Save(MapPath("~/images/Users/UsersThumbnail/") + filename, System.Drawing.Imaging.ImageFormat.Jpeg);
Label1.Text = "عكس با موفقيت ذخيره شد.";

}
else
{
Label1.Text = "سايز عكس غير مجاز است ، سايز مجاز بين 5 تا 500 كيلو بايت مي باشد";
}
}
else
{
Label1.Text = "فرمت عكس غير مجاز است ، فرمت مجاز jpg و gif مي باشد";
}
}
else
{
Label1.Text = "لطفا عكس مورد نظر خود را انتخاب فرماييد";
}
}
catch
{
Label1.Text = "عمليات ذخيره ي عكس با مشكل مواجه شد، مجددا تلاش فرماييد";
}
return filename;
}


پس از ذخيره ي عكس با تابع بالا ، نوبت به ذخيره ي نام عكس در ديتا بيس ميرسه ، كه چون تابع بالا نام عكس رو پاس ميده ، به راحتي با يه كوئري اين كار امكان پذيره.

bamzi software
یک شنبه 24 آذر 1387, 08:26 صبح
باز هم ممنونم از شما دوستان خوب،"milade" و"sara_B"..:تشویق:

ّبرای کد رهگیری می تونم همون کاری رو که شما با گرفتن اسم فایل و ساختن کد 16 رقمی انجام دادین رو با گرفتن کد ملی افراد انجام بدم؟

چطوری کدش رو بنویسم؟

milade
یک شنبه 24 آذر 1387, 13:24 عصر
ّبرای کد رهگیری می تونم همون کاری رو که شما با گرفتن اسم فایل و ساختن کد 16 رقمی انجام دادین رو با گرفتن کد ملی افراد انجام بدم؟

چطوری کدش رو بنویسم؟
شما میخواید چی کنید؟!
یه خورده بیشتر توضیح بدید
این 16 رقمیه از چی میخواد بیرون بیاد؟کدملی چه ربطی داره؟

bamzi software
دوشنبه 25 آذر 1387, 07:57 صبح
شما میخواید چی کنید؟!
یه خورده بیشتر توضیح بدید
این 16 رقمیه از چی میخواد بیرون بیاد؟کدملی چه ربطی داره؟

من میخوام در آخر ثبت نام به داوطلب کد رهگیری بدم(مثل ثبت نام کنکور).

فکر کردم حالا که در قسمت آپلود عکس با گرفتن اسم عکس یک کد شاخص تولید شد(برای ذخیره در دیتابیس) ،پس در اینجا با گرفتن کد ملی شخص هم میشه کد شاخصی تولید کرد..

اشتباه فکر کردم؟

peyman13618
دوشنبه 16 دی 1387, 20:09 عصر
من میخوام در آخر ثبت نام به داوطلب کد رهگیری بدم(مثل ثبت نام کنکور).

فکر کردم حالا که در قسمت آپلود عکس با گرفتن اسم عکس یک کد شاخص تولید شد(برای ذخیره در دیتابیس) ،پس در اینجا با گرفتن کد ملی شخص هم میشه کد شاخصی تولید کرد..

اشتباه فکر کردم؟

یعنی میشه اسم فایل رو با یه اسم دلخواه rename کرد و بعد ذخیره کرد؟ مثلا با همین کد ملی یا کد دانشجویی که تو یک تکست باکس وارد شده؟ دستور rename چجوریه؟ ببخشید من سوالاتم همیشه ابتدایی هستش!

milade
دوشنبه 16 دی 1387, 21:03 عصر
سلام
بله که میشه !
مثلا همین کد #C میشه این :

string sp=Request.PhysicalApplicationPath;
string fx=null;
string xxx="har chi !";
fx=System.IO.Path.GetExtension(FileUpload1.FileNam e);
if ((fx==".gif") | (fx==".jpg"))
{
FileUpload1.SaveAs(sp+"Uploads\\image\\" + xxx+fx);
Label1.Text="فایل ذخیره شد";
Hg.Text = "~/Uploads/image/" + Fg.FileName;
Hg.NavigateUrl = Hg.Text;
}
else
{

Label1.Text="نوع فایل مربوط به فایلهای عکسی نمی باشد";
}
خوب حالا تحلیل:
در اینجا ما فقط این خط رو اضافه کردیم :

string xxx="har chi !";
این xxx همون شماره یا هر چی میخوای هست
و اینجا رو هم تغییر دادیم:

FileUpload1.SaveAs(sp+"Uploads\\image\\" + xxx+fx);
که میایم xxx رو میگیریم + پسوند فایل میکنیم !
به همین راحتی و خوشمزگی !
موفق باشید

bamzi software
یک شنبه 11 اسفند 1387, 20:14 عصر
الگوریتم یا تابع خاصی برای ساختن کد شاخص وجود داره؟

mh19842008
یک شنبه 11 اسفند 1387, 20:31 عصر
سلام
الگوریتم های و راهکارهای دوستانخوبند
اگه میخوای برای دانش آموزان کد رهگیری تولید کنی
دوست من تولید کد یکتا کار مشکلی نیست
یک الگوریتم میتونه این باشه: سال+یک کد تصادفی(random)+دو رقم اول کد مدرسه+دو رقم آخر کد ملی
برای اطمینان قبل از اختصاص دادن یکبررسی داخل جدولت داشته باش
موففق باشید

bamzi software
یک شنبه 11 اسفند 1387, 21:55 عصر
پس الگوریتم رمزگذاری کجا استفاده میشه؟مثل "3des" که یکی از دوستان گفته بودن، یا الگوریتم hash..


یک الگوریتم میتونه این باشه: سال+یک کد تصادفی(random)+دو رقم اول کد مدرسه+دو رقم آخر کد ملیاون قسمت "یک کد تصادفی(random)" چطوری تولید میشه؟

mh19842008
دوشنبه 12 اسفند 1387, 10:13 صبح
در مورد کلاس RNGCryptoServiceProvider و Random برای تولید عدد تصادفی جستجو کن
در مورد رمز گذاری به علت اینکه قراره کد رهگیری با ماندگاری کم تولید بشه
3des یا des جستجو کن
موفق باشی