SpirosLouis Δημοσ. 17 Φεβρουαρίου 2010 Δημοσ. 17 Φεβρουαρίου 2010 Καλησπέρα, Έχω κάνει ένα form το form1. Έχω βάλει π.χ. να λέει όνομα και επώνυμο (δηλαδή σαν login) και από κάτω ένα κουμπί επιβαιβέωσης που σε οδηγεί σε ένα δευτερο form. Ας μιλήσουμε με κώδικεςκώδικας από Button2-κουμπί επιβαιβέωσης) >If TextBox1.Text = "s" And TextBox2.Text = "r" Then Form2.Show() Me.Close() Else MsgBox("Δεν είναι έγκυρο! Δοκιμάστε ξανά", MsgBoxStyle.Exclamation, "Error") End If End Sub Εγώ όμως θέλω: Να μπορεί να έχει 2 και περισσότερες επιλογές στο textbox 1 και 2(δηλαδή και άμα πατήσει "a" να μπορεί να έχει πρόσβαση στο δεύτερο form(form2)). Επίσεις αντιμετωπίζω το εξής πρόβλημα: Το παράθυρο, και έτσι, αντί να κλείσει μόνο αυτό και να ανοίξει το 2ο(form2) κλείνουν όλα.Άμα αφαιρέσω το Me.Close() τότε ανοίγει το form2 αλλά μένει και το form1. Ευχαριστώ πολύ.
semaphor Δημοσ. 17 Φεβρουαρίου 2010 Δημοσ. 17 Φεβρουαρίου 2010 Καλησπέρα, Έχω κάνει ένα form το form1. Έχω βάλει π.χ. να λέει όνομα και επώνυμο (δηλαδή σαν login) και από κάτω ένα κουμπί επιβαιβέωσης που σε οδηγεί σε ένα δευτερο form. Ας μιλήσουμε με κώδικεςκώδικας από Button2-κουμπί επιβαιβέωσης) >If TextBox1.Text = "s" And TextBox2.Text = "r" Then Form2.Show() Me.Close() Else MsgBox("Δεν είναι έγκυρο! Δοκιμάστε ξανά", MsgBoxStyle.Exclamation, "Error") End If End Sub Εγώ όμως θέλω: Να μπορεί να έχει 2 και περισσότερες επιλογές στο textbox 1 και 2(δηλαδή και άμα πατήσει "a" να μπορεί να έχει πρόσβαση στο δεύτερο form(form2)). Επίσεις αντιμετωπίζω το εξής πρόβλημα: Το παράθυρο, και έτσι, αντί να κλείσει μόνο αυτό και να ανοίξει το 2ο(form2) κλείνουν όλα.Άμα αφαιρέσω το Me.Close() τότε ανοίγει το form2 αλλά μένει και το form1. Ευχαριστώ πολύ. μην χρησιμοποιήσεις το Me.Close() αλλά το Me.Hide() > If TextBox1.Text = "user1" And TextBox2.Text = "pass1" Then Form2.Show() Me.Hide() ElseIf TextBox1.Text = "user2" And TextBox2.Text = "pass2" Then Form2.Show() Me.Hide() Else MsgBox("Δεν είναι έγκυρο! Δοκιμάστε ξανά", MsgBoxStyle.Exclamation, "Error") End If από άποψη ασφαλείας αυτό που κάνει είναι τελείως λάθος. αυτό συμβαίνει επειδή με cracking τεχνικές μπορούν να εντοπιστούν τα Strings που είναι αποθηκευμένα μέσα στα exe. ο σωστός τόπος να γίνει είναι χρησιμοποιώντας τεχνικές Hash όπως η SHA1. χρειάζεσαι τις βιβλιοθήκεςεϛ: > Imports System.Security.Cryptography Imports System.Text.Encoding Imports System.Text και τον παρακάτω κώδικα. > Private Function BytesToHex(ByVal bytes() As Byte) As String Dim hex As New StringBuilder For n As Integer = 0 To bytes.Length - 1 hex.AppendFormat("{0:X2}", bytes(n)) Next Return hex.ToString End Function Private Function SH1Encode(ByVal input As String) As String Dim sh1 As SHA1 sh1 = SHA1.Create() Return BytesToHex(sh1.ComputeHash(UTF8.GetBytes(input))) End Function > If TextBox1.Text = "user1" And SH1Encode(TextBox2.Text) = "F0578F1E7174B1A41C4EA8C6E17F7A8A3B88C92A" Then Form2.Show() Me.Hide() ElseIf TextBox1.Text = "user2" And SH1Encode(TextBox2.Text) = "8BE52126A6FDE450A7162A3651D589BB51E9579D" Then Form2.Show() Me.Hide() Else MsgBox("Δεν είναι έγκυρο! Δοκιμάστε ξανά", MsgBoxStyle.Exclamation, "Error") End If όπου το pass1 μετατρέπετε σε F0578F1E7174B1A41C4EA8C6E17F7A8A3B88C92A και το passw2 σε 8BE52126A6FDE450A7162A3651D589BB51E9579D Έτσι ένας που θέλει να σπάσει το πρόγραμμα θα βρει το F0578F1E7174B1A41C4EA8C6E17F7A8A3B88C92A αλλά δεν θα μπορεί να καταλάβει ότι αντιστοιχεί στο pass1. παρακάτω είναι ολόκληρο το αρχείο VB >Imports System.Security.Cryptography Imports System.Text.Encoding Imports System.Text Imports System.IO Public Class Form1 Private Function BytesToHex(ByVal bytes() As Byte) As String Dim hex As New StringBuilder For n As Integer = 0 To bytes.Length - 1 hex.AppendFormat("{0:X2}", bytes(n)) Next Return hex.ToString End Function Private Function SH1Encode(ByVal input As String) As String Dim sh1 As SHA1 sh1 = SHA1.Create() Return BytesToHex(sh1.ComputeHash(UTF8.GetBytes(input))) End Function Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If TextBox1.Text = "user1" And TextBox2.Text = "pass1" Then Form2.Show() Me.Hide() ElseIf TextBox1.Text = "user2" And TextBox2.Text = "pass2" Then Form2.Show() Me.Hide() Else MsgBox("Δεν είναι έγκυρο! Δοκιμάστε ξανά", MsgBoxStyle.Exclamation, "Error") End If TextBox2.Text = SH1Encode(TextBox1.Text) If SH1Encode(TextBox1.Text) = SH1Encode("a") Then MsgBox("OK", MsgBoxStyle.Exclamation, "Error") End If End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click If TextBox1.Text = "user1" And SH1Encode(TextBox2.Text) = "F0578F1E7174B1A41C4EA8C6E17F7A8A3B88C92A" Then Form2.Show() Me.Hide() ElseIf TextBox1.Text = "user2" And SH1Encode(TextBox2.Text) = "8BE52126A6FDE450A7162A3651D589BB51E9579D" Then Form2.Show() Me.Hide() Else MsgBox("Δεν είναι έγκυρο! Δοκιμάστε ξανά", MsgBoxStyle.Exclamation, "Error") End If End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click TextBox3.Text = SH1Encode(TextBox3.Text) End Sub End Class
SpirosLouis Δημοσ. 18 Φεβρουαρίου 2010 Μέλος Δημοσ. 18 Φεβρουαρίου 2010 Και για το άλλο ερώτημα τι θα κάνω; Δηλαδή να έχει 2 και 3 επιλογές για το textbox;
Evgenios1 Δημοσ. 18 Φεβρουαρίου 2010 Δημοσ. 18 Φεβρουαρίου 2010 reflected >Public Sub New() Me.InitializeComponent AddHandler Me.button1.Click, Function Dim f As Form Select Case Me.textBox1.Text.ToLower Case "admin" If (Me.textBox2.Text = "1234") Then f = New Form { _ .Text = "Admin Form" _ } AddHandler f.HandleDestroyed, Function MyBase.Show End Function MyBase.Hide f.ShowDialog End If Return Case "mitsos" If (Me.textBox2.Text = "1234") Then f = New Form { _ .Text = "Mitsos Form" _ } AddHandler f.HandleDestroyed, Function MyBase.Show End Function MyBase.Hide f.ShowDialog End If Return End Select MessageBox.Show("lathos user!!!") End Function End Sub orig >namespace oeo { public partial class Form1 : Form { public Form1() { InitializeComponent(); button1.Click += delegate { switch (textBox1.Text.ToLower()) { case "admin": { if (textBox2.Text != "1234") break; var f = new Form { Text = "Admin Form" }; f.HandleDestroyed += delegate { this.Show(); }; this.Hide(); f.ShowDialog(); } break; case "mitsos": { if (textBox2.Text != "1234") break; var f = new Form { Text = "Mitsos Form" }; f.HandleDestroyed += delegate { this.Show(); }; this.Hide(); f.ShowDialog(); } break; default: MessageBox.Show("lathos user!!!"); break; } }; } } } Αν καταλαβα καλα.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.