0

PHPからデータを取得するコードを作成しましたDatabase。ログイン値を取得します。(ユーザー名パスワード)。を通して接続しますmysql server/localhost。この PHP コードを実行すると、常に「0」が表示されます。これは、データベースからデータを取得しないことを意味します。何故ですか?

ここに私のPHPコード:

<?php
$hostname_localhost ="localhost";
$database_localhost ="gpsvts_geotrack";
$username_localhost ="root";
$password_localhost ="";
$localhost = mysql_connect($hostname_localhost,$username_localhost,$password_localhost)
or
trigger_error(mysql_error(),E_USER_ERROR);

mysql_select_db($database_localhost, $localhost);

$username = $_POST['uname'];
$password = $_POST['passwd'];
$query_search = "select 'uname' & 'passwd' from user_master where uname = '.$username.' AND passwd = '.$password.'";
$query_exec = mysql_query($query_search) or die(mysql_error());
$rows = mysql_num_rows($query_exec);
//echo $rows;
 if($rows == 0) {
 echo "No Such User Found";
 }
 else  {
    echo "User Found";
}
?>

これを wamp サーバーの www フォルダーに入れます。この php ファイル wamp server localhost を実行すると、常に「そのようなユーザーは見つかりませんでした」と表示されます。

このphpファイルを使用して、dbからデータを取得し、Androidログインフォームに接続しました。2 つのフィールドが含まれています。ユーザー名とパスワードです。

ここで、Android のログイン コードを入力します。

b = (Button)findViewById(R.id.Button01);  
    et = (EditText)findViewById(R.id.username);
    pass= (EditText)findViewById(R.id.password);
    tv = (TextView)findViewById(R.id.tv);

    b.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog = ProgressDialog.show(AndroidPHPConnectionDemo.this, "", 
                    "Validating user...", true);
             new Thread(new Runnable() {
                    public void run() {
                        login();                          
                    }
                  }).start();               
        }
    });
}

void login(){
    try{            

        httpclient=new DefaultHttpClient();
        httppost= new HttpPost("http://10.0.2.2//new/nuwan1.php"); // make sure the url is correct.
        //add your data
        nameValuePairs = new ArrayList<NameValuePair>(2);
        // Always use the same variable name for posting i.e the android side variable name and php side variable name should be similar, 
        nameValuePairs.add(new BasicNameValuePair("username",et.getText().toString().trim()));  // $Edittext_value = $_POST['Edittext_value'];
        nameValuePairs.add(new BasicNameValuePair("password",pass.getText().toString().trim())); 
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        //Execute HTTP Post Request
        response=httpclient.execute(httppost);
        // edited by James from coderzheaven.. from here....
        ResponseHandler<String> responseHandler = new BasicResponseHandler();
        final String response = httpclient.execute(httppost, responseHandler);
        System.out.println("Response : " + response); 
        runOnUiThread(new Runnable() {
            public void run() {
                tv.setText("Response from PHP : " + response);
                dialog.dismiss();
            }
        });

        if(response.equalsIgnoreCase("User Found")){
            runOnUiThread(new Runnable() {
                public void run() {
                    Toast.makeText(AndroidPHPConnectionDemo.this,"Login Success", Toast.LENGTH_SHORT).show();
                }
            });

            startActivity(new Intent(AndroidPHPConnectionDemo.this, UserPage.class));
        }else{
            showAlert();                
        }

    }catch(Exception e){
        dialog.dismiss();
        System.out.println("Exception : " + e.getMessage());
    }
}
public void showAlert(){
    AndroidPHPConnectionDemo.this.runOnUiThread(new Runnable() {
        public void run() {
            AlertDialog.Builder builder = new AlertDialog.Builder(AndroidPHPConnectionDemo.this);
            builder.setTitle("Login Error.");
            builder.setMessage("User not Found.")  
                   .setCancelable(false)
                   .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                       }
                   });                     
            AlertDialog alert = builder.create();
            alert.show();               
        }
    });
}

常にアラートを受け取りました no such user found & php response is No such user found

何故ですか?助けてください。

次のphpコードを使用しました

 <?php
$un=$_POST['uname'];
$pw=$_POST['passwd'];
//connect to the db

$host="localhost"; // Host name 
$user="root"; // Mysql username 
$pswd=""; // Mysql password 
$db="gpsvts_geotrack"; // Database name 
$tbl_name="user_master"; // Table name

$conn = mysql_connect($host, $user, $pswd);
mysql_select_db($db, $conn);
//run the query to search for the username and password the match
$query = "SELECT * FROM $tbl_name WHERE uname = '$un' AND passwd= '$pw'";
//$query = "SELECT uid FROM $tbl_name WHERE uname = '$un' AND passwd = '$pw'";
$result = mysql_query($query) or die("Unable to verify user because : " . mysql_error());
//this is where the actual verification happens
if(mysql_num_rows($result) > 0)
echo mysql_result($result,0);  // for correct login response
else
echo 0; // for incorrect login response
?>

次に、応答として uid を返します。ユーザーを検証していません。PHPコードが間違っているか、Androidコードが間違っていますか。ユーザーが入力した値とデータベースが取得した値を一致させたい。それはここで起こりますか。そうでない場合は、正しいものを教えてください。

4

2 に答える 2

4

あなたのプログラムでは、あなたの側から渡されます:

 nameValuePairs.add(new BasicNameValuePair("username",et.getText().toString().trim()));  // $Edittext_value = $_POST['Edittext_value'];
 nameValuePairs.add(new BasicNameValuePair("password",pass.getText().toString().trim())); 

そして、PHP 側から取得しようとしているのは次のとおりです。

$un=$_POST['uname'];
$pw=$_POST['passwd'];

したがって、nameValuePairs の名前を変更すると、次のように渡されます。

 nameValuePairs.add(new BasicNameValuePair("uname",et.getText().toString().trim()));  // $Edittext_value = $_POST['Edittext_value'];
 nameValuePairs.add(new BasicNameValuePair("passwd",pass.getText().toString().trim())); 
于 2013-07-10T04:54:46.363 に答える
1

私が間違っていなければ、投稿変数のスペルが名前と値のペアに入れているものと異なるため、このようになるはずです。

nameValuePairs.add(new BasicNameValuePair("uname",et.getText().toString().trim()));  // $Edittext_value = $_POST['Edittext_value'];
nameValuePairs.add(new BasicNameValuePair("passwd",pass.getText().toString().trim())); 
于 2013-07-10T01:33:01.080 に答える