ďťż

Ładny brzuch

Jak zrobić aby był:
Edit1 i Button1.
W Edicie wpisywało by się jakieś tam hasło i po zatwierdzeniu button jeden jeżli hasło jest OK to by się jakiś skrypt wykonywał.
Znam taki kod.
Ale chciałbym aby go przerobić aby odczytywał hasło np. z pliku haslo.ini z serwera kondzioff.republika.pl .

Teraz kod który chcę przerobić:
---------------------------onclick Buttona -------------------------------
 if Edit1.Text = 'tu haslo' then    Frame21.Top := 5;  Frame21.Left := 8;  Frame21.Visible := true;

I chcę go przerobić aby odczytywał hasło z jakiegoś pliku na jakimś serwerze .
Z góry dziękuję za pomoc!



Nie jestem pewien ale jeżeli byś hasło umieścił na serwerze w pliku ini i ktoś by się dowiedział jak nazywa się plik to ma bezproblemu hasło.

no wiem.
ale ja się pytam o skrypt.

nie kumam w czym masz problem... Pobieasz plik z konta (przez http lub ftp), porownojesz hasla i juz :D



Jeżeli by pobrał plik na dysk to chyba by było jeszcze gorzej bo hasło było by dostępne bez żadnego prblemu.

PS. A ja znowu trochę nie na temat :P

mi nie chodzi aby pobrać plik.
tylko ODCZYTAĆ hasło które znajduje się w pliku na jakimś serwerze !

Ale i tak ten plik musisz pobrać chociaż do pamięci. Nie da się tak wczytać tego hasła z netu bez pobierania. Potem w pamięci przeszukujesz jak znajdziesz to porównujesz i już :)
Użytkownik -=PcSA=- edytował ten post 13 kwiecień 2005, 13:46
no dobra ;)
ale dajcie kod :P

Jeżeli twój program będzie korzystał z neta to z tego co wiem to nie obędzie się bez tzw.gniazdek czyli socketów . B)

a jaki jezyk?
//aha sorry juz widze ze objectpascal ;)
Pobieraj przez TidHTTP - przynajmniej mozesz bezposrednio do strumienia :)
Użytkownik migajek edytował ten post 13 kwiecień 2005, 15:10


Witam. Wydaje mi sie ze najlatwiej bedzie posluzyc sie komponentami INDY. Wystarczy uzyć IdHTTP. Np:

procedure TForm1.Button1Click(Sender: TObject); var haslo : string; begin haslo := IdHTTP1.Get('http://jakis_adres.com/haslo.txt');  if edit1.text = haslo then  Â  begin    showmessage('haslo poprawne');  Â  end  else    begin     showmessage('bledne haslo!!!');    end; end;
Użytkownik Poszukiwacz edytował ten post 13 kwiecień 2005, 15:14
a jak to bedzie w c++ ?

ale to zalezy czy w C++ Builder (borland), VC++ by M$ czy innym ale jest taka funkcja WinApi - http://www.migajek.c.../downloader.rar jest przyklad - co prawda w Delphi ale zrozumiesz :)

Ja robie w Delphi ;)

C++ Builder



ee...
mógłbyś mi podac kod ?

EEEE... Po co wam jakies komponenty, szkoda miejsca ktore bedzie zajmowal ten program, ja proponuje uzyc czegos innego :P

Należy skorzystać z funkcji URLDownloadToFile z modułu URLMon:

uses URLMon;

procedure TForm1.Button1Click(Sender: TObject);
begin
if URLDownloadToFile(Nil,'http://jakas_strona/jakis_plik.roz',
'c:\temp\jakis_plik.roz',0,Nil)<>0 then
ShowMessage('Błąd podczas ściągania pliku');
end;

A pozniej tylko odczytac plik procedura ReadLn i po odczycie dla bezpieczenstwa usunac.



A nielepiej zrobić tak żeby aplikacja kliencka wysyłała do serwera zapytanie np. HASŁO:TEST serwer odzyczytywał by wysłane hasło jako TEST i porównywał by z hasłem pobranym z pliku znajdującego się na serwerze ?


To dlatego ze ta funkcja zapisuje do cache i pozniej stamtad czyta!


no to rozwiazanie ma taka wade, ze jak sciagniesz plik, podmienisz ten na serwerze i ponownie programem sciagniesz, to sciagnie ci "stary"! To dlatego ze ta funkcja zapisuje do cache i pozniej stamtad czyta!
Losuj nazwę pliku lokalnego ;)


Losuj nazwę pliku lokalnego ;)

Czyli wreszcie co :P ?


Czyli wreszcie co :P ?

Może się mylę, ale w miejsce "tu hasło" należy wpisać adres pliku... o ile ten plik ma odpowiednie prawa.

Macie w winsock, nawet asm dodałem :D

uses Winsock; procedure parse(s:string; l:integer; var calosc, p:integer); stdcall; var c:string; i:integer; begin c:=copy(s,pos('content-length: ',lowercase(s))+16,length(s)-pos('content-length: ',lowercase(s))); c:=copy(c,1,pos(#13,c)); val(c,calosc,calosc); for i:=1 to l do if (s[i]=#13) and (s[i+1]=#10) and (s[i+2]=#13) and (s[i+3]=#10) then begin asm mov eax,s end; p:=l-i-3; break; end; end; procedure dlfile(url:string; plik:pchar); var s:integer; wd:wsadata; ad:sockaddr_in; c:string; b, bp:pchar; p, i, razem, calosc:integer; f, r:cardinal; filename:string; he:phostent; begin wsastartup($101,wd); filename:='/'+plik; c:='GET '+filename+' HTTP/1.1'#13#10+ 'Host: '+url+#13#10+ 'Accept: */*'#13#10+ 'Referer: '+url+#13#10+ 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98'#13#10+ 'Pragma: no-cache'#13#10+ 'Cache-Control: no-cache'#13#10+ 'Connection: close'#13#10+ #13#10; getmem(he,sizeof(hostent)); he:=GetHostByName(pchar(url)); if not assigned(he) then exit; s:=socket(af_inet,sock_stream,ipproto_tcp); ad.sin_family:=af_inet; ad.sin_port:=ntohs(80); asm mov eax,he add eax,32 mov eax,dword ptr ds:[eax] mov ad.sin_addr.S_addr,eax end; if connect(s,ad,16)=0 then begin getmem(b,length©); strpcopy(b,c); send(s,b^,length©,0); getmem(b,4096); f:=createfile('.\haslo.txt',GENERIC_WRITE,0,nil,CREATE_ALWAYS,0,0); razem:=0; repeat i:=recv(s,b^,4096,0); if i<1 then break; if razem=0 then begin parse(b,i,calosc,p); if p>i then bp:=b else bp:=b+i-p; i:=p; writefile(f,bp^,p,r,nil); end else writefile(f,b^,i,r,nil); razem:=razem+i; if calosc<>0 then until i<1; end; closehandle(f); closesocket(s); wsacleanup; end; procedure TForm1.Button1Click(Sender: TObject); begin dlfile('cyrkiel.webpark.pl','haslo.txt'); end;


Może się mylę, ale w miejsce "tu hasło" należy wpisać adres pliku... o ile ten plik ma odpowiednie prawa.


(...) Co w niej robi ASM? Za co odpowiada? :> Bo ja jaskrawozielony jestem w ASM (z reszta w Delphi też :P)
Zrobiłem tak, bo po "prawidłowym" odwołaniu się do he.h_addr źle podaje odczytany numer, więc użyłem asm - tu zawsze się da :D

Dzięki Cyrkiel- jako że jestem początkującym w delphi :P to do tego nie potrzeba zadnych komponentów oprócz edita i buttona ?


Dzięki Cyrkiel- jako że jestem początkującym w delphi :P to do tego nie potrzeba zadnych komponentów oprócz edita i buttona ?
Żadnych.

Hehe, wiem że będziecie się ze mnie nabijali, ale gdzie to wkleić :P

Utwórz procedurkę naciśnięcia przysku Button1 i tam wklej:dlfile('adres_twojej_strony_bez_HTTP!!!!','nazwa_pliku_na-tej_stronie' );a resztę wklej przed tą procedurką ;)

Dzięki ;0
Zaraz spróbuję czy wszystko jest OK

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •