2016-04-04 5 views
0

ログインコードが正常に動作していますが、無効なログインの詳細が表示された場合、ユーザーにトーストするコードのスニペットを含める必要があります。JSONがアンドロイドの無効なログインの詳細を通知します

無効なログインの詳細を提供するかどうかをユーザーに知らせるために、下のコードを変更するのを手伝ってください(インターネット上の他のチュートリアルから見つけてください)。

protected void onPostExecute(String s) { 
    String err=null; 

    try { 
     JSONObject root = new JSONObject(s); 
     JSONObject user_data = root.getJSONObject("user_data"); 
     NAME = user_data.getString("name"); 
     PASSWORD = user_data.getString("password"); 
     EMAIL = user_data.getString("email"); 
     if(NAME == ""){ 
      Toast.makeText(getApplicationContext(), 
        "Invlaid Login Details", Toast.LENGTH_LONG).show(); 
     } 
    } catch (JSONException e) { 
     e.printStackTrace(); 
     err = "Exception: "+e.getMessage(); 
    } 

    Intent i = new Intent(ctx, Home.class); 
    i.putExtra("name", NAME); 
    i.putExtra("password", PASSWORD); 
    i.putExtra("email", EMAIL); 
    i.putExtra("err", err); 
    startActivity(i); 

} 

、ここでは私のPHPファイルは、ログインのためである

require 'connection.php'; 
try{ 

    $username = filter_input(INPUT_POST, 'name'); 
    $pssword = filter_input(INPUT_POST, 'password'); 

    if($username == "") 
    { 
     $results = "Invalid Entry"; 
     echo json_encode(array("user_data"=>$results)); 
    } 
    else 
    { 
     $stmt = $db->prepare('SELECT * ' 
         . 'FROM users1 ' 
         . 'WHERE name = :uname AND password = :password '); 
     $stmt->bindParam(':uname', $username); 
     $stmt->bindParam(':password', $pssword); 
     $stmt->execute(); 
     $results = $stmt->fetch(PDO::FETCH_ASSOC); 

     if($results > 0){ 

      $response = array(); 
      echo json_encode(array("user_data"=>$results)); 
     } else{ 
      $results = "No Record Found";   
      $results["success"] = 0; 
      $results["message"] = "No Record Found"; 
      die(json_encode($results)); 
     } 
     } 

    }catch(PDOException $e) { 
    echo 'ERROR: ' . $e->getMessage(); 
    } 
$stmt = NULL; 
$results = NULL; 
exit(); 
//} 

答えて

0

あなたは2つの文字列を比較するために

"".equals(Name) 

を使用する必要が

Name == "" 

を使用することはできません。あなたは空の文字列をチェックするためにあなたのトースト

+0

おかげしかし、次のことができますJSONのrepsonseは、Webサービスから返されたので、この理由がある

は対象ではない文字列であるので、このコードを無視しますこれを少し解説する..?私はアンドロイドプログラミングでは新しく、これが動作するために必要なコードを私に与えることができれば感謝します。これをコードに変更し、これが動作するかどうかはわかりません。if(NAME.equals(0)) – fernan

+0

Javaの2つの文字列を比較すると、javascriptやphpと同じではありません。 Stringクラスでequalsメソッドを使用する必要があります。それを使用しないと、値ではなくアドレス値と比較されます。 ""と名前は2つの別個のオブジェクトなので、2つのアドレスを持っています – kevingiroux

+0

あなたはその逆を行うべきです。 If( ""は(Name)と等しくなります) – kevingiroux

0

使用NAME.isEmpty()を表示することはできませんので

==演算子は、「アドレス値を比較します」名前の同じアドレスを持っていない

0

あなたの問題はAndroidアプリケーションにあります。 )前もってそれをやったことを心配しないでください。

フィールドが空であることを確認するには、name.isEmpty()またはname.equals("")を使用する必要があります。 Androidは.NETに似ていないJavaベースのプログラムです。してくださいname == ""

・ホープ、このことができます:)

関連する問題