2013-11-28 4 views
0
listener = New TcpListener(System.Net.IPAddress.Any, portconnect) 
    listener.Start() 
    client = listener.AcceptTcpClient 
    loginInfo = receivedata() 
    Dim array() As String 
    array = loginInfo.Split("|") 
    username = array(0) 
    pass = array(1) 

정보 클라이언트가 logininfo입니다. 내가 사용자 이름과 비밀 번호로 logininfo을 slipt.클라이언트에서 서버 vb.net로 실제 문자열 얻기

Public Function authentication(ByVal user As String, ByVal pass As String) As Boolean 
     Dim authentica As Boolean = False 
     Dim con As New OleDbConnection 
    Try 
     con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & " data source= " & Application.StartupPath & "\" & dataName 

     Dim myCommand As OleDbCommand = con.CreateCommand() 
     Dim sqlstr As String = "" 
     sqlstr = "Select password from tbusers where Username = " & "'" & user & "'" 
     myCommand.CommandText = sqlstr 
     con.Open() 
     Dim passw As String 
     passw = myCommand.ExecuteScalar() 
     con.Close() 
     If pass = passw Then 
      authentica = True 
     End If 

    Catch ex As Exception 
     MsgBox(ex.ToString) 
    End Try 
    Return authentica 
End Function 

문제는 다음과 같습니다 If pass = passw Then authentica = True End If이 가에 allways false를 돌려줍니다. 도와주세요

+0

클라이언트가 데이터를 보내면 데이터가 캡슐화됩니다. 디버그, user는 username이고 newstr은 "username"입니다. 부울 사용자 = newstr, 거짓을 반환합니다. –

+0

이미 작동하지 않는 코드를 표시하십시오. –

답변

1

파이프 문자 '|' 항상에 사용자 이름과 암호, 분할 구분 :

Dim str As String = "username|password" 
Dim splitString() As String = str.Split("|") 
Dim userName As String = splitString(0) 
Dim password As String = splitString(1) 

사용자 이름 다릅니다의 길이가 (!로 가장 가능성이 의지)는 분할의 기초가 상수 뭔가가 필요합니다 경우에 당신이 언급 한 바와 같이.

하지만 사용자 이름과 비밀번호를 별도로 구분하는 것이 더 효과적이므로 개별적으로 액세스 할 수 있습니다.

+0

이것은 제 문제는 아닙니다. –

+2

당신의 문제는 무엇입니까? 내가 제공 한 것이 적합하지 않다면, 질문을 업데이트하고 이미 제안 된대로 작동하지 않는 것을 보여주는 몇 가지 코드를 제공하십시오. – Ric

+0

pass = passw를 확인하면 값이 디버거에서 같은지 확인했습니다. whitepsace 또는 대소 문자를 구분할 때 문제가 될 수 있습니다. – Ric

1

이 방법으로 이들을 보내 나쁜 생각처럼이 보인다 Split function

Dim str as String = "username|password" 

Debug.writeline("Username is " + str.Split("|"c)(0)) 
Debug.writeline("Password is " + str.Split("|"c)(1)) 

를 사용할 수 있습니다. 예 : 암호에 파이프 문자가 포함되어 있으면 어떻게됩니까?

+0

파이프가 들어있는 암호에 대해 참입니다! 문제가 계속 발생합니다 .. – Ric

+0

다시 암호로 일반적으로 허용되지 않는 특수 문자가 아닌가요? –

+0

Logininfo 서버 수신 문제가 올바르지 않습니다. 나는 사용자 이름을 얻고 또한 정확하게 통과한다. 하지만 길이를 확인하면 그 값은 8185입니다. ???????????? 나는 이유를 알지 못한다. –

관련 문제