Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Tut/C#]Logowanie w programie


Gość Pan Szymek

Rekomendowane odpowiedzi

Opublikowano

Założenie:
-> Użytkownik podaje login i hasło w programie
-> Program wysyła dane do skryptu php na serwerze, który sprawdza, czy konto istnieje w bazie

Ponieważ poradnik jest bardzo prosty nie będę tworzył okna z poziomu kodu, a za pomocą drag&drop w VS.

Na początek dodajmy 2 textboxy oraz button. Stwórzmy dla buttona zdarzenie click i użyjmy następującego kodu

byte[] bD = Encoding.UTF8.GetBytes(string.Format("login={0}&haslo={1}", textBox1.Text, textBox2.Text));
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create("http://mojastrona.pl/skrypt.php");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.UserAgent = "Mój super program do logowania i rejestracji";
request.ContentLength = bD.Length;
System.IO.Stream stream = request.GetRequestStream();
stream.Write(bD, 0, bD.Length);
stream.Close();
System.Net.HttpWebResponse odp = (System.Net.HttpWebResponse)request.GetResponse();
System.IO.StreamReader sr = new System.IO.StreamReader(odp.GetResponseStream());
string zaw = sr.ReadToEnd();
sr.Close();
odp.Close();
Tym prostym sposobem w zmiennej zaw mamy odpowiedź z pliku skrypt.php

Teraz sprawdzimy, czy odpowiedź równa się 1, wtedy otworzymy drugie okno, w innym wypadku wyświetlimy stosowny komunikat
if (zaw.Equals("1"))
new okno2().Show();
else
MessageBox.Show("Podałeś błędne dane!", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);

W programie to tyle, dla nieznających php przykładowy kod
<?
mysql_connect("localhost", "root", "");
mysql_select_db("moja_baza");
$login = mysql_real_escape_string($_POST['login']);
$haslo = mysql_real_escape_string($_POST['haslo']);
$zap = mysql_query("SELECT `id` FROM `uzytkownicy`");
$r = mysql_fetch_array($zap);
if ($r['id'] > 0)
echo '1';
?>
Opublikowano

Kolego: nie piszemy .Equals. Robisz skomplikowane rzeczy, niby łatwe. Po co sql? Nie łatwiej file()? Kolejne: po co robisz metodą post? Łatwiej get, a odpowiednie api się przyda.

 

static public String wyslijGet(String url2)

{

try

{

URL url = new URL(url2);

url.openConnection();

BufferedReader rd = new BufferedReader(new InputStreamReader(url.openStream()));

String calosc = "";

String line;

while ((line = rd.readLine()) != null)

{ calosc += "\n" + line;

}

rd.close();return calosc;

}

catch (IOException e)

{ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(baos); e.printStackTrace(ps); String content = baos.toString();e.printStackTrace();return content;

}}

 

 

To jest skrypt na pobieranie calego kodu html ze strony. Jak srrona się przeciąży, to w cath zamienic na return "false";. Kolejne: po co stosujesz casty? Po co ci zamiana String na byte[]? W moim kodzie wpisujesz np.:

if(wyslijGet("http://blabla/?user="+user+"&haslo="+haslo).equals("1")){

//wykonujemy dzialanie

}

 

ogółem skrypt jest dla zaawansowanych. w szczególności agent i metoda post. więc nie polecam.

 

P.S. Jak sie dawalo kod na wersji mobilnej?

Opublikowano

Equals używa się do porównywania stringów.

Tablicę byte używam do wysłania danych.

Jeżeli chciałbym zrobić to przez GET to równie dobrze zrobiłbym tak

if (new System.Net.WebClient().DownloadString("http://mojastrona.pl/skrypt.php?login=trolo&haslo=lolo").Equals("1"))
MessageBox.Show("yeah");

  • 2 miesiące temu...
Opublikowano

Nie ma Equals w string. Chyba chodzi ci o equals... W Javie takie błędy mają znaczenie... I jeszcze jedno: możesz dać sprawdzenie, czy agent jest z programu

Opublikowano

Nie ma Equals w string. Chyba chodzi ci o equals... W Javie takie błędy mają znaczenie... I jeszcze jedno: możesz dać sprawdzenie, czy agent jest z programu

TO NIE JEST JAVA.

Opublikowano

zrobilem i niedziala

oto kod:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace Login

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

 

private void button1_Click(object sender, EventArgs e)

{

byte[] bD = Encoding.UTF8.GetBytes(string.Format("login={0}&haslo={1}", textBox1.Text, textBox2.Text));

System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create("http://vbprograming.cba.pl/login.php");

request.Method = "POST";

request.ContentType = "application/x-www-form-urlencoded";

request.UserAgent = "Mój super program do logowania i rejestracji";

request.ContentLength = bD.Length;

System.IO.Stream stream = request.GetRequestStream();

stream.Write(bD, 0, bD.Length);

stream.Close();

System.Net.HttpWebResponse odp = (System.Net.HttpWebResponse)request.GetResponse();

System.IO.StreamReader sr = new System.IO.StreamReader(odp.GetResponseStream());

string zaw = sr.ReadToEnd();

sr.Close();

odp.Close();

if (zaw.Equals("1"))

new Form2().Show();

else

MessageBox.Show("Podałeś błędne dane!", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);

}

}

}

 

jezeli kod zly prosze o jego poprawienie i wyslanie go mi na pw

Opublikowano

pomoze ktos ??

Przecież ten kod nie jest uniwersalny pod każdą stronę i response oraz dane do POST są inne.

Opublikowano

Kolego: nie piszemy .Equals. Robisz skomplikowane rzeczy, niby łatwe. Po co sql? Nie łatwiej file()? Kolejne: po co robisz metodą post? Łatwiej get, a odpowiednie api się przyda.

 

static public String wyslijGet(String url2)

{

try

{

URL url = new URL(url2);

url.openConnection();

BufferedReader rd = new BufferedReader(new InputStreamReader(url.openStream()));

String calosc = "";

String line;

while ((line = rd.readLine()) != null)

{ calosc += "\n" + line;

}

rd.close();return calosc;

}

catch (IOException e)

{ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream ps = new PrintStream(baos); e.printStackTrace(ps); String content = baos.toString();e.printStackTrace();return content;

}}

 

 

To jest skrypt na pobieranie calego kodu html ze strony. Jak srrona się przeciąży, to w cath zamienic na return "false";. Kolejne: po co stosujesz casty? Po co ci zamiana String na byte[]? W moim kodzie wpisujesz np.:

if(wyslijGet("http://blabla/?user=..."&haslo=" haslo).equals("1")){

//wykonujemy dzialanie

}

 

ogółem skrypt jest dla zaawansowanych. w szczególności agent i metoda post. więc nie polecam.

 

P.S. Jak sie dawalo kod na wersji mobilnej?

zaraz Ci odpowiem dlaczego POST a nie GET.

1. Dane POST są wysyłane w "tle" a GET masz w linku.Co nie ? Które użytkownikowi łatwiej edytować ?

2. Dlaczego nie file ? Bo wejdzie Ci jakaś osoba ,przewertuje katalogi i ma liste haseł + nicków.

Przyjmuje zlecenia dot. web masterki.

while(!$success){
....try();
}

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...