Jump to content
zachary1337

Restrictionare aplicatie doar pentru membrii unui forum

Recommended Posts

Posted (edited)

Se poate sa faci un login form si la logare sa te loghezi cu un cont de pe un forum? deci daca nu ai cont pe un anumit forum nu te poti loga in program

PS : lucrez doar vb

Edited by zachary1337
Posted (edited)

Da, poti. Trebuie sa stii doar ce mesaje afiseaza forumul atunci cand o logare s-a efectuat cu succes sau cand aceasta a esuat. Cu alte cuvinte cauti un string in pagina returnata de server-ul web: la o logare gresita(invalid user/pass) server-ul returneaza o pagina cu textul "Invalid username/password". Daca logarea se efectueaza cu succes atunci string-ul acesta nu este returnat in raspuns, deci combinatia user/pass este valida.

Poti folosi urmatorul cod(acesta este pentru un request fara parametrii POST/GET):


Imports System
Imports System.Net
Imports System.IO

Module Module1

Sub Main()
Dim sURL As String
sURL = "http://www.forum.com"

Dim wrGETURL As WebRequest
wrGETURL = WebRequest.Create(sURL)

Dim myProxy As New WebProxy("myproxy", 80)
myProxy.BypassProxyOnLocal = True

'wrGETURL.Proxy = myProxy
wrGETURL.Proxy = WebProxy.GetDefaultProxy()

Dim objStream As Stream
objStream = wrGETURL.GetResponse.GetResponseStream()

Dim objReader As New StreamReader(objStream)
Dim linie As String = ""
Dim i As Integer = 0

Do While Not linie Is Nothing
i += 1
linie = objReader.ReadLine
If Not linie Is Nothing Then
' Verificam daca logarea s-a efectuat cu succes sau nu
If linie.Contains("Invalid username/password") then
Console.WriteLine("Logare invalida")
End If
End If
Loop

Console.ReadLine()

End Sub

End Module

Edited by Ganav
Posted

Poti face cu un webbrowser, setat pe hide, cum a spus si ganav, iei idul de la inputuri (user/parola/buton submit), denumesti inputurile tale din vb user/parola si faci asa (in eventul de la buton click):

webbrowser1.navigate("http://site.com")

webbrowser1.document.all("iduser").setattribute("value", user)

webbrowser1.document.all("idparola").setattribute("value", parola)

webbrowser1.document.all("idparola").invokemember("click")

if webbrowser1.documenttext.contains("mesaj pe care ti-l arata cand te-ai logat") Then

form2.show() // pui aici ce vrei sa faca daca e logat

else

msgbox("eroare") // pui aici ce vrei sa faca daca nu s-a logat

end if

Si asta e tot.

Eventual sa mai pui un delay inainte sa faca checkul dupa acel text.

Posted
Poti face cu un webbrowser, setat pe hide, cum a spus si ganav, iei idul de la inputuri (user/parola/buton submit), denumesti inputurile tale din vb user/parola si faci asa (in eventul de la buton click):

Si asta e tot.

Eventual sa mai pui un delay inainte sa faca checkul dupa acel text.

asta am incercat si eu cu getlemenetby id :

WebBrowser1.Document.GetElementById(".... ").SetAttribute("value", TextBox1.Text)dar cum va sti programul daca are cont sau nu sa apara form2? daca intelegi ce vreau sa zic

Posted

Tocmai am explicat mai sus,

webbrowser1.navigate("http://site.com")

webbrowser1.document.all("iduser").setattribute("v alue", user)

webbrowser1.document.all("idparola").setattribute( "value", parola)

webbrowser1.document.all("idparola").invokemember( "click")

if webbrowser1.documenttext.contains("mesaj pe care ti-l arata cand te-ai logat") Then

form2.show() // pui aici ce vrei sa faca daca e logat

else

msgbox("eroare") // pui aici ce vrei sa faca daca nu s-a logat

end if

Posted

Object reference not set to an instance of an object. :@ ce are?

Private Sub NsButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NsButton1.Click

WebBrowser1.Navigate("http://royal.3xforum.ro/login.php")

WebBrowser1.Document.All("req_username").SetAttribute("value", TextBox1.Text)

WebBrowser1.Document.All("req_password").SetAttribute("value", TextBox2.Text)

WebBrowser1.Document.All("submit").InvokeMember("click")

If WebBrowser1.DocumentText.Contains("Logat cu succes !") Then

Form2.Show()

Else

MsgBox("Parola / ID , incorect")

End If

End Sub

Posted (edited)
incearca asa

am reusit cu ask cu urmatorul cod

WebBrowser1.Navigate("http://royal.3xforum.ro/login.php")

WebBrowser1.Document.All("req_username").SetAttrib ute("value", TextBox1.Text)

WebBrowser1.Document.All("req_password").SetAttrib ute("value", TextBox2.Text)

WebBrowser1.Document.All("login").InvokeMember("c lick")

doar ca nu se intampla nimic cand apas "click" nu face request la pagina

Edited by zachary1337
Posted
Foloseste 3xforum, nu are access la nimic, nu ofera 3xforum.

