MySQL işlemleri için küçük php api yazmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
AliZairov
Üye
Mesajlar: 341
Kayıt: 06 Nis 2012 02:09
Konum: Azerbaycan, Bakü
İletişim:

MySQL işlemleri için küçük php api yazmak

Mesaj gönderen AliZairov » 08 Nis 2015 04:50

Günaydın. Bazı denemeler yaptım arkadaşlar. FireDAC bileşeni mobilde kasmalara neden oluyo ve proğram açılmakta baya siyah ekran geliyo. Bende küçük çaplı işler için direk bileşenle diğil bir api ile işleri yaptırmak istiyorum. Yapmak istediğim hem masaüstü hemde mobil uygulamanın mysql küçük php apisi üzerinden bağlanarak işlemleri yapması. Bunun için 2 gündür çalışıyorum hala bir mantık çözümü yapamadım. Yani işlev nasıl olmalı sorun çıkmasın ve daha kolay olsun diye. Yapmak istediğim Query tarzı bir bileşen. İşlemleri sunucuda bulunan php servisinden haberleşmesi.

Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4731
Kayıt: 09 Ara 2003 08:13
Konum: Ankara
İletişim:

Re: MySQL işlemleri için küçük php api yazmak

Mesaj gönderen mrmarman » 08 Nis 2015 08:16

PHP ile xml generate edecek bir yapı olacaktır. Sorgunuzu PHP'ye dolaylı veya direkt olarak post edecek, cevap parse edilmek üzere xml veri bloğu olarak dönecektir. PHP webservice yazma imkanı da var.

API sizin projenize özel olmayıp genel geçer olsun diyorsanız o daha faydalı olur, datasnap benzeri php data katmanı kurmak işleri daha da kolaylaştırır. Bir inc dosyasına veritabanı erişim bilgileri gömülüp sunucuya konması, ilgili php ile database erişimi için tüm yolları açar. ssl kullanıp bu diyaloğu güvenceye alırsanız da tadından yenmez.
Resim Resim

Kullanıcı avatarı
AliZairov
Üye
Mesajlar: 341
Kayıt: 06 Nis 2012 02:09
Konum: Azerbaycan, Bakü
İletişim:

Re: MySQL işlemleri için küçük php api yazmak

Mesaj gönderen AliZairov » 08 Nis 2015 09:13

Merhaba Muharrem abi. Aynen dediğiniz gibi yapmayı düşündüm biraz çalıştım sadece tam yapı nasıl olmalı bilemiyorum. Şimdi hocam server tarafı şimdilik şöyle.

config.php v.t ayarları yazdım query.php include etdim. Şimdilik sorun yok. Post konusuna gelirsek 2 parametre şu anlık mevcut. Çıktıyı json düşündüm. Sadece tam olarak nasıl 1 php de tüm işlemi yapacağımı bilemiyorum.

query.php secili db ve sql komutun post ediyorum. Gelen cevabı nasıl fonksiyon lazım bilemiyorum. Gelen bilgiyi kolayca json yapmak istiyorum. Sadece kafamı karıştıran select komutundan başka diğerleri onlar sorun ola bilir.

Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2154
Kayıt: 12 Haz 2003 03:05
Konum: merkez camii yanı

Re: MySQL işlemleri için küçük php api yazmak

Mesaj gönderen freeman35 » 08 Nis 2015 10:18

replication yapmama sebep olan konuya bulduğum en son çözüm buydu :D elemanlara IP adreslerini sormaktan ve keyiflerini beklemekten sinir olmuştum, bende web sayafama böyle bir şey yapmıştım, her program kendi hakkındaki bilgileri php ye parametre olarak gönderiyor, php de table a işliyor.
bu mantıkla bu php dosyası result olarak belli formatta xml de olabilir artık gerisi parse etmeye kalıyor. Bu serverda çalışacağı için ister lan ister wan her türlü serverda çalışacaktır.
php server olduğundan veri tabanına bağlantısı mysql, mayki sql, firebird özetle php ile neye bağlanıyorsanız.
Güvenlik konusuda server güvenliğiyle doğru orantılı, ayrıca php içinde ilaveler de yapılabilinir.
Benim aklıma gelen en pratik çözüm bu. API işi fazla meşakkatli, versiyonlar arası farklarda sorunlar çıkartacaktır.

Kod: Tümünü seç

<?php
   $link = mysql_connect('localhost','kullanıcı','şifre');
   $db_selected = mysql_select_db('dbadı', $link);
   
if (!$db_selected) {die ('kullanılamaz : ' . mysql_error()); }        
#post ile gelen verileri aç
extract($_POST);
extract($_GET);
date_default_timezone_set('Europe/Istanbul'); 
$ip_addr = getenv(REMOTE_ADDR); 
$fineshed=" ' " . date("y-m-d H:i:s") . " ' ";
#echo $ip_addr;
mysql_query("SET NAMES 'latin5'");
mysql_query("SET CHARACTER SET latin5");
mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");
 $i_sql="UPDATE userop SET finished=$fineshed  WHERE self_id=$selfidx";
 mysql_query($i_sql, $link);
#echo $i_sql;
#echo $timestamp;
?> 
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!

Kullanıcı avatarı
AliZairov
Üye
Mesajlar: 341
Kayıt: 06 Nis 2012 02:09
Konum: Azerbaycan, Bakü
İletişim:

Re: MySQL işlemleri için küçük php api yazmak

Mesaj gönderen AliZairov » 08 Nis 2015 11:06

Selam. Benim yapmak istediğim şöyle. Normalde v.t bağlanmak için bir bileşen kullanırız. Dİrek mysql bağlanır. Eğer mysql dışarıdan bağlantıya yetki varsa tabi. Bileşenin connection ve query çoğu zaman işimizi görür. Bende aynı bu mantıkla bir bileşen yazmaa başladım. Haberleşme sadece direk mysql bağlantı diğilde php kprüsü ile yapmak istiyorum. Tam olarak niyyetim o. Eğer yapa bilirsem sizlerinde yardımıyla çok işlerde kullanmak mümkün olur.

Kullanıcı avatarı
freeman35
Admin
Mesajlar: 2154
Kayıt: 12 Haz 2003 03:05
Konum: merkez camii yanı

Re: MySQL işlemleri için küçük php api yazmak

Mesaj gönderen freeman35 » 08 Nis 2015 11:49

şahsi fikrim şu yönde, eğer vaktin varsa uğraş, hatta MUTALAKA uğraş. Bu benim bulabildiğim en iyi öğrenme yöntemidir. Yaptım oldu değil, kodların nasıl çalıştığını öğrenmiş olursun.
Bahsettiğinden anladığım şu, sen phpserver la haberleşmek istiyorsun, php komutları ile vt kullanmak ve sonuçları php ile almak. Başka bir deyişle yukarıda yazdığım php yi dosya halinde olmadan çalıştırtmak.
Bu işlemi server dışından yapman sanırım zor, çünkü dışarıdan server ı hack lemiş olursun.Amacın kötü değil ama olacak işlem bu, doğal olarakta bu çok zor ve banada pek mantıklı değil.
Benim bir başka önerim de şu olabilir, server la bir tcpserver-client bağlantı kurup, server a php dosya gönderip, bunun sonucunu bir php file halinde,server üzerinde ilgili yere yazdırtabilirsin.
Özetle tavsiyem, php yada mysql server a ulaşmak yerine, çünkü bu server güvenliğini açık bırakmaktır, kendin bir servis yazıp bu servise clientlardan ulaşıp işi server da yaptırmak güvenliği etkilemez, sadece port yönlendirme yada server a bir tcp portu açarsın, bunun karşısındada senin tcp server ın olduğu için server a müdahale olmaz.
Ben bu mantığı, firebird için kullanıyorum, şöyleki, LAN da server var ve bu server paylaşıma açık değil. Ama bana alias listesi ve db create edebilmek gerekli, create edilen db yi de alias.conf a eklemem gerek. Bunun için yaptığım, bir servis application yazdım, bu server da çalışıyor, alias listesi yada db create işi için bunu tcp-client ile mesaj gönderip sonucu alıyorum. Dolayısıyla server da share açık olmak zorunda değil.
umarım fikir verebilmişimdir.
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5

Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!

Kullanıcı avatarı
AliZairov
Üye
Mesajlar: 341
Kayıt: 06 Nis 2012 02:09
Konum: Azerbaycan, Bakü
İletişim:

Re: MySQL işlemleri için küçük php api yazmak

Mesaj gönderen AliZairov » 08 Nis 2015 12:13

Sadece site ve db ismi serveri hack durumuna getirirmi?
Ben linux server kullanıyorum bizim buralardada. Dediğin server / client olaynı inan isterdim malesef çare olmadığından bir nevi veb servis gibi bişey yazmağa çalışıyom.

Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1313
Kayıt: 07 May 2009 09:42
Konum: İstanbul
İletişim:

