Tekrardan merhaba arkadaşlar. Vatani görevimi yerine getirdiğim için uzunca bir süre ders paylaşamadım. Bundan sora daha sık ders paylaşımlarına devam edeceğim.Bugünkü dersimiz bir önceki dersimizin devamı niteliğindedir ve diğer bu dersteki örnek kodu geliştirmeye devam ettim.Geçen derste sunucudan üye kontrolü yaparak login olmayı yapmıştık. Login olduğumuzda ise bilgilerimiz SQLİTE veritabanına kaydedilip her seferinde tekrar login olmakla uğraşmıyorduk.
Bu dersimizde ise kayıt olmayı yapacağız. Login ekranında kayıt ol butonuna tıklayınca yeni Kayıt Ol activity si açılacak ve gerekli bilgiler doldurulduktan sonra sunucuya gönderilecektir. Sunucuda kontroller yapıldıktan sonra MYSQL veritabanına keydedilecektir ve kayıt başarılı ise uygulamada otomatik olarak login işlemi gerçekleşecektir.
Arkadaşlar sözü fazla uzatmadan kod kısmına geçelim.Ancak şunu belirtmeliyim ki bu dersi iyi anlamanız için muhakkak geçen dersi incelemeniz gerekir.
Gerekli olan açıklamaları kod üzerinde yapmaya çalıştım…
Android Login Ekran Yapımı 2 (Kayıt İşlemi)
Login classı inceleyelim.
package com.mobilhanem.loginkontrol; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import org.json.JSONException; import org.json.JSONObject; import android.os.AsyncTask; import android.os.Bundle; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; public class LoginPage extends Activity { Button giris,kayit_ol; EditText mail_input,sifre_input; String mail,sifre,sonuc,tarih; String hata_mesaji=""; String URL_POST= "http://www.mobilhanem.com/test/login.php"; Boolean hata = false; PostClass post = new PostClass(); JSONObject cevap=null; public String donus_hata_mesaji; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.loginpage); mail_input = (EditText) findViewById(R.id.editText1); sifre_input = (EditText) findViewById(R.id.editText2); giris = (Button) findViewById(R.id.button1); kayit_ol= (Button) findViewById(R.id.button2); giris.setOnClickListener(new View.OnClickListener() {//giriş butonu tıklandığında public void onClick(View v) { mail = mail_input.getText().toString();//edittext değerini alıyoruz sifre = sifre_input.getText().toString();//edittext değerini alıyoruz //Tarih bilgisini almak için Calendar c = Calendar.getInstance(); SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy"); tarih = format.format(c.getTime()); //Edittextlerden aldığımız mail ve şifreleri kontrol ediyoruz if(mail.matches("")){ hata_mesaji += "Üye No yada E-Mail Alanı Boş Olamaz\n"; hata = true; } if(!Fonksiyonlar.isEmailValid(mail)){//Mail format kontrol hata_mesaji += "Yanlış e-mail formatı\n"; hata=true; } int sifre_karakter = sifre.length(); if(sifre_karakter<6){ hata_mesaji += "Şifre 6 Karakterden Az Olamaz\n"; hata=true; } if(hata){//hata varsa AlertDialog ile kullanıcıyı uyarıyoruz. AlertDialog alertDialog = new AlertDialog.Builder(LoginPage.this).create(); alertDialog.setTitle("Hata"); alertDialog.setMessage(hata_mesaji); alertDialog.setCancelable(false); alertDialog.setButton(RESULT_OK,"Tamam", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { sifre_input.setText(""); hata_mesaji = ""; hata = false; } }); alertDialog.show(); }else{//Hata yoksa Asynctask classı çağırıyoruz.İşlemlere orda devam ediyoruz new GirisKontrol().execute(); } } }); kayit_ol.setOnClickListener(new View.OnClickListener() {//Kayıt Ol butonu tıklanınca public void onClick(View v) {//Kayit Activiysini çağırıyoruz. // TODO Auto-generated method stub Intent intent = new Intent(getApplicationContext(), Kayit.class); startActivity(intent); } }); } class GirisKontrol extends AsyncTask<Void, Void, Void> { private String sonucmesaji; ProgressDialog pDialog; protected void onPreExecute() { // progress dialog pDialog = new ProgressDialog(LoginPage.this); pDialog.setMessage("Giriş Yapılıyor..."); pDialog.setIndeterminate(true); pDialog.setCancelable(false); pDialog.show(); } protected Void doInBackground(Void... unused) { // Building Parameters String sifre_sha1 = Fonksiyonlar.sha1(sifre); // sha1 şifreleme fonksiyonunu kullandık.Çünkü databasede sha1 ile saklıyoruz List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("mail", mail)); params.add(new BasicNameValuePair("sifre", sifre_sha1)); String json = post.httpPost(URL_POST,"POST",params,20000); Log.d("Gelen Json",""+json);//Gelen veriyi logluyoruz.Log Catten kontrol edebiliriz try { cevap = new JSONObject(json); sonucmesaji = cevap.getString("sonucmesaji"); if (cevap.getString("sonuc") != null) { sonuc = cevap.getString("sonuc"); if(Integer.parseInt(sonuc) == 1){ //Eğer giriş başarılı ise Database db = new Database(getApplicationContext()); db.resetTables(); db.kullanıcıEkle(mail, sifre, tarih); //kullanıcıyı ekliyoruz.Ve Main activitye yönlendiriyoruz. //Sonuc başarılı ise main activitye yönlendirdk. Intent anasayfa = new Intent(getApplicationContext(),MainActivity.class ); startActivity(anasayfa); finish(); } } } catch (JSONException e) { e.printStackTrace(); } return null; } // Sonuç başarılı ise bu kod çalışmıcak çünkü Main activitye yönlenmiş durumda protected void onPostExecute(Void unused) { // closing progress dialog pDialog.dismiss(); // updating UI from Background Thread runOnUiThread(new Runnable() { public void run() { if(Integer.parseInt(sonuc) == 0){// Sonuç başarılı değil ise AlertDialog alertDialog = new AlertDialog.Builder(LoginPage.this).create(); alertDialog.setTitle("Hata"); alertDialog.setMessage(sonucmesaji);//Sonuc mesajıyla bilgilendiriyoruz. alertDialog.setCancelable(false); alertDialog.setButton(RESULT_OK,"Tamam", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { sifre_input.setText(""); } }); alertDialog.show(); } } }); } } }
Burda aldığımız verileri sunucuya gönderiyoruz ve sunucudaki databaseden PHP yardımıyla kontrol ediyoruz. Eğer veriler eşleşiyorsa login işlemini gerçekleştiriyoruz.
Şimdi Kayit classını inceleyelim.
package com.mobilhanem.loginkontrol; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.List; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; public class Kayit extends Activity{ Button kayit; EditText isim_edit,mail_edit,sifre_edit,sifre_tekrar_edit,telefon_edit; String isim,mail,sifre,sifre_tekrar,hata_mesaji,telefon=""; boolean hata = false; PostClass post = new PostClass(); String URL_POST= "http://www.mobilhanem.com/test/kayit.php"; JSONObject cevap=null; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.kayit); kayit = (Button)findViewById(R.id.kayit); isim_edit = (EditText)findViewById(R.id.editText1); mail_edit = (EditText)findViewById(R.id.editText2); sifre_edit = (EditText)findViewById(R.id.editText3); sifre_tekrar_edit = (EditText)findViewById(R.id.editText4); telefon_edit = (EditText)findViewById(R.id.editText5); kayit.setOnClickListener(new View.OnClickListener() {//Kayıt ol butonuna tıklanınca @Override public void onClick(View v) { // TODO Auto-generated method stub //Edittextlerden bilgileri aldık isim = isim_edit.getText().toString(); mail = mail_edit.getText().toString(); sifre = sifre_edit.getText().toString(); sifre_tekrar = sifre_tekrar_edit.getText().toString(); telefon = telefon_edit.getText().toString(); int sifre_karakter = sifre.length(); if(isim.matches("") || mail.matches("") || sifre.matches("") || sifre_tekrar.matches("")){// boş veri var mı kontrolü hata = true; hata_mesaji = "Gerekli Alanları Doldurunuz!!!"; }else if(!sifre.matches(sifre_tekrar)){//şifreler uyuşuyor mu kontrolü hata = true; hata_mesaji = "Şifreler Farklı!!!"; }else if(sifre_karakter<6){//şifre karakter sayısı kontrolü hata_mesaji += "Şifre 6 Karakterden Az Olamaz!!!"; hata=true; }else if(!Fonksiyonlar.isEmailValid(mail)){//Mail format kontrol hata_mesaji += "Yanlış e-mail formatı!!!"; hata=true; } if(hata){//hata varsa hatayı alertDialog ile gösteriyoruz AlertDialog alertDialog = new AlertDialog.Builder(Kayit.this).create(); alertDialog.setTitle("Hata"); alertDialog.setMessage(hata_mesaji); alertDialog.setCancelable(false); alertDialog.setButton(RESULT_OK,"Tamam", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { sifre_edit.setText(""); sifre_tekrar_edit.setText(""); hata_mesaji = ""; hata = false; } }); alertDialog.show(); }else{//hata yoksa new KayitOl().execute();//KayıtOl asynctask classı cagırıyoruz } } }); } class KayitOl extends AsyncTask<Void, Void, Void> { private String sonucmesaji,sonuc,tarih; ProgressDialog pDialog; protected void onPreExecute() { // progress dialog pDialog = new ProgressDialog(Kayit.this); pDialog.setMessage("Kayıt İşleminiz Gerçekleştiriliyor..."); pDialog.setIndeterminate(true); pDialog.setCancelable(false); pDialog.show(); } protected Void doInBackground(Void... unused) { sifre = Fonksiyonlar.sha1(sifre);//şifreyi sha1 ile şifreledik //Parametreleri ekliyoruz List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("isim", isim)); params.add(new BasicNameValuePair("mail", mail)); params.add(new BasicNameValuePair("sifre",sifre )); params.add(new BasicNameValuePair("telefon",telefon)); //Tarih bilgisini almak için Calendar c = Calendar.getInstance(); SimpleDateFormat format = new SimpleDateFormat("dd-MMM-yyyy"); tarih = format.format(c.getTime()); String json = post.httpPost(URL_POST,"POST",params,20000); Log.d("Gelen Json",""+json);//Gelen veriyi logluyoruz.Log Catten kontrol edebiliriz try { cevap = new JSONObject(json); sonucmesaji = cevap.getString("sonucmesaji"); if (cevap.getString("sonuc") != null) { sonuc = cevap.getString("sonuc"); if(Integer.parseInt(sonuc) == 1){ //Eğer kayıt başarılı ise //Sqlite database baglanıp gerekli verileri kaydediyoruz. Database db = new Database(getApplicationContext()); db.resetTables(); db.kullanıcıEkle(mail, sifre, tarih); //kullanıcıyı ekliyoruz.Ve Main activitye yönlendiriyoruz. //Sonuc başarılı ise main activitye yönlendirdk. Intent anasayfa = new Intent(getApplicationContext(),MainActivity.class ); startActivity(anasayfa); finish(); } } } catch (JSONException e) { e.printStackTrace(); } return null; } // Sonuç başarılı ise bu kod çalışmıcak çünkü Main activitye yönlenmiş durumda protected void onPostExecute(Void unused) { // closing progress dialog pDialog.dismiss(); // updating UI from Background Thread runOnUiThread(new Runnable() { public void run() { if(Integer.parseInt(sonuc) == 0){// Sonuç başarılı değil ise AlertDialog alertDialog = new AlertDialog.Builder(Kayit.this).create(); alertDialog.setTitle("Hata"); alertDialog.setMessage(sonucmesaji);//Sonuc mesajıyla bilgilendiriyoruz. alertDialog.setCancelable(false); alertDialog.setButton(RESULT_OK,"Tamam", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { sifre_edit.setText(""); sifre_tekrar_edit.setText(""); } }); alertDialog.show(); } } }); } } }
Burda ise kullanıcıdan bilgilerini alıyoruz .Gerekli kontrollerden sonra sunucuya gönderiyoruz ve MYSQL veritabanına kaydediyoruz. Kayıt başarılı ise otomatik login oluyoruz.Eğer başarılı değil ise AlertDialog ile sorunu bildiriyoruz.Burda SQLite veritabanı nasıl işlediğini anlamadıysaniz bir önceki dersimizi incelemeniz gerekir orada daha detaylı anlattım.
Arkadaşlar amacımız android kodlama öğrenmek olsada PHP bilmeyen arkadaslar için PHP kodlarınıda paylaşacağım.Bunlar üzerindede gerekli açıklamaları yapmaya çalıştım.
Öncelikle database bağlantısı için kullandığım baglan.php dosyasını paylaşıyorum.
<?php define('DB_NAME', '********');//kendi database adınız /** MySQL veritabanı kullanıcısı */ define('DB_USER', '*********');//kendi kullanıcı adınız /** MySQL veritabanı parolası */ define('DB_PASSWORD', '**********');//kendi şifreniz /** MySQL sunucusu */ define('DB_HOST', 'localhost'); /** Yaratılacak tablolar için veritabanı karakter seti. */ define('DB_CHARSET', 'utf8'); $con=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME); // Check connection if (mysqli_connect_errno()) { echo "Bağlanırken hata oluştu : " . mysqli_connect_error(); } ?> [/sourcecode] login.php : [sourcecode language="php"][/sourcecode] <?php require_once("baglan.php");//database bağlantısı gercekleştirdik if($_POST){//eğer posttan geliyorsa işlem yapacak $mail = $_POST["mail"];//mail adresini aldık $sifre = $_POST["sifre"];//sifreyi aldık //mail ve şifreyi androidde kontrol etmiştik .Güvenlik acısından burdada kontrol edeceğiz. $hata = false; $sonucmesaji = ""; if($mail==""){//mail bos mu $hata = true; $sonucmesaji = "Mail Adresiniz Boş Olamaz."; } if(strlen($sifre)<6){//şifre 6 haneden kısamı $hata =true; $sonucmesaji = "Şifre 6 Haneden kısa olamaz."; } if (!filter_var($mail, FILTER_VALIDATE_EMAIL)) {//mail format kontrol $hata =true; $sonucmesaji = "Mail Formatı Yanlış."; } if(!$hata){//eğer hata yoksa database sorgusu yapılacak $sql ="SELECT * FROM wp_uyeler WHERE mail='$mail' AND sifre='$sifre'";//mail ve şifre kontrolü $sonuc = mysqli_query($con,$sql); if(mysqli_num_rows($sonuc)>0){//0 dan fazla veri varsa $sonucmesaji = "Giriş Başarılı."; $cevap = array('sonuc' => "1", 'sonucmesaji' => $sonucmesaji); }else{ $sonucmesaji = "Kullanıcı Bulunamadı."; $cevap = array('sonuc' => "0", 'sonucmesaji' => $sonucmesaji); } mysqli_close($con);//database bağlantısını kapattık }else{ $cevap = array('sonuc' => "0",'sonucmesaji' => $sonucmesaji); } echo json_encode($cevap);// json verisini yazdırdık }else{ echo "Giriş Engellendi"; } ?>
kayit.php :
<?php require_once("baglan.php");//database bağlantısı gercekleştirdik if($_POST){//eğer posttan geliyorsa işlem yapacak $telefon = "";//telefon değerini zorunlu tutmadık $isim = $_POST["isim"];//isimi aldık $mail = $_POST["mail"];//mail adresini aldık $sifre = $_POST["sifre"];//sifreyi aldık $telefon = $_POST["telefon"];//telefonu aldık //isim,mail ve şifreyi androidde kontrol etmiştik .Güvenlik acısından burdada kontrol edeceğiz. $hata = false; $sonucmesaji = ""; if($isim==""){ $hata = true; $sonucmesaji = "İsim Boş Olamaz.\n"; } if($mail==""){//mail boş mu $hata = true; $sonucmesaji = "Mail Adresiniz Boş Olamaz.\n"; } //Mailin önceden eklenip eklenmediğni kontrol ediyoruz. Çünkü mail unique olmalı. $sql ="SELECT * FROM wp_uyeler WHERE mail='$mail'"; $sonuc = mysqli_query($con,$sql); if(mysqli_num_rows($sonuc)>0){//0 dan fazla veri varsa $hata =true; $sonucmesaji = "Bu Mail Adresi İle Önceden Kayıt olunmuş.\n"; } if (!filter_var($mail, FILTER_VALIDATE_EMAIL)) {//mail format kontrol $hata =true; $sonucmesaji = "Mail Formatı Yanlış.\n"; } if(!$hata){//eğer hata yoksa $sql="INSERT INTO wp_uyeler (isim, mail, sifre,telefon,tarih) VALUES ('$isim','$mail','$sifre','$telefon',NOW())";//NOW() fonksiyonu şimdiki zamanı alır if (!mysqli_query($con,$sql)){//Kaydedilemediyse $sonucmesaji = mysqli_error($con);//mysqln döndüğü hata mesajını aldık $cevap = array('sonuc' => "0", 'sonucmesaji' => $sonucmesaji); }else{//Kayıt Başarılı ise $sonucmesaji = "Kayıt Başarılı."; $cevap = array('sonuc' => "1", 'sonucmesaji' => $sonucmesaji); } mysqli_close($con);//database bağlantısını kapattık }else{//Eğer posttan gelen verilerde hata varsa calısacak $cevap = array('sonuc' => "0",'sonucmesaji' => $sonucmesaji); } echo json_encode($cevap);// json verisini yazdırdık }else{ echo "Giriş Engellendi"; } ?>
Oluşturduğum MYSQL tablosunun yapısı ise şöyle:
Arkadaşlar PHP dosyaları için detaylı anlatıma girmeyeceğim. Kaynak kod içerisinde hem PHP hemde Android Kodlarını paylaşacağım.Kaynak kodu indirip incelemeniz anlamanıza çok daha yardımcı olacaktır.Çünkü androiddeki tüm sınıfları yazımda paylaşmadım.Anlamadığınız yer olursa çekinmeden soru sorabilirsiniz. Elimden geldiğince sizlere cevap vermeye çalışacağım.
Birdaha ki dersimizde bu iki dersimizin devamı niteliğinde olup Facebook Login ekleyeceğim.
Sizlerden dileğim derslerimizi alttaki linklerden paylaşmanızdır. Bir dahaki derste görüşmek ve bu dersimizin faydalı olması dileğiyle…
Tüm Android Ders, Proje ve Kaynak Kodlar için tıklayınız.
Merhaba. Yazdiginiz kodlari kendime uyarladim ancak kayit bolumunde bolumleri doldurup kaydet dedigimde null yazili bir uyari penceresi cikiyor. Sorun nedir sizce?
sunucudan gelen json verisi yanlış geliyor. Yani sorun android kısmında diil php yada mysql kısmında. Kayit.class da “Log.d(“Gelen Json”,””+json);” gelen json verisini logluyoruz. Logcat ile gelen json verisini inceleyebilirsin.Ordan sunucudan gelen hatayıda görebilirsin.
merhaba baglan.php yi kendime uyarladım fakat localhosttan açmaya çalıştığımda resimde ki hata ile karşılaşıyorum sorun ne olabilir acaba ?
bi önceki sorunun verilen yetkilerden kaynaklandığını farkettim fakat şu anda başka bi problem çıktı karşıma verdiğiniz 3 php dosyasınıda database user pass değiştirrerek wamp ın içinde www klasörüne attım baglan php ye basınca boş bir sayfa login.php ve kayit.php ye basıncada giris engellendi yazısı çıkıyor yani php de yazdığınız kodların son bölümündeki uyarı msjını veriyor ekran görüntülerini atıyorum
http://hizliresim.com/9vq2PZ
http://hizliresim.com/vY8nBA
http://hizliresim.com/q98PXZ
http://hizliresim.com/jz1VdW
verdiğiniz php kodlarında bi sorun var sanırım login_database veritabanının içinde kayit adında bir tablo oluşturdum id isim mail sifre telefon ve tarihten oluşan fakat bu şekilde sonuç alıyorum yardımcı olursanız sevinirim
Giriş engellendi yazmasının sebebi post ile gelmediğniz için. Yani bu php dosyasında if($_POST){ ile posttan gelip gelmediğini kontrol ediyoruz.Post ile gelinmediği takdirde direk çalıştırıldığında else kısmına düşüyor ve Giriş engellendi yazsısı bastırılıyor.Php kodlarında herhangi bir sorun olduğunu düşünmüyorum çünkü benim uygulamaıyı indirip test ettiğinizde çalışıyor. Onlarda aynı php dosyalarıyla çalışıyor. Bence siz database bağlantısını kuramadınız. Kullanıcı adı şifre ve database adı kısımlarını bir kontrol edin. Uygulama içinden post gönderdiğinizde Log Cat ile aldığınız hatayıda yazarsanız daha net görebiliriz sorunun nerde olduğunu.
zaten şu an ben işin uygulama kısmıyla ilgilenmiyorum sadece kendi localhostumda kurduğum database e sizin verdiğiniz php kodlarıyla bağlanmaya çalışıyorum ve sadece baglan.php de ki username password ve database adını kedime göre değiştirmeme rağmen bu giris engellendi yazısını alıyorum
Girişin engellenmesinn sebebi direk giriş yapmaya çalışman.bu php yi çalıştırman için post ile bu sayfaya gelmen gerekiyor.
xampp gibi local severda bu kodu nasıl çalıştırabiliriz.
Xampp ın kurulu olduğu pc ile telefonun bağlandığı ağ aynı olacak yani ikiside aynı modemden bağlanacak. Androidde Url_POST adresi ise xamp ın kurulu olduğu bilgisayarın ağ üzerinden aldığı ip olacak. Mesala benim local ip 10.126.110.132 gibi. Url_POSt=”10.126.110.132/test/kayit.php” gibi.
deneme
Aklıma takılan sorular var..
Benim diyelim xxx adında bir sql serverim var sizin kodlarda hani sql’e bağlanmak için bir şifre girişi falan göremedim yani xxx serverim BBB şifrem ama kodlarda şifre vermek gibi bişey göremedim
Acaba sql connect’i php dosyasında mı yapıyoruz?
Evet Sql bağlantısını PHP dosyasında yapıyoruz. baglan.php ile bu işlemi gerçekleştiriyoruz.
Veritabanı bağlantısı problemi yaşıyorum uygulamada 🙁 sizin mobilhanem.com adresiniz çalışıyor benm adresim çalışmıyor. veritabanı bilgilerim filan da doğru kayıt alıcakken alamıyor durduruldu diyor kapanıyor 🙁
Log paylaşırsan daha detaylı anlayabiliriz.
cansu hanımla aynı sorunu alıyorum uygulamada hata yok sizin adresinizdede çalışıyor fakat kendi sitemle bağdaştırdığım zaman program durduruluyor sizce hata nedir
Cansu hanıma dediğim gibi log paylaşırsanız daha detaylı inceleyebiliriz.
program sorunsuz olarak calısıyor fakat php kodlarında sıkıntı olduğunu düşünüyorum .Php ve mysql kodlarını tekrar paylaşabilirseniz çok iyi olur .İlginiz için çok teşekürller.
Php kodları bendeki yani sunucuda çalışan php kodları ile aynı.Php kodlarında bir hata bulunmamakta.Hatayı görmek istiyorsan PHP kodlarındaki şu yolu deneyebilirsin(Ben öyle yapıyorum) Post ile aldığın verileri GET ile gönderip direk sayfada oluşan hatayı görebilirsin.Mesala:
http://www.mobilhanem.com/test/kayit.php?telefon=2121212&isim=taha&[email protected]&sifre=2321321 şeklinde direk tarayıcıdan çağırıp PHP dosyasında POST ile aldığın verileri GET ile alırsan dönen hatayı görebilirsin.
merhaba ,iyi günler facebook ve twitterla login olmayıda paylaşacakmısınız acaba ?
Merhaba,twitter login değil ama yakında facebook login paylaşacağız.
http://www.mobilhanem.com/android-facebook-login-ve-facebook-share/ dersimizi yayınladık.
Kolay Gelsin..
Hocam merhaba.. bende çalışmıyor program. sürekli durdu hatası veriyor.. mysql kodlarını gönderebilir misiniz
bunlar da baglan.php kodu ile mysql görüntüm..
bunlar da baglan.php kodum ile mysql ile sitede oluşturduğum tablodur..
kontrol ettiğimde bu geliyor
Sürekli durdu hatası veriyor.. ama sizinkinizle denediğimde çalışıyor..
Giriş engellendi sebebi Post ile değil GET ile gitmen.
logchat kısmıdır hocam
Hani hata vermemişki.
İşte ben de onu çözemedim hocam görünüşte hiçbir hata yok ama programı çalıştırıncı giriş veya kayıt yaptığınızda program durdu hatası alıyorum..
Post ile gönderdiğin verileri tarayıcıdan GET ile gönderip PHP kodundada POST olan yerleri GET’e çevirirsen eğer ,aldığın hatayı tarayıcıdan görebilirsin.
Tarayıcı ile neyi kastediyorsunuz hocam
Android’de POST olarak gönderdiğn verileri normal bilgisayarın taracıyısından GET ile yani şu şekilde http://www.mobilhanem.com/test/kayit.php?isim=taha&[email protected]&telefon=555555555&sifre=12345 şeklinde tarayıcıda açıp ,PHP dosyasında POST yerinede GET işlemleri yaparsan aldığın hatayı görürsün.
Böyle oluyor hocam
Dedim ya PHP dosyasının içindekileri POST’ları GET yap diye.
LogCat çıktısı paylaşma şansın var mı?
Hocam yaptığımız uygulamaya sadece bizim, vereceğimiz şifre ile girilmesini nasıl sağlarız. Kişi uygulamayı yükleyecek bizden mail ile şifre talep edecek yani
Merhaba ben kendi oluşturduğum database de eklenen kullanıcıları görmek istiyorum ama bunun için ne yapmam gerekiyor
Phpmyadmin kullanman gerekiyor.İnternette kullanımı ile ilgili bilgi bulabilirsin.
kullandım ama String URL_POST= “http://www.mobilhanem.com/test/login.php”; şu kısmı tam oalrak nasıl değiştiriceğimi anlayamadım
Nasıl yani uygulama içinden mi?
evet sizin uygulamanızı indirdim fakat benim eklediğim kullanıcılar kaydoluyo ama ben göremiyorum php dosyalarını wampserver a attım ama yine de olmadı
peki linki değiştirdin mi
http://www.mobilhanem.com/test/kayit.php kendi adresinle değiştirdin mi?
String URL_POST= “http://localhost/kayit.php”; şeklinde değiştirdim
Database ‘i filanda olusturdun dimi localinde?
evet login_databse adında bir veritabanı oluşturdum onun içinde login isimli bi tablo oluturdum(içinde id mail sifre ve hesap sütunlaru mevcut)
Sorun ne peki onu anlamadım?
çalıştırdığım an dururduruldu hatası veriyo
Aşağıdaki Fatih Demir arkadaşımızı anlattığım şeyleri sende deneyebilirsin.
böylee bir hata alıyorum
Tamam JSON objesi gelmiyor.Yani PHP kodlarında veya veritabında hata bulunmakta. Bunuda ancak şu şekilde anlayabilirsin.
Android’de POST olarak gönderdiğn verileri normal bilgisayarın taracıyısından GET ile yani şu şekilde http://www.mobilhanem.com/test/kayit.php?isim=taha&[email protected]&telefon=555555555&sifre=12345 şeklinde tarayıcıdan girersen ,PHP dosyasında POST yerinede GET işlemleri yaparsan aldığın hatayı görürsün.
hocam tekrar merhaba.. ben bir uygulama yaptım da.. yine login giriş uygulaması ama biraz daha karmaşık bir uygulama.. bu uygulama emülator de çalışıyor ama telefonda internet bağlantısı hatası veriyor.. bunun sebebi ne olabilir..
Emülatörde çalışıp gerçek cihazda internet bağlantı hatası vermesi pek mantıklı gelmedi bana. Sen herhangi bir internet bağlantısı kontrolü ekledin mi? Wifi veya 3g ile ilgili bir durum olabilir.
Tamam hocam çözdüm.. sorun rom daymış.. orjinal rom attım düzeldi..
Tamam o zaman . Soru sorduğunuzda çözümünü kendiniz bulduğunuzda paylaşırsanız başka arkadaşlarda bundan faydalanabilir.
Kolay Gelsin..
Selamlar. PHP ve Mysql bağlantım düzgün olmasına rağmen aşağıdaki hatayı alıyorum. (Ve uygulama durduruluyor)
Kayıt ve giriş adresini sizinkiyle değiştirdiğimde sorun kalmıyor.
Ne yapabilirim?
hocam herşeyi kendime gore uyarladım. kayıt ekranında yazdıklarım doğru bi şekilde databese e kayıt ediliyor . yani bağlantı kuruyor kayıt işini gerçekleştiriyor . fakat sonrasında uygulama hataya düşüp kapanıyor . log chat te de aynen şu yazuyor :
06-27 00:56:53.644 1711-1711/com.baltaci.ahmet.mysql E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.baltaci.ahmet.mysql, PID: 1711
java.lang.NumberFormatException: Invalid int: “null”
at java.lang.Integer.invalidInt(Integer.java:138)
at java.lang.Integer.parseInt(Integer.java:358)
at java.lang.Integer.parseInt(Integer.java:334)
at com.baltaci.ahmet.mysql.Kayit$KayitOl$1.run(Kayit.java:166)
at android.app.Activity.runOnUiThread(Activity.java:5247)
at com.baltaci.ahmet.mysql.Kayit$KayitOl.onPostExecute(Kayit.java:164)
at com.baltaci.ahmet.mysql.Kayit$KayitOl.onPostExecute(Kayit.java:100)
at android.os.AsyncTask.finish(AsyncTask.java:632)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
nedir bnim sıkıntım 🙂
Sıkıntını çözelim:) Sunucudan gelen cevapda “sonuç” ben 1 olarak gönderiyorum eğer başarılı ise.Benim anladığım kadarı ile sen o değeri dönmüyorsun yada boş dönüyorsun. Bunların dışında hiçde cevap dönemiyor olabilirsin. Gelen Json ı ilk başta loglatırsan sunucudan gelen cevabı görmüş olursun.
Yada Burdaki dersimdeki Debug kullanmayı denersen adım adım inceleyebilirsin kodu:
http://www.mobilhanem.com/android-studio-debug-kullanimi/
Hocam hiç bu saatte yanıt alacağımı beklemiyordum 🙂 nası loglatıcam json ı hocam .
Hizmette sınır tanımıyoruz:)
String json = post.httpPost(URL_POST,”POST”,params,20000);
Log.d(“Gelen Json”,””+json);
Kayit.Class ı incelersen orada yapmıştım. Ama debug öğrenmen sana çok şey katacaktır.
Hocam neler ettim neler ama bi turlu tutturamadım . 2 gunde sql mysql php ogrendim 🙂 bu olmadı 🙂 debug da teker teker ilerledim benim yazmadıgım bi androidin kendi kutuphanesinden bi yerde durdu 🙂
Anladım ama sorun açık bir şekide belli. Sunucudan veri dönmüyor. Yada dönen verinin formatı yanlış veya hepsi doğru Sonuc kısmı boş yada int olmayan bir değer geliyor.Bunlar üzerinde yoğunlaşıp sorunu çözebilirsin.
Hocam cok olacağım sanırım .
sunucudan veri donmuyor sa ?
donen verinin formatı yanlışsa ?
yada hepsi doğru sonuc kısmı boş yada int değilse ? kısaca solerseniz yarın bu programı sunmam gerekiyor . bir iki cihaz la beraber calışan değişik bi program cihazlar henuz patent alınmadığı için uygulamayı yazdıramıyorum 🙂 kendım yazıyorum . projem kabul gorurse programı bir şirkete yada mühendise yazdırmam gerekicek . ama şimdilik şu hatayı cozersem geri kalanlarıda yazabilirim .
İyide ben burdan nasıl cevap vereyim 🙂 Gelen veriyi loglatabildin mi? Log kısmından veriyi görmen lazım ki veri mi yanlıs geliyor yoksa hiç gelmiyor anlamamız lazım. Veriyi loglatıp burda paylasırsan yarın bakayım. Site içerisinde de logcat diye aratırsan loglama ile ilgili bilgilerde bulabilirsin.
tamam hocam yapamazsam yarın tkrar rahatsız ederim saolun 🙂
Çözüldümü sorun? Gelen logdan anladım kadarıyla  şöyle bir işaretler var onlar bozuyor gibi.
Bende anlaadım ama o işaretleri bir turlu duzeltemedim hocam
Sunucudan öyle geliyor belliki. Sizin farketmediğiniz bir karakter hatası var. Php kodlarını tekrar inceleyin.
YOk Hocam zaten siz ne yazdıysanız onu kopyaladım . duzelmiyor malesef
hocam sizin test adresinizi yazıyorum çalışıyor veri doğru geliyor . sizin yukarıda paylaştığınız php nin sadece gerekli kısımlarını değiştiriyorum kendi hostuma kopyalıyorum aynı php ile json bozuk geliyor .
O zaman net şekilde sıkıntı PHP de. Bence sebebide BOM lu kodlaman. PHP kodunu BOMsuz olarak kodla. Bunuda Notepad++ ile yapabilirsin.

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /vhosts/carmenclass.com/http/login.php on line 28
{“sonuc”:”0″,”sonucmesaji”:”Kullanu0131cu0131 Bulunamadu0131.”} BOM suzda bole 🙂
Hocam kendi programınızda benim adresim ile deneseniz olurmu . http://www.carmenclass.com/login.php dilerseniz ftp şifrelerinide verebilirim .
Yok o şekilde yardımcı olamıyoruz. Elimizden geldiğince sorulara cevap vermeye çalışıyoruz.Php de warning de kapatmalısın.
{“sonuc”:”0″,”sonucmesaji”:”Kullanu0131cu0131 Bulunamadu0131.”}
yine bastaki veriler bozuk notepad++ ile duzenledim bom olmadan sonra php de hatayı kapattım . yine bozuk geliyor
http://stackoverflow.com/questions/3255993/how-do-i-remove-ï-from-the-beginning-of-a-file
Burda çözüm paylaşmışlar inceleyebilirsin.
Yok hocam vazgecicem sanırım olmuyor hiçbirşey .
burada var mı bir yanlışş <?php
require_once("baglan.php");//database bağlantısı gercekleştirdik
error_reporting(0);
if($_POST){//eğer posttan geliyorsa işlem yapacak
$mail = $_POST["mail"];//mail adresini aldık
$sifre = $_POST["sifre"];//sifreyi aldık
//mail ve şifreyi androidde kontrol etmiştik .Güvenlik acısından burdada kontrol edeceğiz.
$hata = false;
$sonucmesaji = "";
if($mail==""){//mail bos mu
$hata = true;
$sonucmesaji = "Mail Adresiniz Boş Olamaz.";
}
if(strlen($sifre)0){//0 dan fazla veri varsa
$sonucmesaji = “Giriş Başarılı.”;
$cevap = array(‘sonuc’ => “1”, ‘sonucmesaji’ => $sonucmesaji);
}else{
$sonucmesaji = “Kullanıcı Bulunamadı.”;
$cevap = array(‘sonuc’ => “0”, ‘sonucmesaji’ => $sonucmesaji);
}
mysqli_close($con);//database bağlantısını kapattık
}else{
$cevap = array(‘sonuc’ => “0”,’sonucmesaji’ => $sonucmesaji);
}
$previous_encoding = mb_internal_encoding();
mb_internal_encoding(‘UTF-8’);
mb_internal_encoding($previous_encoding);
//echo json_encode($cevap);// json verisini yazdırdık
$json = json_encode($cevap);
echo $json;
}else{
echo “Giriş Engellendi”;
}
?>
Yanlış birşey gözükmüyor. Şunu deneyebilirsin. Tüm PHP dosyalarını tekrardan Bomsuz olarak oluşturup eski kodları kopyalayıp bu dosyaların içine yapıştırıp replace edersen umarım düzelir.
cevap surekli null oluyor json a eşitlenmiyor
1725-1967/com.baltaci.ahmet.mysql D/Gelen Json﹕ {“sonuc”:”1″,”sonucmesaji”:”Kayu0131t Bau015faru0131lu0131.”} budur hocam
if(Integer.parseInt(sonuc) == 0){// Sonuç başarılı değil ise buda logdaki hata uzerine tıkladığımda gittiği satır hocam
İyi Günler ,
Hocam androidde çok yeniyim.
Bir giriş ekranı yapmam lazım.
Aklıma takılan sorular şöyle:
1- Php ile kontrol yapmak zorunda mıyım ? başka seçeneğm yok mu?
2- SQLServer kullanamaz mıyım?
3- Uygulamarınızda ki PostClass dosyası ne işe yarıyor?
4 – android-login-ekran-yapimi-2-kayit-islemi uygulamanızla
android-login-ekran-yapimi-1-php-ve-mysql-kullanarak uygulamanızın farkı nedir?
Teşekkürler/SAYGILAR
İyi Günler Hocam,
Androidde çok yeniyim.
Bir giriş ekranı yapmam lazım.
Aklıma takılan sorular şöyle:
1- Php ile kontrol yapmak zorunda mıyım ? başka seçeneğm yok mu?
2- SQLServer kullanamaz mıyım?
3- Uygulamarınızda ki PostClass dosyası ne işe yarıyor?
4 – android-login-ekran-yapimi-2-kayit-islemi uygulamanızla
android-login-ekran-yapimi-1-php-ve-mysql-kullanarak uygulamanızın farkı nedir?
Teşekkürler/SAYGILAR
Merhaba Sunay,
1- PHP zorunlu değildir. Asp , java , c# vs kullanabilirsin. Ama sıfırdan öğreneceksen en kolayı PHP.
2-PHP ile birlikte genelde MYSQL kullanılır bağlantısı daha kolaydır ve ücretsdizdir. SQLServer ise kullanımı daha zor ve belli mb sonrası ücretlidir vs..
3-Login ekranı yapımı 1 dersinde detaylıca anlattım. O dersi incelemen gerekir.
4-Bu iki ders birbirinin devamı niteliğindedir. Birincisinde login işlemi nasıl yapılır anlattım ikincisinde ise kayıt işlemini anlattım. İkincisinde kullanıcı kayıt olup login işlemi gerçekleşitirebilyor. Zaten iki dersi detaylıca incelersen farkını sende rahatlıkla anlayabilirsin.
Kolay gelsin..
Hocam yaptığımız uygulamaya sadece bizim, vereceğimiz şifre ile girilmesini nasıl sağlarız. Kişi uygulamayı yükleyecek bizden mail ile şifre talep edecek yani…
Kayıt olurken şifre istemiceksin. Kayıt POST u sana ulaştığında Sunucu tarafına şifre yi kendin random olarak oluşturup PHP ile kullanıcıya mail atacaksın ve oluşturduğun şifreyi database kaydedeceksin. Mail atma işlemini PHP Mailer ile yapabilirsin. Bunun için sunucunun Mail fonksiyonunun açık olması gerekmektedir. Ancak PHP Mailer ile attığın mail çok yüksek ihtimal Spam’a düşecek. Bunu engellemek için SMTP ile mail göndermeye bakman gerekecek. İnternette bununla ilgili kaynak bulabilirsin. Android kısmında takıldığın yeri burdan sorabilirsin.
Kolay Gelsin..
Yok hocam tam ifade edemedim ekran açılır açılmaz şifre isteyecek, kuramsal bir uygulama olduğu için kullanan kişilere biz tek bir şifre göndereceğiz herkez aynı şifreyi kullanacak
Merhaba, ben PostClass.javada olan olayları anlamadım orda ne dönüyor ? ve importlarda hata veriyor benim. Bide List kısmında hata alıyorum. Yardımcı olurmusunuz
PostClass javada ne dönüyor ne demek? Anlamadığın yerini sor. sen bizim uygulamayı indirip çalıstırırken mi hata alıyorsun yoksa kendi projende mi?
Kendi projemde böyle hatalar alıyorum
projeni hangi versiyonda yazıyosun kardeş?
Compile sdk versiyonunu 21 e indir. Bunu build.gradle dosyası içinde android ‘in altında compileSdkVersion olarak bulabilirsin.
Bunun yanında internet bağlantısı yapmak için bu yöntemi değilde Volley kütüphanesi yada retrofit kütüphanesini kullanabilirsin. Sitede her iki kütüphane hakkında ders bulunmaktadır.:
http://www.mobilhanem.com/android-volley-kullanimi-ve-json-parse-etme/
http://www.mobilhanem.com/android-retrofit-kullanimi/
Hocam Fatih Demir’deki hatanın aynısı bende var.Sizin linkte çalışıyor ama benimkin app has stopped diyor. Hem login de,hem de kayitta.Hatta database’i kontrol ettiğimde girdiğim bilgileri kaydettiğini görüyorum.Fatih Demir’e söylediğiniz işlemleri yaptım POST ları GET yaptım orda da bir hata güzkmüyor.Resimlerini de yolluyorum.Yardım ederseniz sevinirim ne yapacağımı cidden bilmiyorum.Şimdiden sağolun…
Bunlarda resimler…
internet kullanım iznini verdin mi projene?
evet verdim.zaten sizin verdiğiniz kayit ve login linkini kullanınca çalışıyor.ama benim kayit ve domain linkinde sorun çıkartıyor.Post ları get yapınca aldığım sonucu da gösterdim size.projeyi çalıştırınca kayıt ol diyince de kayıt yapıyor database ama sadece login olmuyor.çok enteresan bir sorun.ama sizin domainle çalışıyor hepsi.php kodlarında bir hata olduğunu sanmıyorum çünkü datbase’e ulaşıp kayıt yapıyor.aldığım sitedeki domainde veya php kodlarında hata olabilir mi ki? İlgilendiğiniz için teşekkürler…
Kolay gelsin, uygulamayı iyi hoş yaptım ama localde çalıştırdığımda uygulama kapanıyor, senin php kodların ile çalıştırdığımda ise sıkıntı yok, bağlan.php de bilgileri girmemiz gereken yerlere Database’deki bilgileri giriyoruz dimi resimdeki gibi, Hatta benim url adreslerim şuan bunlar
“http:localhost/mysql-php/login.php”
“http:localhost/mysql-php/kayit.php”
login ve kayit php dosyalarını değiştirmedim, dediğim gibi kendime uyarlayınca hata alıyorum phpmyAdminde de tablom da bu şekilde.
Öncelikle androidden post işlemini gerçekleştirmeden önce Php ile ufak bir form ile Post işlemini gerçekleştirip Php kodlarının attığı hatayı görmelisin. Sorun androidde değil Php de . Dediğim gibi yaparsan sorununu görebilirsin. Yada androidde logcat çıktını incelemelisin.
Benim de emulator de çalışıyor fakat uygulamayı telefona yüklediğimde çalışmıyor.Ben nedenin ip kısmından kaynaklandığını düşünüyorum fakat sorunu çözemedim.Uygulamanın telefonda çalışmasını nasıl sağlayabilirim?
Bilgisayarda güvenlik duvarını pasif hale getir bir de öyle dene, benimde başıma bir kaç defa geldi, çok sinir bozucu bir durum, ben bu şekilde düzeltmiştim 🙂
phpmyadmin oluşturdum, android ve phpmyadmin bölümünde hata alıyorum.
phpmyadmin
——–
[25-Mar-2016 14:35:14 Europe/Istanbul] PHP Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home/vehizmet/public_html/test/login.php on line 28
android bölümü
—–
03-25 09:36:41.827 5262-5262/com.mobilhanem.loginkontrol E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.mobilhanem.loginkontrol, PID: 5262
java.lang.NumberFormatException: Invalid int: “null”
at java.lang.Integer.invalidInt(Integer.java:137)
at java.lang.Integer.parseInt(Integer.java:354)
at java.lang.Integer.parseInt(Integer.java:331)
at com.mobilhanem.loginkontrol.LoginPage$GirisKontrol$1.run(LoginPage.java:146)
at android.app.Activity.runOnUiThread(Activity.java:4713)
at com.mobilhanem.loginkontrol.LoginPage$GirisKontrol.onPostExecute(LoginPage.java:144)
at com.mobilhanem.loginkontrol.LoginPage$GirisKontrol.onPostExecute(LoginPage.java:93)
at android.os.AsyncTask.finish(AsyncTask.java:632)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
—————–
Android kısmında hata almanın sebebi PHP kısmında hata alman. Android-PHP bağlantısını sorunsuz yapabilmen için PHP kodlarının hatasız çalışıyor olması lazım.
hatanın sebebini bulabildiniz mi aynı hata bende de var
Merhaba kayit kısmında json null geliyor hata nedir? yardımcı olabilir misiniz?
Kayıt sisteminden jason null gelmesi demek PHP kısmında bir hata yaptığın anlamına gelir.
Login kisminda sql`de bilgiler dogru olmasina ragmen HATA: NULL Dialog penceresini olusturuyor.Sebebi nedir acaba ? Kayit islemi basarili oluyor fakat Sonra APP i kapatip giris yapmak istedigimde bilgileri dogru vermeme ragmen HATA: null ekrani aliyorum ?
has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{fa7f0cf V.E….. R……D 0,0-1002,348} that was originally added here
şöyle bir hata alıyorum herşey çok düzgün çalıştığına eminim google’da biraz arama yaptım fakat anlamadım anlatılanları porjeyi komple android studioya atıp çalıştırdım ben anlamadım yardımcı olurmusun
Hocam selamlar,
Uygulamanızı direk indirdim. Php dosyalarını sunucuma yükledim. Veri tabanı bilgilerini girdim. Ancak kendi sunucu adresimi girdiğim zaman uygulamaya durduruldu hatası veriyor.
Sizin site kaldığı zaman sorun olmuyor kafam karıştı çıkamadım işin içerisinden.
Hocam merhabalar, benim bir sitem var ve ona mobil uygulama yapmak istiyorum. Kendi hostumda zaten mysql-php kodları var. Sizin verdiklerinizi hostuma yüklediğimde bir sorun çıkmasın?
Çok teşekkür ederim, elinize sağlık düzgün çalışıyor. Wampp server’da da çalıştı 🙂 Json’ın hata vermesi bende de oldu baya uğraştım orada. Bendeki sorun baglan.php içerisinde echo’yla hata mesajı verdirmiştim, sonra Log’larda fark ettim. Nedenini pek bilmiyorum bende yeniyim ama echo androide gönderilen cevap arrayine ekleniyor, buda json objesinin yapısını bozuyor ve parse olmuyor. Bazı arkadaşlar demiş database’e eklemiş ama hata mesajı veriyor, bende de aynısı oluyordu. baglan.php’ de echo ile hata mesajı yazmadıklarına emin olsunlar. bendeki sorun en azından buydu. Tekrar teşekkür ederim 🙂
Ben php dosyalarından baglan.php yi kendime göre ayarladıktan sonra hostinge attım. Database’i resimde olduğu gibi kurup android studioda verdiğiniz site adresini değiştirip çalıştırdım. Sonuçta sürekli uygulama durduruldu hatası alıyorum. Sizin sitenin adresini denediğimde uygulama sorunsuz fakat kendi adresimde uygulama durduruluyor. Php bağlantısını kontrol ettim sıkıntı yok. Yardımcı olur musunuz?
PostMan ile testlerinizi yapabilirsiniz. Böylelikle Php tarafındaki hatanızı daha kolay bulabilirsiniz. Postman ile hatasız calıstırdıktan sonra Android tarafına geçebilirsiniz.
Hiç bir yerde sıkıntı görmedim hocam bana mysql yapısını yollar mısın?
06-20 16:45:20.455 8576-8576/? D/dalvikvm: Late-enabling CheckJNI
06-20 16:45:20.515 8576-8576/com.haybir.haybir I/InstantRun: Instant Run Runtime started. Android package is com.haybir.haybir, real application class is null.
06-20 16:45:20.515 8576-8576/com.haybir.haybir W/InstantRun: No instant run dex files added to classpath
06-20 16:45:20.995 8576-8576/com.haybir.haybir D/libEGL: loaded /system/lib/egl/libEGL_adreno.so
[ 06-20 16:45:20.995 8576: 8576 D/ ]
HostConnection::get() New Host Connection established 0xb7c95960, tid 8576
06-20 16:45:21.015 8576-8576/com.haybir.haybir D/libEGL: loaded /system/lib/egl/libGLESv1_CM_adreno.so
06-20 16:45:21.015 8576-8576/com.haybir.haybir D/libEGL: loaded /system/lib/egl/libGLESv2_adreno.so
06-20 16:45:21.045 8576-8576/com.haybir.haybir W/EGL_emulation: eglSurfaceAttrib not implemented
06-20 16:45:21.045 8576-8576/com.haybir.haybir D/OpenGLRenderer: Enabling debug mode 0
06-20 16:45:36.675 8576-8576/com.haybir.haybir D/dalvikvm: JIT code cache reset in 0 ms (0 bytes 1/0)
06-20 16:45:36.675 8576-8576/com.haybir.haybir D/dalvikvm: GC_FOR_ALLOC freed 212K, 9% free 3081K/3356K, paused 4ms, total 4ms
06-20 16:45:36.675 8576-8576/com.haybir.haybir D/dalvikvm: GC_FOR_ALLOC freed 15K, 9% free 3121K/3412K, paused 3ms, total 3ms
06-20 16:45:36.675 8576-8576/com.haybir.haybir I/dalvikvm-heap: Grow heap (frag case) to 3.711MB for 635808-byte allocation
06-20 16:45:36.685 8576-8585/com.haybir.haybir D/dalvikvm: GC_FOR_ALLOC freed <1K, 8% free 3741K/4036K, paused 3ms, total 3ms
06-20 16:45:36.725 8576-8576/com.haybir.haybir W/EGL_emulation: eglSurfaceAttrib not implemented
06-20 16:45:36.935 8576-8841/com.haybir.haybir D/dalvikvm: GC_FOR_ALLOC freed 222K, 7% free 4033K/4316K, paused 9ms, total 12ms
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: at com.android.org.conscrypt.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:146)
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:93)
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:388)
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:165)
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:164)
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:119)
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:360)
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487)
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465)
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: at com.haybir.haybir.PostClass.httpPost(PostClass.java:51)
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: at com.haybir.haybir.Haybir$GirisKontrol.doInBackground(Haybir.java:122)
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: at com.haybir.haybir.Haybir$GirisKontrol.doInBackground(Haybir.java:103)
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:288)
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
06-20 16:45:36.955 8576-8841/com.haybir.haybir W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
06-20 16:45:36.965 8576-8841/com.haybir.haybir W/System.err: at java.lang.Thread.run(Thread.java:841)
06-20 16:45:36.965 8576-8841/com.haybir.haybir E/Buffer Error: Hata java.lang.NullPointerException: lock == null
06-20 16:45:36.965 8576-8841/com.haybir.haybir D/Gelen Json: null
06-20 16:45:36.965 8576-8841/com.haybir.haybir W/dalvikvm: threadid=12: thread exiting with uncaught exception (group=0x94caab20)
06-20 16:45:36.965 8576-8841/com.haybir.haybir E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: com.haybir.haybir, PID: 8576
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.NullPointerException
at org.json.JSONTokener.nextCleanInternal(JSONTokener.java:116)
at org.json.JSONTokener.nextValue(JSONTokener.java:94)
at org.json.JSONObject.(JSONObject.java:155)
at org.json.JSONObject.(JSONObject.java:172)
at com.haybir.haybir.Haybir$GirisKontrol.doInBackground(Haybir.java:127)
at com.haybir.haybir.Haybir$GirisKontrol.doInBackground(Haybir.java:103)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)
06-20 16:45:37.615 8576-8576/com.haybir.haybir E/WindowManager: android.view.WindowLeaked: Activity com.haybir.haybir.Haybir has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{4a7eda14 V.E….. R……D 0,0-832,144} that was originally added here
at android.view.ViewRootImpl.(ViewRootImpl.java:348)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
at android.app.Dialog.show(Dialog.java:286)
at com.haybir.haybir.Haybir$GirisKontrol.onPreExecute(Haybir.java:113)
at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)
at android.os.AsyncTask.execute(AsyncTask.java:535)
at com.haybir.haybir.Haybir$1.onClick(Haybir.java:84)
at android.view.View.performClick(View.java:4438)
at android.view.View$PerformClick.run(View.java:18422)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5019)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
06-20 16:45:39.544 8576-8841/? I/Process: Sending signal. PID: 8576 SIG: 9
Uygulama durduruldu deyip duruyor ne hatalı anlayamıyorum
Hocam merhabalar ben login sayfası yapıp daha sonra kullanıcıların kitap ekleme silme olayının oldugu bir proje yapıcam hangi veritabanı uygundur bunun için kullanıcı profili olucak içinde ekledği kitapları görebilcek ?
iyi günler hocam konu dışı ama şu sayfa içinde kodları görüntülüyorsunuz ya nasıl yapıldığı ile ilgili yardımcı olabilirmisiniz
Hocam log dan json null değer dönüyor sorun nedir yardımcı olursan sevinirim.
Merhaba hocam,
Ben lise 11. sınıf bilişim öğrencisiyim.
Php’de %70 bilgiliyim diyebilirim.
Javaya da başlamak istiyorum ancak bir sorum var sizlere. Üye kayıtı ve girişi kısmını yaptım, giriş yaptıktan sonra mesela Main Activity kısmına girince, Hoş Geldiniz MobilHanem.com gibi verileri yazdıracağım tabii ki bunları mysql’den sorgularla çekeceğim. Sizce bunu nasıl yapabilirim? Java’da bilgim neredeyse hiç yok, yolun en başındayım :).. Kolay gelsin..