(respectiv http://www.royal.3xforum.ro/), poate sa-l faca cum ai zis si tu cu webrequests, trebuie doar sa intercepteze geturile & posturile.

am reusit , se logheaza :D

WebBrowser1.Document.All("req_username").SetAttribute("value", TextBox1.Text)

WebBrowser1.Document.All("req_password").SetAttribute("value", TextBox2.Text)

WebBrowser1.Document.Forms("login").All("login").InvokeMember("click")

MsgBox("Logat cu succes !")

Form2.Show()

dar aici apare alta problema , ca orice id si pass bag imi apare form2

Posted
am reusit :D

WebBrowser1.Document.All("req_username").SetAttribute("value", TextBox1.Text)

WebBrowser1.Document.All("req_password").SetAttribute("value", TextBox2.Text)

WebBrowser1.Document.Forms("login").All("login").InvokeMember("click")

MsgBox("Logat cu succes !")

Form2.Show()

dar aici apare alta problema , ca orice id si pass bag imi apare form2

pai normal :))

vezi si tu un text care apare pe site doar cand esti logat, verifica daca exista textu in webbrowser si daca exista, atunci pui form2.show

Posted

Incearca sa faci cum ti-am dat prima oara:

webbrowser1.document.all("req_username").setattribute("value", user)

webbrowser1.document.all("req_password").setattribute( "value", parola)

webbrowser1.document.all("login").invokemember( "click")

if webbrowser1.documenttext.contains("Logare reusita") Then

form2.show() // pui aici ce vrei sa faca daca e logat

else

msgbox("eroare") // pui aici ce vrei sa faca daca nu s-a logat

end if

doar ca

webbrowser1.document.all("login").invokemember("click")

devine in

webbrowser1.document.forms("login").all("login").invokemember("click")

deci codul final va fi asa:

webbrowser1.document.all("req_username").setattribute("value", user)

webbrowser1.document.all("req_password").setattribute( "value", parola)

webbrowser1.document.forms("login").all("login").invokemember("click")

if webbrowser1.documenttext.contains("Logare reusita") Then

form2.show() // pui aici ce vrei sa faca daca e logat

else

msgbox("eroare") // pui aici ce vrei sa faca daca nu s-a logat

end if

Posted
Incearca sa faci cum ti-am dat prima oara:

doar ca

devine in

deci codul final va fi asa:

nu vrea nici cum sa imi arate form2 mortu se logheaza si imi apare msgbox atat smiley-angry009.gif

WebBrowser1.Document.All("req_username").SetAttribute("value", TextBox1.Text)

WebBrowser1.Document.All("req_password").SetAttribute("value", TextBox2.Text)

WebBrowser1.Document.Forms("login").All("login").InvokeMember("click")

If WebBrowser1.DocumentText.Contains("Logare reusita.") Then

Form2.Show()

Else

MsgBox("eroare")

End If

Posted
webbrowser1.document.all("req_username").setattribute("value", user)

webbrowser1.document.all("req_password").setattribute( "value", parola)

webbrowser1.document.forms("login").all("login").i nvokemember("click")

system.threading.thread.sleep(2000) // inseamna 2 secunde, o sa astepte 5 secunde inainte sa faca checkul.

if webbrowser1.documenttext.contains("Logare reusita") Then

form2.show() // pui aici ce vrei sa faca daca e logat

else

msgbox("eroare") // pui aici ce vrei sa faca daca nu s-a logat

end if

asa o sa-ti mearga sigur. (daca nu, mai umbla la sleep, incearca sa maresti timpul, vezi in cat timp dupa ce ai dat login, iti arata logare reusita si pui acolo.

Posted
nu vrea nici cum sa imi arate form2 mortu se logheaza si imi apare msgbox atat smiley-angry009.gif

WebBrowser1.Document.All("req_username").SetAttribute("value", TextBox1.Text)

WebBrowser1.Document.All("req_password").SetAttribute("value", TextBox2.Text)

WebBrowser1.Document.Forms("login").All("login").InvokeMember("click")

If WebBrowser1.DocumentText.Contains("Logare reusita.") Then

Form2.Show()

Else

MsgBox("eroare")

End If

Uita-te in sursa si vezi cum e "Logare reusita" ala scris. Poate nu e chiar asa.

Posted (edited)
Uita-te in sursa si vezi cum e "Logare reusita" ala scris. Poate nu e chiar asa.

am reusit , ma ajutat ask acum "finalu" =))) sa nu mai fac alt topic problema e ca dupa ce reuseste sa se logheze ramane automat logat pe site si cand intru dinou in program nu mai ma pot loga ca e deja logat :)) ma gandeam daca se poate un auto logout rapid dupa ce se logheaza ca nu vreau sa apelez la clear cookies sa le sterg la oameni din firefox ce au ei pe acol...

edit : uitati si codu

If WebBrowser1.DocumentText.Contains("Logout") Then

WebBrowser1.Document.Forms("Logout").All("Logout").InvokeMember("click")

WebBrowser1.Navigate("http://royal.3xforum.ro/login.php")

End If

Delay(1)

Application.DoEvents()

WebBrowser1.Document.All("req_username").SetAttribute("value", TextBox1.Text)

WebBrowser1.Document.All("req_password").SetAttribute("value", TextBox2.Text)

WebBrowser1.Document.Forms("login").All("login").InvokeMember("click")

Delay(1)

If WebBrowser1.DocumentText.Contains("Logare reusita.") Then

Form2.Show()

Me.Hide()

Else

MsgBox("Parola / ID , Invalid")

End If

Edited by zachary1337

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...