مشاهده دست آورد نظرسنجی: مطالب اين تاپيك چگونه است؟؟؟

رای دهنده
9. شما نمی توانید در این رای گیری رای بدهید
  • كاملا نامفيد است و نبايد ذكر مي شد!

    1 11.11%
  • مفيد بوده وليكن كاملا تكراري است!

    2 22.22%
  • مفيد بوده و جديد و تازه هستند

    1 11.11%
  • كاملا مفيد است و براي من جديد و تازه بود و استفاده بردم!

    5 55.56%
نمایش نتایج 1 تا 15 از 15

نام تاپیک: ايجاد حساب كاربري براي برنامه و Login شدن بآن

  1. #1
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    1,641

    Cool ايجاد حساب كاربري براي برنامه و Login شدن بآن

    مواد لازم : 3 تا فرم -( ايجاد حساب كاربري - تغيير و حذف حساب كاربري - تغيير رمز ورود ) ، يك بانك اطلاعاتي با فيلد به مقدار لازم ، توابع Query و ...

    ابتدا فرم ها رو به اين ترتيب بسازيد كه كدهاشونو اينجا گذاردم مي تونيد Copy‌ كنيد و استفاده كنيد:

    ايجاد حساب كاربري:



    كد فرم :


    Public Class CreateAccount
    Enum UserTypes
    Limit = 0
    Admin = 1
    End Enum
    Public Property UserName() As String
    Get
    Return UserNameBox.Text
    End Get
    Set(ByVal value As String)
    UserNameBox.Text = value
    End Set
    End Property
    Public Property Password() As String
    Get
    Return PasswordBox.Text
    End Get
    Set(ByVal value As String)
    PasswordBox.Text = value
    End Set
    End Property
    Public Property ConfirmPassword() As String
    Get
    Return ConfirmPasswordBox.Text
    End Get
    Set(ByVal value As String)
    ConfirmPasswordBox.Text = value
    End Set
    End Property
    Public Property Description() As String
    Get
    Return DescriptionBox.Text
    End Get
    Set(ByVal value As String)
    DescriptionBox.Text = value
    End Set
    End Property
    Dim UserTP As UserTypes
    Public Property UserType() As UserTypes
    Get
    Return UserTP
    End Get
    Set(ByVal value As UserTypes)
    UserTP = value
    End Set
    End Property
    Public Property SavePass() As Boolean
    Get
    Return SaveUserPassBox.Checked
    End Get
    Set(ByVal value As Boolean)
    SaveUserPassBox.Checked = value
    End Set
    End Property


    Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
    ErrorProvider1.Clear()
    If Len(UserNameBox.Text) = 0 Then
    ErrorProvider1.SetError(UserNameBox, "نام کاربري را وارد کنيد")
    Exit Sub
    End If

    FirstForm.UsersTableAdapter1.Fill(FirstForm.UserAc countsDataSet1.Users)
    With FirstForm.UserAccountsDataSet1.Users
    For I = 0 To .Count - 1
    If Me.UserName = Trim(.Item(I).UserName) Then
    ErrorProvider1.SetError(UserNameBox, "اين نام کاربري قبلا استفاده شده است")
    Exit Sub
    End If

    Next
    End With
    If Not PasswordBox.Text = ConfirmPasswordBox.Text Then
    If Len(PasswordBox.Text) > 0 Or Len(ConfirmPasswordBox.Text) > 0 Then
    ErrorProvider1.SetError(PasswordBox, "رمز ورود و تائيد آن با هم همخواني ندارد")
    ErrorProvider1.SetError(ConfirmPasswordBox, "رمز ورود و تائيد آن با هم همخواني ندارد")
    Exit Sub
    End If

    End If

    Me.DialogResult = System.Windows.Forms.DialogResult.OK
    Me.Close()
    End Sub

    Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
    Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
    Me.Close()
    End Sub


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim FBD As New OpenFileDialog With {.Title = "Select an image file..."}
    With FBD

    If .ShowDialog(Me) = Windows.Forms.DialogResult.Cancel Then Exit Sub
    'ROSTAM Statements
    UserPhotoBOX.Tag = .FileName
    UserPhotoBOX.ImageLocation = .FileName
    ' UserPhotoBOX.Image = Image.FromFile(.FileName)
    End With
    End Sub

    Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
    UserTP = UserTypes.Limit
    End Sub

    Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
    UserTP = UserTypes.Admin
    End Sub

    Private Sub CreateAccount_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If UserTP = UserTypes.Admin Then
    RadioButton2.Checked = True
    Else
    RadioButton1.Checked = True
    End If
    End Sub
    End Class

  2. #2
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    1,641

    نقل قول: ايجاد حساب كاربري براي برنامه و Login شدن بآن

    فرم دوم تغيير رمز ورود يا مديريت حساب :

    شكل:



    كد:


    Public Class ModifyAccount
    Enum UserTypes
    Limit = 0
    Admin = 1
    End Enum
    Public Property UserName() As String
    Get
    Return UserNameBox.Text
    End Get
    Set(ByVal value As String)
    UserNameBox.Text = value
    End Set
    End Property
    Public Property Password() As String
    Get
    Return PasswordBox.Text
    End Get
    Set(ByVal value As String)
    PasswordBox.Text = value
    End Set
    End Property
    Public Property ConfirmPassword() As String
    Get
    Return ConfirmPasswordBox.Text
    End Get
    Set(ByVal value As String)
    ConfirmPasswordBox.Text = value
    End Set
    End Property
    Public Property Description() As String
    Get
    Return DescriptionBox.Text
    End Get
    Set(ByVal value As String)
    DescriptionBox.Text = value
    End Set
    End Property
    Dim UserTP As UserTypes
    Public Property UserType() As UserTypes
    Get
    Return UserTP
    End Get
    Set(ByVal value As UserTypes)
    UserTP = value
    End Set
    End Property
    Public Property SavePass() As Boolean
    Get
    Return SaveUserPassBox.Checked
    End Get
    Set(ByVal value As Boolean)
    SaveUserPassBox.Checked = value
    End Set
    End Property

    Public Property OldPassword() As String
    Get
    Return OldPasswordBox.Text
    End Get
    Set(ByVal value As String)
    OldPasswordBox.Text = value
    End Set
    End Property

    Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
    ErrorProvider1.Clear()
    If Len(UserNameBox.Text) = 0 Then
    ErrorProvider1.SetError(UserNameBox, "نام کاربري را وارد کنيد")
    Exit Sub
    End If

    FirstForm.UsersTableAdapter1.Fill(FirstForm.UserAc countsDataSet1.Users)
    If Not Me.OldPassword = Trim(FirstForm.UsersTableAdapter1.GetPassbyUserNam e(Me.UserName)) Then
    ErrorProvider1.SetError(OldPasswordBox, "رمز ورود فعلي را اشتباه وارد کرده ايد")
    Exit Sub
    End If

    If Not PasswordBox.Text = ConfirmPasswordBox.Text Then
    If Len(PasswordBox.Text) > 0 Or Len(ConfirmPasswordBox.Text) > 0 Then
    ErrorProvider1.SetError(PasswordBox, "رمز ورود و تائيد آن با هم همخواني ندارد")
    ErrorProvider1.SetError(ConfirmPasswordBox, "رمز ورود و تائيد آن با هم همخواني ندارد")
    Exit Sub
    End If

    End If
    Me.DialogResult = System.Windows.Forms.DialogResult.OK
    Me.Close()
    End Sub

    Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
    Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
    Me.Close()
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim FBD As New OpenFileDialog With {.Title = "Select an image file..."}
    With FBD
    If .ShowDialog(Me) = Windows.Forms.DialogResult.Cancel Then Exit Sub
    'ROSTAM Statements
    UserPhotoBOX.Tag = .FileName
    UserPhotoBOX.ImageLocation = .FileName
    End With

    End Sub

    Private Sub ModifyAccount_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    Select Case UserType
    Case UserTypes.Admin
    RadioButton2.Checked = True
    Case UserTypes.Limit
    RadioButton1.Checked = True
    End Select
    End Sub

    Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
    UserType = UserTypes.Limit
    End Sub

    Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
    UserType = UserTypes.Admin
    End Sub
    End Class

  3. #3
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    1,641

    نقل قول: ايجاد حساب كاربري براي برنامه و Login شدن بآن

    فرم سوم براي Login شدن و تغيير حساب كاربري براي استفاده از برنامه

    شكل:



    كد:


    Public Class LoginForm
    Public Property UserName() As String
    Get
    Return UserBox.Text
    End Get
    Set(ByVal value As String)
    UserBox.Text = value
    End Set
    End Property
    Public Property Password() As String
    Get
    Return PasswordBox.Text
    End Get
    Set(ByVal value As String)
    PasswordBox.Text = value
    End Set
    End Property

    Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
    ErrorProvider1.Clear()
    If Not Me.Password = Trim(FirstForm.UsersTableAdapter1.GetPassbyUserNam e(Me.UserName)) Then
    ErrorProvider1.SetError(PasswordBox, "رمز ورود را اشتباه وارد کرده ايد")
    Exit Sub
    End If
    Me.DialogResult = System.Windows.Forms.DialogResult.OK
    Me.Close()
    End Sub

    Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
    Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
    Me.Close()
    End Sub

    Private Sub LoginForm_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If UserBox.Items.Count > 0 Then
    UserBox.SelectedIndex = 0
    End If
    End Sub
    End Class

  4. #4
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    1,641

    نقل قول: ايجاد حساب كاربري براي برنامه و Login شدن بآن

    حال طبق آموزشي كه در اين تاپيك قرار دارد يك LocalDatabase براي برنامه ساخته با يك جدول با نام Users با اين فيلد ها:



    و اين هم تمام Query (توابع) هايست كه بايد براي جدول Users بسازيد ( بهمراه نامشان قيد شده اند براي اينكه اشتباه نشود ابتدا نام سپس : و سپس دستور Query)


    InsertQuery:
    INSERT INTO Users
    (UserName, Password, IsAdmin, ShowPass, Description)
    VALUES (@UserName,@Password,@IsAdmin,@ShowPass,@Descripti on)

    UpdateQuery:
    UPDATE Users
    SET UserName = @UserName, Password = @Password, IsAdmin = @IsAdmin, ShowPass = @ShowPass, Description = @Description
    WHERE (UserName = @UserName)

    DeletebyUserName:
    DELETE FROM Users
    WHERE (UserName = @UserName)

    GetUserTaypeby:
    SELECT IsAdmin AS Expr1
    FROM Users
    WHERE (UserName = @UserName)

    GetPassByUserName:
    SELECT Password AS Expr1
    FROM Users
    WHERE (UserName = @UserName)

    GetLimitCount:
    SELECT COUNT(*) AS Expr1
    FROM Users
    WHERE (IsAdmin = 0)

    GetCountUsers:
    SELECT COUNT(*) AS Expr1
    FROM Users

    GetAdminCounts:
    SELECT COUNT(*) AS Expr1
    FROM Users
    WHERE (IsAdmin = 1)
    آخرین ویرایش به وسیله ROSTAM2 : دوشنبه 12 تیر 1391 در 11:02 صبح دلیل: Link Address and any Query Code

  5. #5
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    1,641

    Red face نقل قول: ايجاد حساب كاربري براي برنامه و Login شدن بآن

    اين هم DropDownButton و آيتم هاش براي كار با حسابهاي كاربري



    در ضمن براي پروژه سه متغير عمومي در يك ماجول با نام هاي CurrentUserName و CurrentPassword بسازيد

    اينم يادم رفت بگم كه يك تابع در همون ماجول بسازيد با نام IsAdmin براي شناسايي نوع حساب كاربري

    تابع IsAdmin


    Function IsAdmin() As Boolean
    If Len(CurrentUserName) > 0 Then
    Return FirstForm.UsersTableAdapter1.GetUserTypeby(Current UserName)
    Exit Function
    ElseIf Len(CurrentUserName) = 0 Then
    Return True
    Exit Function
    End If
    Return False
    End Function
    آخرین ویرایش به وسیله ROSTAM2 : سه شنبه 13 تیر 1391 در 17:34 عصر دلیل: تصحيح

  6. #6
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    1,641

    نقل قول: ايجاد حساب كاربري براي برنامه و Login شدن بآن

    اينم يادم رفت بگم براي نمايش پنجره Login قبل از اجراي برنامه اين متد رو در يك ماجول بنويسيد:


    Sub ShowLoginForm()
    FirstForm.UsersTableAdapter1.Fill(FirstForm.UserAc countsDataSet1.Users)
    If FirstForm.UsersTableAdapter1.GetCountUsers = 0 Then
    Exit Sub
    End If
    LoginForm.UserBox.Items.Clear()
    With FirstForm.UserAccountsDataSet1
    For I = 0 To .Users.Count - 1
    LoginForm.UserBox.Items.Add(.Users.Item(I).UserNam e)
    Next
    End With
    If LoginForm.ShowDialog(FirstForm) = DialogResult.Cancel Then
    End
    End If
    CurrentUserName = LoginForm.UserName
    CurrentPassword = LoginForm.Password
    End Sub


    سپس وارد Application Events از Project Properties لبه Application شده و اين متد را در پروسيجر StartUp صدا بزنيد:


    Private Sub MyApplication_Startup(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.StartupE ventArgs) Handles Me.Startup
    ShowLoginForm()
    End Sub

  7. #7

    نقل قول: ايجاد حساب كاربري براي برنامه و Login شدن بآن

    با تشکر از زحمتی که کشیدی.*

    خودم می خواستم یه برنامه شبیه این بنویسم بعد یه سئوال کوچیک ؟؟؟ الگوریتم کلی کار چیه ؟؟؟ یعنی چطور باید توی بانک سطح دسترسی کاربران رو تعیین بکنیم؟؟؟

    با تشکر.*

  8. #8
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    1,641

    نقل قول: ايجاد حساب كاربري براي برنامه و Login شدن بآن

    هز طريق اين QUERY تشخيص داده مي شه آيا كاربر دسترسي كامل داره يا نه

    GetUserTaypeby:
    SELECT IsAdmin AS Expr1
    FROM Users
    WHERE (UserName = @UserName


    و بدين طريق ميتوان بتوسط نام كاربر نوع حساب كاربري را شناخت


    Dim UserAccountType As Boolean = UsersTableAdapter1.GetUserTypeby(UserName$)


    كه براي سهولت تابعي با نام IsAdmin ساختيم كه به اين كار كمك مي كنه (دونستن نوع حساب) -->
    پست شماره 5

    Function IsAdmin() As Boolean
    If Len(CurrentUserName) > 0 Then
    Return FirstForm.UsersTableAdapter1.GetUserTypeby(Current UserName)
    Exit Function
    ElseIf Len(CurrentUserName) = 0 Then
    Return True
    Exit Function
    End If
    Return False
    End Function

    تنظيمات نحوه دسترسي كاربران عادي در Application Settings ذخيره ميشه كه كنترل اين تنظيمات در بخشي از برنامه به نام Settings (تنظيمات) بر عهده كاربراني است كه دسترسي كامل به اطلاعات دارند

    بالفرض مثال ويرايش اطلاعات با عنوان DisableModifyInformation در ApplicationSettings با نوع داده Boolean براي دسترسي محدود ارائه داديم

    كه مي شود اين


    IF IsAdmin = False Then
    ModifyButton.Enabled = Not My.Settings.DisableModifyInformation
    End If


    اين براي زماني است كه كاربر پنجره مديريت اطلاعات را باز كرده و يا تازه مي كند

    اما براي زماني كه مي خواهيم كليد فعال باشد و كاربر كليك كند:


    IF IsAdmin = False Then
    If My.Settings.DisableModifyInformation = True
    Msgbox( "You cant Access this option via this User Account: " + CurrentUserName$,Exclumation)
    Exit Sub
    End If
    End If
    آخرین ویرایش به وسیله ROSTAM2 : چهارشنبه 28 تیر 1391 در 20:56 عصر دلیل: ...

  9. #9

    نقل قول: ايجاد حساب كاربري براي برنامه و Login شدن بآن

    من با تقاسیر زیاد چیزی دستگیرم نشد.

    اما من می خوام این کارو کنم:
    مثلا فرض بکن که یه برنامه دو جور کاربر داره :

    1- کاربر معمولی(تنها کاری که می تونه بکنه جست و جوه)
    2- کاربر مدیر (همه ی عملیات رو می تونه انجام بده)

    حالا یه یه نفر رو می خوان بعنوان کاربر جدید وارد بانک بشه

    اگر کاربر معمولی باشه مفدار 1 ذخیره میشه.

    اگر کاربر مدیر باشه مقدار 2 ذخیره بشه.

    ===========================================

    کاربری می خواد وارد سیستم بشه:

    باید مشخص بکنه که با چه USER وارد سیستم بشه

    که این جوری تعریف می کنیم:

      If Val = 1 Then 'کاربر معمولی
    Button2.Enabled = False
    ElseIf Val = 2 Then 'کاربر مدیر
    Button2.Enabled = True
    End If

  10. #10
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    1,641

    نقل قول: ايجاد حساب كاربري براي برنامه و Login شدن بآن

    در اصل فيلد IsAdmin مقدار 0 و 1 رو مي گيره كه اگر 0 شد حساب كاربري ايجاد شده عادي است در غير اينصورت حساب مديريتي است

  11. #11

    نقل قول: ايجاد حساب كاربري براي برنامه و Login شدن بآن

    در اصل فيلد IsAdmin مقدار 0 و 1 رو مي گيره كه اگر 0 شد حساب كاربري ايجاد شده عادي است در غير اينصورت حساب مديريتي است
    یعنی شما هم همین الگوریتم رو که من بالا گفتم رو استفاده کردید ؟؟؟

    Public Class LoginForm
    Public Property UserName() As String
    Get
    Return UserBox.Text
    End Get
    Set(ByVal value As String)
    UserBox.Text = value
    End Set
    End Property


    این قطع کد رو هم لطفا توضیح بدید

    با تشکر زیاد:

  12. #12
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    1,641

    نقل قول: ايجاد حساب كاربري براي برنامه و Login شدن بآن

    Public Property UserName() As String
    Get
    Return UserBox.Text
    End Get
    Set(ByVal value As String)
    UserBox.Text = value
    End Set
    End Property
    اين يك پراپرتي هستش كه مستقيما اطلاعات رو از يك TextBoxمي گيره و يا به اون ارائه مي ده و نيازي نيست پس از تائيد فرم مقداري رو به اين پراپرتي ارائه بديد
    چون بهمراه فراخواني پراپرتي مقدار TextBox به اون ارائه داده مي شه


    If LoginForm.ShowDialog(me) = Cancel Then Exit Sub
    Msgbox( LoginForm.UserName)

  13. #13

    نقل قول: ايجاد حساب كاربري براي برنامه و Login شدن بآن

    نقل قول نوشته شده توسط ROSTAM2 مشاهده تاپیک
    در اصل فيلد IsAdmin مقدار 0 و 1 رو مي گيره كه اگر 0 شد حساب كاربري ايجاد شده عادي است در غير اينصورت حساب مديريتي است
    اگه میشه سورس شو بذارید لطفا

  14. #14
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    1,641

    نقل قول: ايجاد حساب كاربري براي برنامه و Login شدن بآن

    اين هم سورس براي نمونه:

    http://rostam2.persiangig.com/other/LogInSource.zip

  15. #15
    کاربر دائمی آواتار ROSTAM2
    تاریخ عضویت
    اسفند 1390
    محل زندگی
    فارس
    پست
    1,641

    نقل قول: ايجاد حساب كاربري براي برنامه و Login شدن بآن

    یادش بخیر یک قرن پیش چقد جوون و شاداب بودم و چه تاپیکایی ایجاد می کردم: تو این تابیک فقط امنیت رمز عبور باید رعایت می شد که این هم تاپیکی برای این مضمون(نپرس ک نمی دونم معنی مضمون چیه فقط شنیدم):

    آموزش:
    تبدیل پسور کاربر به متن امن برای ذخیره در دیتابیس
    آخرین ویرایش به وسیله ROSTAM2 : دوشنبه 13 شهریور 1402 در 09:25 صبح

تاپیک های مشابه

  1. ايجاد فرم لوگين براي برنامه با sql
    نوشته شده توسط HAMEDvbc در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 5
    آخرین پست: جمعه 19 خرداد 1391, 14:01 عصر
  2. پاسخ: 5
    آخرین پست: دوشنبه 18 بهمن 1389, 11:24 صبح
  3. برنامه ايجاد صندوق پستي براي كاربران
    نوشته شده توسط bps20590 در بخش PHP
    پاسخ: 7
    آخرین پست: یک شنبه 05 اردیبهشت 1389, 10:31 صبح
  4. ايجاد فايل Config براي اجراي برنامه در يك شبكه
    نوشته شده توسط سيد مجتبي هاشمي در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 3
    آخرین پست: پنج شنبه 03 اردیبهشت 1388, 15:57 عصر
  5. ايجاد ظاهري زيبا براي برنامه
    نوشته شده توسط mojtabadj در بخش Java ME : نگارش میکرو جاوا
    پاسخ: 3
    آخرین پست: دوشنبه 20 آبان 1387, 20:13 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •