Delphi İle Siteye Login Olma
-
zumsuk bunu yazdı:
-----------------------------bende delphiyle uğraşıyorumda şu geldi aklaıma
[code]
[/code]
Burdan login.php?user=edit1.text&pass=edit2.text
tarzı bir olayla yaklaşıp web browserdan birşeyler yapamaz mıyız?
edit: ne saçmalıyorsun var zaten diyeceksiniz.Demek istediğim şu cookieleri falanda delphiyle ayarlasak.Yani bir nevi sohbet programı tarzı birşey olur mu?
-----------------------------tabiki yapılabilir neden web üzerinden istiyorsunki socket kullanmak daha mantıklı değil mi?
-
Eğer TWebBrowser Componenti iLe Yapacaksanız ;
Form'a WeBBrowser'ı ve 1 Button, 2 Editbox Ekleyin Button'un OnClick Olayına ;
WebBrowser1.OleObject.All.Item("Form Value Değeri").Value = Edit1.Text
WebBrowser1.OleObject.All.Item("Form Value Değeri").Value = Edit2.Text
WebBrowser1.OleObject.All.Item("Button").ClickForm Value Değerlerine Post Yapacağınız Sitenin Kaynak Kodundan Alabilirsiniz..
-
Bu işi yapabilmen için bir asp dosyası oluşturacaksın ve programla o asp ye baglanacaksın yada index.asp (default.asp) dosyandaki kulalnıcı form unu kulalcaksın ben ornek ap yide vereyim bu kodları kendi sitene gore duzenle
programla asp ye baglandıktan sonra asp de gerekli bilgiyi veritabanından sorgulaaycak programla direk veritabanına bağlanamazsın cunku site buna izin vermez..
örnek asp
<%@ Language=VBScript %>
<%
Kadi = Request.Form("kullaniciadi") ' burada programdan gonderdigimiz edit1 icindeki bilgiyi Kadi isimli degiskene aliyoruz
sifre = Request.Form("sifre") 'sifreyi aliyoruzFUNCTION fixQuotes( theString ) 'string icin tirnak koyduruyoruz function
fixQuotes = REPLACE( theString, "'", "''" )
END FUNCTION'veritabani Baglantisini Ac
Set con = Server.CreateObject("ADODB.Connection")
con.Open "driver={microsoft access driver (*.mdb)};" &_
"dbq=" & Server.MapPath("test.mdb") ' MapPath functinu fiziksel yolu dondurur isersek direk yoluda yazabiliriz
'Tablomuzu seciyoruz
sqlString = "SELECT * FROM UserList "
sqlString = sqlString & "WHERE KullaniciAdi='" & fixQuotes( Kadi ) & "'"
sqlString = sqlString & " AND Sifre='" &fixQuotes( sifre ) & "'"
'Kayit Setini Aç
Set RS = Server.CreateObject("ADODB.Recordset")
RS.ActiveConnection = conRS.Open sqlString
RS.Close
con.Close()
%>// asp de hatalar olabilir tam asp bilmiyorum :)
Buda delphi kodları
2 label 2 edit 1 webbrowser 1 tanede buton
unit main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, OleCtrls, SHDocVw, ExtCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
LKad: TLabel;
Lsifre: TLabel;
Tarayici1: TWebBrowser;
Edit2: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;const
ASP_Dosya = 'deneme';
Net_Adres = 'http://127.0.0.1/'; // 'http://www.websitesiAdresi.com/'
implementation
uses
WinInet,
HTTPApp,
ActiveX;
{$R *.DFM}//..................................................
function isOnline: boolean; // internete baglımı degilmi
var
connect_status: dword;
begin
connect_status := 2 + 1 + 4; //2 := lan 1 := modem 4 := proxy
result := InternetGetConnectedState(@connect_status, 0);
end;//.................................................
procedure TForm1.Button1Click(Sender: TObject);
var
EncodedDataString: string;
PostData: OleVariant;
Headers: OleVariant;
I: Integer;
sifre : String ;
beginSifre := Edit2.Text ;
// Internete bagli olup olmadini kontrol ediyoruz Yerel makinada calistirmayacaksan
// Bu kodu Etkin yap
if isOnline = false then begin //Internet Baglantisini Kontrol Et
ShowMessage('Lutfen Internete Baglandiktan Sonra Yeni Kullanici Ekleyiniz');
exit ; end;}
EncodedDataString := 'kuladi=' + HTTPEncode(Edit1.Text) + '&' +
'password=' + HttpEncode(sifre{Edit2.Text}) ;
PostData := VarArrayCreate([0, Length(EncodedDataString) - 1], varByte);
for I := 1 to Length(EncodedDataString) do
PostData[I-1] := Ord(EncodedDataString[I]);
Headers := 'Content-Type: application/x-www-form-urlencoded' + #10#13;
Tarayici1.Navigate( Net_Adres +ASP_Dosya +'.asp', EmptyParam,
// yada direk adresi gir 'http://www.websitesi.com/deneme.asp'
EmptyParam, PostData, Headers);end;
end.
umarım işini goruru hadi kolay gelsin
