2016-04-14 19 views
0

Aşağıdaki kod, intent için eklediğim sonuçtur ve sonuç, login.php kaynağından döndürülen bir şeydir. Ama başarı olup olmadığını karşılaştırmak başarısız. Herhangi bir durumda if döngüsüne girmez. Bununla birlikte, uyarı iletişim kutusunda "Oturum Açma Başarıları" gösterilir.String karşılaştırması onPostexecute çalışmıyor

@Override 
    protected void onPostExecute(String result) { 
      if(result.equals("Login Success")){ 
       Intent intent = new Intent(); 
       intent.setClassName("com.example.soumya.attendance","com.example.soumya.attendance.LoginActivity"); 
       intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
       ctx.startActivity(intent);} 
      else{ 
       alertDialog.setMessage("No Condition Matched.."); 
       alertDialog.show(); 
      } 

    } 

login.php

<?php 
require "init.php"; 
$uname = $_POST["login_name"]; 
$password = $_POST["login_pass"]; 
$sql_query = "select name from students where uname like '$uname' and password like '$password';"; 
$result = mysqli_query($con,$sql_query); 
if(mysqli_num_rows($result) >0) 
{ 
$row = mysqli_fetch_assoc($result); 
$name =$row["name"]; 
echo "Login Success"; 
} 
else 
{ 
echo "Login Failed.......Try Again.."; 
} 
?> 
+0

bu

result.contains("Login Success"){ // contains will check the availability of Login Success. //Your Code } 

deneyin tam zaman uyumsuz görevi gönderebilir ve aynı zamanda post tam yanıt giriş API tarafından iade edilen. –

+3

Neden dize değerini görmek için hata ayıklayıcısını kullanmıyorsunuz, bu yüzden neler olduğunu biliyorsunuz. – Nanoc

+0

PHP kodunuz hiç bir zaman yanıt olarak böyle bir metni döndürmediğinde nasıl 'Kayıt Başarısı 'olur? –

cevap

1

yerine

if(result.equals("Login Success")){ // check the Complete String . 
    //Your Code 
} 
+0

Çok teşekkürler!İşe yaradı! :) – doubtful

+1

Ne kadar yanıltıcı, önce cevap verdim ve cevabınız kabul edildi: -D –

0

Ben de

Ve

PHP tarafında dönüş türü için boole değeri kullanmak yerine "Giriş Başarılı" "Kayıt Başarı ..." kontrol etmelisin . durumu true/false gibi.

Dizeyi durum olarak kullanmayın. PHP tarafında

: Bunun gibi

echo true; 
else 
echo false; 

. Android tarafında

:

if(result) 
{ 
    Toast.makeText(ctx, "Login Success", Toast.LENGTH_LONG).show(); 
} else { 
... 
} 
+0

php'den boole tipi bir durumu nasıl döndürebilirim? – doubtful

+0

kontrol edited cevabı – Darshak

+0

Ancak onPostExecute sadece argüman olarak bir dizgeyi alır :( – doubtful

3

result.contains("Login Success") yerine result.equals() kullanmayı deneyin kontrol edin sunucuya özgü satır başı veya benzeri gibi son.

+0

Teşekkür ederim !!! Çalıştı :) – doubtful

+0

Cevap adamı için iki kez denedim ama her seferinde sorusunu değiştirdi .. son revizyondan sonra başarılı oldum .. Ama yine de asla şikayet etmiyorum. Champs asla şikayet etmez. Cevabınız için bir oylama yapar. Başarıya giden adamı yakalamaya çalışın. Kendinizi kucaklamak ve Champ oynamaya devam etmeyin .. –

+0

Gerçekten üzgünüm. Sayfayı bir süre sonra yeniledik ve iki kez cevap verdiğinden beri cevabını en üst sırada buldum. – doubtful