0

AndroidからIDとパスワード情報を送信する「login.php」というWebサービスを作成しました。Web サービスは ID とパスワードを正常にキャッチします。その ID とパスワードをデータベースに既に存在するものと比較し、それらが存在するかどうかを確認する必要があります。そうであれば、新しいインテントを開始できるように、「OK メッセージ」を Android に送り返す必要があります。IDとパスワードが存在しない場合、エラーを表示したい。以下は私のコードです。

ログイン.java

HttpPost httppost = new HttpPost("http://abc.com/webservice/Login.php");
            try {
                   List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);

                   nameValuePairs.add(new BasicNameValuePair("userid", et1.getText().toString()));
                   nameValuePairs.add(new BasicNameValuePair("pass", et2.getText().toString()));                     
                   httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
                   client.execute(httppost);
                    Log.d("valueeeeeeeeeeee", et6.getText().toString());


                } catch (ClientProtocolException e) {
                         // TODO Auto-generated catch block
                    Log.d("exppppppp", "msg");
                } catch (IOException e) {
                         // TODO Auto-generated catch block
                    Log.d("exppppppp", "msg");
                }

ログイン.php:

<?php
$host = "localhost"; 
$user = "user"; 
$pass = "pass";
$connection = mysql_connect($host,$user,$pass) or die (mysql_errno().": ".mysql_error()."<BR>");

$userid = $_POST['userid'];
$pass = $_POST['pass'];

$db_select=mysql_select_db("my_db");
if(!$db_select){
    die(mysql_error());
    echo "error";
}    

受信した特定の ID とパスワードに対してデータベースをチェックし、「OK メッセージ」を Android アプリに送り返すには、ここでどのクエリを実行する必要がありますか。ありがとう

4

2 に答える 2

1

次のようなことを試すことができます:

ジャワ:

HttpPost httppost = new HttpPost("http://abc.com/webservice/Login.php");
        try {
               List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);

               nameValuePairs.add(new BasicNameValuePair("userid", et1.getText().toString()));
               nameValuePairs.add(new BasicNameValuePair("pass", et2.getText().toString()));                     
               httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
 //This piece of code should do the trick
 HttpResponse response = client.execute(httppost);
 HttpEntity respEntity = response.getEntity();

 if (respEntity != null) {
    // EntityUtils to get the reponse content
    String content =  EntityUtils.toString(respEntity);

 }
                Log.d("valueeeeeeeeeeee", et6.getText().toString());


            } catch (ClientProtocolException e) {
                     // TODO Auto-generated catch block
                Log.d("exppppppp", "msg");
            } catch (IOException e) {
                     // TODO Auto-generated catch block
                Log.d("exppppppp", "msg");
            }

PHP:

<?php
    $host = "localhost"; 
    $user = "user"; 
    $pass = "pass";
    $connection = mysql_connect($host,$user,$pass) or die (mysql_errno().": ".mysql_error()."<BR>");

    $userid = mysql_real_escape_string($_POST['userid']);
    $pass = mysql_real_escape_string($_POST['pass']);

    $db_select=mysql_select_db("my_db");
    if(!$db_select){
        die(mysql_error());
        echo "error";
    }
    $query = "select count(1) as count_users from user_table where user_field = '".$userid."' and pass_field ='".$pass."'";   

    $result = mysql_query($query);
    $row = mysql_fetch_assoc($result);

    if($row['count_users']>0)
    {
        echo "Okey";
    } 
    else
    {
        echo "Not found";
    }

    ?>

PS: mysql_extension を使用しないでください。代わりに mysqli または PDO を使用してください。

于 2013-05-13T21:18:29.437 に答える
0

私はあなたのようにすることをお勧めします。mysqli を使用して MySQL データベースに接続する PHP ページへの HTTP post/get 要求を開始します (mysql_query は非推奨です)。次に、結果を JSON 応答に形成して戻します。これを Android で簡単に解析して、必要な情報を抽出できます。これらのチュートリアルをお勧めします。

Android を PHP および MySql に接続しJSON を AndroidおよびPHP および MySQLiに接続します。

私はこれらのチュートリアルを使用して、あなたがやろうとしていることをそれほど困難なく機能させることができました.

Android から送信された渡された get 変数にアクセスするには、次を使用します。

$_GET['userid'] および $_GET['pass']

有効な SQL クエリは次のようになります。

$query = 'SELECT * FROM '%table_name%' WHERE uname ="'.$_GET['uname'].'" AND pass ="'.$_GET['pass'].'"';

ただし、チェックされていない入力を SQL ステートメントで直接使用すると、SQL インジェクション攻撃を受けやすくなるため、可能な限り避ける必要があることに注意する必要があります。ただし、プライベートサーバーで調査および実験する目的では問題ありません。サーバー接続を使用してソフトウェアを配布する前に、考慮すべき多くのセキュリティ問題があることに注意してください。

于 2013-05-13T22:02:16.777 に答える