Napisac funckje sprawdzajaca poprawnosc logoawanie do np.http://www.sklep.flatplanet.pl/admin/).
Napisac funckje sprawdzajaca poprawnosc logoawanie do np.http://www.sklep.flatplanet.pl/admin/).
Ostatnio edytowane przez erpe : 01-24-2008 - 14:32 Powód: .
Hmm...
Nie napisałeś w czym kompilujesz swój program w C++, ale ujmę temat ogólnie - teoretycznie.
Aby sprawdzać czy ktoś podał poprawne dane, te same, które widnieją gdzieś w jakiejś bazie na serwerze online możesz to zrobić dzięki typowym metodom otwierania plików przez program. Przykładową klasą w C# zdaje się jest StreamReader. Dzięki niemu można otwierać i zapisywać pliki. W naszym przypadku będziemy go tylko otwierać, a ściężką pliku będzie adres strony www (np. php) z parametrami. Ta właśnie strona będzie zwracać wartości.
Czyli przykładowo Twój program ma dwa pola, których wartości zastąpmy zmiennymi $login i $haslo. Użytkownik wpisuje login i hasło, program wykonuje "zapytanie" w postaci próby otworzenia i przeczytania pliku:
plik.php i jego przykładowe źródło:Kod:using System.IO; *** StreamReader pliczek = File.OpenText( "http://www.serwer.com/plik.php?login="+$login+"&haslo="+$haslo); odpowiedz=pliczek.ReadLine(); if(odpowiedz){ // zalogowany prawidlowo }else{ // login odrzucony }
Funkcja sprawdz_w_bazie() w plik.php to przykładowa funkcja pytająca bazę.Kod php:
$login=$_GET['login'];
$haslo=$_GET['haslo'];
$wynik=sprawdz_w_bazie(
"SELECT userID FROM tabela WHERE login='$login' AND haslo='$haslo'");
if($wynik){
echo('true');
}else{
echo('false');
}
W ten oto sposób Twój program może wiedzieć czy użytkownik podał prawidłowe dane, czy też nie :] Jeśli będziesz się już w tym grzebać to polecam szyfrować dane, np. przez gotowy algorytm md5($fraza);. Jest w C i jest też w php. Parametry otwieranego pliku mogą być zaszyfrowane w nieodwracalny sposób. Skoro dane są zaszyfrowane to skąd plik.php ma wiedzieć o co pytać? A no stąd, że jeśli będziesz wyciągał z bazy każdą wartość i kodował ją tym samym szyfrem md5() to w końcu trafi się taki sam login i hasło po zaszyfrowaniu. Czyli w pewnym momencie wystąpią dwa zakodowane ciągi o identycznej wartości.
Mam nadzieję, że to objaśnienie trochę Ci pomoże.
Pozdrawiam
----cut----
Ostatnio edytowane przez erpe : 01-24-2008 - 14:33 Powód: .
Hmm..
Jeśli chodzi Ci tylko o sprawdzenie tego loginu i hasła, możesz dorobić odpowiedni plik .php na serwerze, sprawdzić w jaki sposób zapisane są w tym sklepie w bazie hasła (jaką metodą zaszyfrowane). Dzięki temu napiszesz odpowiednie zapytania do bazy. Wtedy nie będziesz konkretnie używał pliku index.php z folderu /admin/.
Jeśli jednak chciałbyś to zrobić, to ja Ci osobiście nie pomogę. Nie próbowałem nigdy z poziomu aplikacji wysyłać wartości POSTowych pod formularze. Dodatkowo logowanie się na stronie polega na przydzieleniu odpowiedniego COOKIEsa do przeglądarki, w którym w jakiś sposób zapisane jest, że poprawnie się zalogowałeś itd. Dzięki niemu potem możemy otworzyć strony tylko adminów. W przypadku aplikacji w C musiałbyś się nauczyć obsługiwać nagłówki HTTP, dalej napisać tak program, aby potrafił je odpowiednio interpretować. Dalej musiałbyś wysyłać wartośći POSTowe pod tamten formularz i móc otrzymywać nagłówki zwrotne -> to już nie otwieranie strony www z parametrami w adresie jako pliku txt. Bardzo możliwe, że istnieją gotowe bilblioteki dla takich zastosowań. Dodatkowo wiem, że można dzięki gotowym bibliotekom z IE w prosty sposób stworzyć "swoją" przeglądarkę, bo widziałem nieraz takie triki - być może to by jakoś pomogło.
Pozdrawiam
Najprosciej i najszybciej...
czyli napisz to w Perl'u, ten modul pozwala ladnie symulowac zachowanie przegladarki, czyli wejscie na strony (http i https), obsluge formularzy (wysylanie), pelne utrzymywanie sesji (cookies, itp), poza tym mozsz okreslic ktory formularz wyslac za pomoca nazwy, numeru kolejnego w kodzie strony, przeszukac strone na obecnosc linkow i isc dalej podajac ich nazwy (tekst), numery, itd... Dosc mocna zabawka :-)Kod:use WWW::Mechanize;
Ja w ten sposob zbieram czasami raporty od partnerow handlowych prosto z ich systemow, majac tylko dostep do panelu WWW (SSL) na swoim koncie u nich.
P.S.
Jesli potrzebujesz takie cos ale coby pod winda chodzilo i klikalo (doslownie) po okienkach i machala myszka (tak tak - javascript, applety java, itp. tez da sie w ten sposob zrobic - juz nie stanowia problemu) to jest do tego inny modul Perl'a... i tez dziala ;-)