Re: MySQL işlemleri için küçük php api yazmak

Mesaj gönderen SimaWB » 08 Nis 2015 01:25

AliZairov yazdı:Günaydın. Bazı denemeler yaptım arkadaşlar. FireDAC bileşeni mobilde kasmalara neden oluyo ve proğram açılmakta baya siyah ekran geliyo. Bende küçük çaplı işler için direk bileşenle diğil bir api ile işleri yaptırmak istiyorum. Yapmak istediğim hem masaüstü hemde mobil uygulamanın mysql küçük php apisi üzerinden bağlanarak işlemleri yapması. Bunun için 2 gündür çalışıyorum hala bir mantık çözümü yapamadım. Yani işlev nasıl olmalı sorun çıkmasın ve daha kolay olsun diye. Yapmak istediğim Query tarzı bir bileşen. İşlemleri sunucuda bulunan php servisinden haberleşmesi.
Asıl uğraşmanız gereken kısım bence PHP kısmı. Delphi'de zaten istedikleriniz hazır. PHP'de REST servis yazdığınız takdirde;
Delphi tarafında TRESTClient (XE5 ve sonrası) bileşeni ile servisinizle haberleşirsiniz. Gelen verileri TRestResponse'la ve TRESTResponseDataSetAdapter ile alıp TClientDataSet veya TFDMemTable'a atarsınız.

Ayrıca böyle bir yapı kurarsanız uygulamanız hem mobilde hem de desktop'ta çalışır.
There's no place like 127.0.0.1

Kullanıcı avatarı
AliZairov
Üye
Mesajlar: 341
Kayıt: 06 Nis 2012 02:09
Konum: Azerbaycan, Bakü
İletişim:

Re: MySQL işlemleri için küçük php api yazmak

Mesaj gönderen AliZairov » 08 Nis 2015 01:40

Selam. Tamam. Bi inceleyim o zaman.

Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 30 Eyl 2007 11:02
Konum: Ankara

Re: MySQL işlemleri için küçük php api yazmak

Mesaj gönderen Battosai » 08 Nis 2015 02:18

"PHP REST api" diye ararsanız REST api nasıl hazırlanır örneklere ulaşırsınız. HTTP isteği ve parametlere göre PHP ile veri hazırlayıp XML veya JSON olarak "ECHO" yapacaksınız. Ben JSON tavsiye ederim. Yukarda bahsedilen TRESTClient nasıl çalışır bilmiyorum XML veya JSON parse etmek Delphi'nin her sürümü ile yapılabilir.

Kullanıcı avatarı
AliZairov
Üye
Mesajlar: 341
Kayıt: 06 Nis 2012 02:09
Konum: Azerbaycan, Bakü
İletişim:

Re: MySQL işlemleri için küçük php api yazmak

Mesaj gönderen AliZairov » 08 Nis 2015 11:41

İyi geceler. Teşekkürler. Benim yapmak istediğim resimdeki gibi universal olsun her yerden bağlantı olsun.

Resim

varyemez
Üye
Mesajlar: 245
Kayıt: 01 Oca 2009 11:00
Konum: Bursa
İletişim:

Re: MySQL işlemleri için küçük php api yazmak

Mesaj gönderen varyemez » 09 Nis 2015 11:16

NuSoap ı araştırıp incele. Bununla php çalışan web sitende istediğin db işlemleri yapan (select , insert , update ) scriptler yazarak webservis serveri , wsdl ler hazırlayabilirsin. Sonrası zaten basit , delphi tarafında client yazmak.
Yalnız php5.3 üstündeki versiyonlarda çalışmıyor (php5.4 mesela) ona dikkat et, mutlaka bir sonuç alacaksın.

Kullanıcı avatarı
AliZairov
Üye
Mesajlar: 341
Kayıt: 06 Nis 2012 02:09
Konum: Azerbaycan, Bakü
İletişim:

Re: MySQL işlemleri için küçük php api yazmak

Mesaj gönderen AliZairov » 09 Nis 2015 12:27

Selam. Teşekkürler. Ben son çare rest servisi yazmakda buldum. Sadece bunu universal nasıl yapa bilirim diye düşünüyorum. Yani kim yüklerse sadece v.t ayarları yaptıktan sonra client projeden sql komutlarıyla ilili v.t çalışsın diye.

Cevapla