Php ve C# Post İşlemleri

redblue58

Katılımcı Üye
26 Ocak 2008
910
2
İzmir
Konuya tam uygun başlık mı oldu bilemiyorum ancak bu konuda C# ve php dilleri arasında konuşmayı göstereceğim. Diyelim bir müşterinizin veya sizin bir windows tabanlı çalışan programınız var ve gün gelecek ki bu programın verilerini internet ortamında olması gerekecek. Bu windows tabanlı program başka bir yazılımcı tarafından da yapılmış olabilir ve sizden php ile entegre etmeniz istenebilir veya tam tersi olabilir. Bu konu bitince öğrenilecek 3 şey

1- ) C# kullanarak web tabanlı post etme
2- ) Php ile c# dan gelen post verilerini alma
3- ) Hata kodları oluşturup yanlış işlemi engelleme

1- ) C#'da php ye post etmek için ;
Kod:
using System.Collections.Specialized;
using System.Net;
using System.IO;
sınıflarını kullanacağız ve projenize dahil etmeniz gerekmektedir.

Diyelim ki programınızda kaydet veya işte verileri gönder butonunuz var . İlgili butonun button_click fonksiyonuna

Kod:
string URL = "http://localhost/api/veri.php";
WebClient webClient = new WebClient();
NameValueCollection veri= new NameValueCollection();
veri["adi"] = textBox1.Text;
veri["soyadi"] = textBox2.Text;
veri["yasi"] = textBox3.Text;
byte[] gonder= webClient.UploadValues(URL, "POST", veri);
string islem= Encoding.UTF8.GetString(gonder);
label1.Text = islem;
webClient.Dispose();

Burada sistemimize 3 adet textbox, 1 adet buton ve 1 adet label ekledik. Burada ilgili kodları açıklamak gerekirse;
URL : Hangi php dosyasına post edecekseniz o adresi yazın,
Veri ["adi"] : Textbox1'de girilen veriyi adi değişkenine aldık.Soyad ve yaş içinde aynı şeyler geçerlidir.
Gonder: Post tipinde veri değişkenini gönderdiyoruz
islem : UTF8 karakter kodlaması ile gonderi belirtiyoruz
label1: islem den gelen mesajı iletir. Burada php de yazacagınız kodun sonucu iletilecektir.Örnek vermek gerekirse diyelim bu verileri kaydettiniz . Kayıt başarılı diye bir ekran çıktısı oluşturdunuz. Onu label1.text'e yazdırır . Buradaki temel amaç hata kodlarını kullanmamıza yarayacaktır. Örneğin php de kayıt başarılı ise 100 değil ise 200 çıktısı yaratırsanız c# da kod oluşturup sizde işlem yapabilirsiniz.

2-)Php ile c# dan gelen post verilerini alma
Kod:
  if($_POST)
   {
        $adi= $_POST["adi"];
        $soyadi= $_POST["soyadi"];
        $yasi= $_POST["yasi"];
        if(!empty($adi))
          {
           echo "$adi <br> $soyadi <br> $yasi";
          } 
        else
          {
           echo "Herhangi bir isim girilmedi";
          }
     }
else
{
echo "eğer url'ye biri dışarıdan girerse bu ekranı yazdırın";
}
Burada uzun uzun kod yazmadım bilerek. Temel mantığı anlarsanız zaten çevirirsiniz. Ufak kontroller ile bu kısmı halledersiniz.
adi,soyadi,yasi değişkenlerini aldık .Eğer adi değişkeni boş değil ise ( yani veri var ise ) ekrana bilgileri yansıttık , eğer boş ise veri girilmedi dedik. Burada detaylı fonksiyon yazabilirsiniz.Örneğin soyadı için kontrol yaş için kontrol . Daha sonrada isterseniz verileri veritabanına kaydedip işlem yapabilirsiniz.
Son elsede ise sizin php dosyanıza biri dışarıdan elle tarayıcıdan girerse post işlemi olmadığı için ekran çıktısı yaratabilirsiniz.

Eğer farklı türde belli olmayan değişkenler gelecek ise ve kullanıcıya güvenmiyorsanız php kısmına ufak önlemler alabilirsiniz ;
Kod:
$adi=@ addslashes(strip_word_html($adi));
gibi .

3-) Hata Kodları
2.numaralı adımda bahsettiğimiz gibi php de şöyle yapabilirsiniz
Kod:
 if(!empty($adi))
          {
           echo "$adi <br> $soyadi <br> $yasi";
          } 
          else
          {
           echo "140";
           }
Bu hata mesajını çıkarırsanız c#'da da işlem yapabilirsiniz. C# da label1.Text = islem; kısmına bu kontrolü ekleyebilirsiniz. Bu ne işe yarayacaktır ? Diyelim ki sistemde php ile veritabanına veriyi kaydettiniz 105 çıktısı yaptınız , eğer sistem kaydetmediyse 140 çıktısı yarattınız. C#'da bu rakamlar ile işlem yapabilirsiniz.105 ise sizde kayıt başarılı diye çıktı verirsiniz değilse ona göre.

Sonuç :

Bu size farklı projelerinizde işe yarayabilir. Örnek olarak web panelinizi masaüstü program olarak yapabilirsiniz.Windows programlarınızdaki veriyi php ile internet ortamına aktarabilirsiniz.Yani örnekler çoğaltılabilir. Umarım yararlı olmuştur . Anlaşılır şekilde anlatmaya çalıştım . Herhangi bir alıntı değildir. Kusurumuz olduysa kusura bakmayın. Umarım iş görür.Saygılarımla....
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.