delphi den php dostaya post sorunu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
balsoft
Üye
Mesajlar: 60
Kayıt: 09 Şub 2005 06:01
Konum: ANKARA
İletişim:

delphi den php dostaya post sorunu

Mesaj gönderen balsoft »

arkadaşlar bi sürü araştırma yaptım bi sürü kod denedim ama olmuyor olmuyor hiç bir şekilde post edilen veriyi göstermiyo bununda anlamı demekki delphi post işlemini yapmıyo bi kontrolederseniz sevinirim

procedure TForm1.NMFTP1Success(Trans_Type: TCmdType);
var
Data: TStringList;
resp:tstringstream;
begin
if (Trans_Type = cmdUpload) then
begin
Data:= TStringList.Create;
Resp:= TStringStream.Create('');
IdHTTP1.Disconnect;
try
Data.Add('founder='+inttostr(userid));
Data.Add('catid='+inttostr(catid));
Data.Add('header='+edit4.Text);
Data.Add('title='+edit3.Text);
Data.Add('video='+edit5.Text);

IdHTTP1.Post(/clupload.php',data,resp);
memo1.Lines.Text:=resp.DataString;
except
on e: exception do begin
memo1.text:='';
end;
end;
Data.Free;
end;

sleep(2000);
Case Trans_Type of
cmdUpload: StatusBar1.SimpleText := 'Yükleme işlemi tamamlandı';
end;
end;

bu procedure den de görüleceği gibi nmftp ile bir dosyayı yolluyorum bitince idhttp ile clupload dosyasına post göndermeye uğraştığım veriler var clupload php dosyasında ise

<?
$form_bilgisi = ( isset($HTTP_POST_VARS ) )
? $HTTP_POST_VARS : $HTTP_GET_VARS;
foreach ($form_bilgisi as $anahtar=>$deger ) {
if ( gettype ($deger ) == "array" ) {
print ("$anahtar == <br>\n");
foreach ( $deger as $yeni_degerler )
print (".. $yeni_degerler<br>");
}
else {
print ("<b>$anahtar = $deger <br>\n");
}
}
?>

diye post edilen veriyi ekrana atan bir komut dizisi var ama boş çıkıyor ne yaptıysam ne ettiysem olmuyo yardım lütfen teşekkürler
Bilgini saklamaki daha fazla öğrenebilesin...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Aşağıdaki

Kod: Tümünü seç

IdHTTP1.Post(/clupload.php',data,resp); 
kodunda tam adresi yazıp dener misiniz ? Şahsen bir hata göremiyorum...

Yani

Kod: Tümünü seç

IdHTTP1.Post('http://www.benimsitem.com/clupload.php',data,resp); 
Resim
Resim ....Resim
Kullanıcı avatarı
balsoft
Üye
Mesajlar: 60
Kayıt: 09 Şub 2005 06:01
Konum: ANKARA
İletişim:

olmuyooo

Mesaj gönderen balsoft »

denedim ama yine olmuyor...
Bilgini saklamaki daha fazla öğrenebilesin...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Şimdi kodu uyguladım. Bir sorun yok... Sen de aşağıdaki kodu dener misin ? php dosya şu an kendi hostumda mevcut.

Hatta önce sadece adresi şöyle değiştir.

Kod: Tümünü seç

'http://www.armantr.com/test/post.php'
öyle dene...

- Olursa, kendi php dosyanda bulunan farklı fonksiyonlardan birisi sorunlu olduğundan kod hataya düşüyor olabilir. Ondan sonuçları alıyor ancak döndürmüyordur..

Olmadı sonra aşağıdaki kurguyu hazırla...

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
Var
  Data : TStringList;
  Resp : TStringStream;
begin
  Data:= TStringList.Create;
  Resp:= TStringStream.Create('');
  IdHTTP1.Disconnect;
  try
    Data.Add('aParam='+Edit1.Text);
    Data.Add('bParam='+Edit2.Text);
    Data.Add('cParam='+Edit3.Text);
    Data.Add('dParam='+Edit4.Text);
    Data.Add('eParam='+Edit5.Text);
    IdHTTP1.Post('http://www.armantr.com/test/post.php', data, resp);
    Memo1.Lines.Text := Resp.DataString;
  except
    on e: exception do memo1.text:='';
  end;
  Resp.Free;
  Data.Free;
end;
POST.PHP

Kod: Tümünü seç

<?
  $form_bilgisi = ( isset($HTTP_POST_VARS ) ) ? $HTTP_POST_VARS : $HTTP_GET_VARS;
  foreach ($form_bilgisi as $anahtar=>$deger ) {
      if ( gettype ($deger ) == "array" ) {
      print ("$anahtar == <br>\n");
      foreach ( $deger as $yeni_degerler )
      print (".. $yeni_degerler<br>");
    }
    else { print ("<b>$anahtar = $deger <br>\n"); }
  }
?>
Resim
Resim ....Resim
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

Kod: Tümünü seç

procedure TForm2.Button1Click(Sender: TObject);
var
str:tstringlist;
response:tstringstream;
begin
str := TStringList.Create;
Response:= TStringStream.Create('');
try
str.Clear;
IdHTTP1.Disconnect;
str.Add('kullanici=' + Edit2.Text); // Edit2'de post edeceğin kullanıcı adı
str.Add('sifre=' + Edit1.Text); //Edit1'de post edeceğin sifre
IdHTTP1.Post('http://sgsg.com/ds.php',str,Response);
memo1.text := Response.DataString;
except
on e: exception do begin
Memo1.text:= '';
end;
end;
str.Free;
Response.Free;

if Memo1.Text = 'Hatali Giris!' then
ShowMessage('Hatalı Giriş!')
else
begin
ShowMessage('Giriş Yapıldı!');
Form2.Hide;
Form1.Show;
end;
end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@Trial_Cooder

- Doğru başlığa cevap yazdığına emin misin ? Açıklama yazmayı ihmal etmişsin. Ne için yazdığın anlaşılmamış. Değerlendirmem odur ki, bir başka başlıkta isim şifre girişi hakkında bir soru vardır ona yazacağına buraya yazmışsın sanki !?

- Bu kanıya nasıl vardığımı soracak olursan, 'Hatali Giris!' vb. ifadesi geri döndüren php kodu ortada yok...
Resim
Resim ....Resim
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

hayır doğru başlık, delphi'den php'ye post yapmayı sormuş. yani php kodu var anlamına gelir. o yüzden php kodlarını vermedim. ama anlaşılamadıysam veriyim.

php kodu

Kod: Tümünü seç

<?php
  echo $delphi; //$delphi post ettiğin değer
?>
delphide kodu

Kod: Tümünü seç

procedure TForm2.Button1Click(Sender: TObject);
var
str:tstringlist;
response:tstringstream;
begin
str := TStringList.Create;
Response:= TStringStream.Create('');
try
str.Clear;
IdHTTP1.Disconnect;
str.Add('delphi=postettigindeger');

IdHTTP1.Post('http://sgsg.com/ds.php',str,Response);
Memo1.text := Response.DataString;
except
on e: exception do begin
Memo1.text:= '';
end;
end;
str.Free;
Response.Free;

if Memo1.Text = 'postettigindeger!' then
ShowMessage('Kod Calisiyor!')
else
ShowMessage('Kod Calismiyor!');
end;
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Post yapabiliyor aslında, verdiği kodları inclersen aslında seninkilerle aynısı olduğunu göreceksin.
Resim
Resim ....Resim
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

gördüm ama arkadaş zaten post'u kendi ayarladığı değerlerle yapıyo, yani bu demek oluyoki, post ettiği değeri görmeden ve bilmeden post ediyor.

Kod: Tümünü seç

Memo1.Lines.Add(inttostr(userid);
Memo1.Lines.Add(inttostr(catid);
Memo1.Lines.Add(edit4.Text);
Memo1.Lines.Add(edit3.Text);
Memo1.Lines.Add(edit5.Text);
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Kendi gönderdiği parametre içeriğinin boş ya da dolu olması önemli değil, post başarılı ise VE php kodu doğru oluşturulmuş bir kod ise en azından paramtre başlığı MEMO'da görüntülenir.

- Belki de sorun daha da basit idi... Şöyle ki NMFTP1Success eventine belki de hiç düşmediğinden ve/veya Trans_Type = cmdUpload olamadığından post işlemi bile yapılmıyor olabilir...

- Neyse uzatmayım, mesajında sadece kod yazmayıp altına gerekli açıklamayı düşmen için sana bir hatırlatma idi.
Resim
Resim ....Resim
Cevapla