php - 使用 MySQL 的 Android 登录页面

标签 php android mysql

嘿,我是 android 的新手,我在登录页面上遇到了问题。我正在尝试连接到包含用户名和密码的 MySQL 数据库。我已尝试让我的代码正常工作,但它就是不允许我登录。

这是我的代码

package login.CBA; 

import android.app.Activity; 
import android.content.Intent;
import android.os.Bundle; 
import android.os.StrictMode;
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

import java.util.ArrayList;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.HttpProtocolParams;

public class login extends Activity { 

private EditText etUsername; 

private EditText etPassword; 

private Button btnLogin; 

private Button btnCancel; 

private TextView lblResult;


@Override 


public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 



    setContentView(R.layout.main); 



    etUsername = (EditText)findViewById(R.id.Username); 

    etPassword = (EditText)findViewById(R.id.password); 

    btnLogin = (Button)findViewById(R.id.login); 

    btnCancel = (Button)findViewById(R.id.Cancel); 

    lblResult = (TextView)findViewById(R.id.result); 



    btnLogin.setOnClickListener(new OnClickListener() { 

        @Override 

        public void onClick(View v) { 



            StrictMode.ThreadPolicy policy = new                                                                             
            StrictMode.ThreadPolicy.Builder().permitAll().build(); 
            StrictMode.setThreadPolicy(policy);



            ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();

            postParameters.add(new BasicNameValuePair("Username",  
            etUsername.getText().toString()));

            postParameters.add(new BasicNameValuePair("password",   
            etPassword.getText().toString()));

             /*            String valid = "1";*/      

            String response = null;


            try {

               response =  
               CustomHttpClient.executeHttpPost("localhost/check.php", 
               postParameters);

               String res = response.toString();

               //res = res.trim();

               res = res.replaceAll("\\s+","");

               // error.setText(res);

               if (res.equals("1")) {

                   Intent i = new Intent(getApplicationContext(), mainmenu.class);
               startActivity(i);

               }

               else lblResult.setText("Incorrect Username or Password Entered");

            } 

            catch (Exception e) {

               etUsername.setText(e.toString());


            }



        }


     });
   }
}

和PHP代码

 <?php

$un=$_POST['username'];
$pw=$_POST['password'];

$conn = mysql_connect('localhost', 'root', 'user');
mysql_select_db('cba');

$query = 'SELECT * FROM login WHERE username = ‘$un’ AND password = ‘$pw’';
$result = mysql_query($query) or die ('Unable to verify user because : ' .    
mysql_error());

if (mysql_num_rows($result) > 0) { 

echo 1; 
} 
else { 

// print status message 
 echo 0; 
}
?>

最佳答案

我认为这条线上可能存在问题:

$query = 'SELECT * FROM login WHERE username = ‘$un’ AND password = ‘$pw’';

看起来您正在尝试使用不同种类的单引号。试试这个:

$query = "SELECT * FROM login WHERE username = '$un' AND password = '$pw'";

此外,您应该对用户名和密码中的特殊字符进行转义,以防止 SQL 注入(inject)攻击。

$un = mysql_real_escape_string($_POST['username']);
$pw = mysql_real_escape_string($_POST['password']);

查看这个过去的 SO 问题,了解有关 “org.apache.http.NoHttpResponseException:目标服务器无法响应” 的信息 HttpClient on Android : NoHttpResponseException through UMTS/3G

关于php - 使用 MySQL 的 Android 登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9069758/

相关文章:

php - 如何在 Heroku 上部署 Laravel 4 应用程序?

php - 如何为我的网站实现泰米尔语字体?

java - 当我使用实际手机时,RecyclerView 不显示项目 View ,但在模拟器上工作正常

java - 如何解决android中的这个hashmap逻辑错误?

mysql - 如果表不存在执行长查询

php - 选择时将不存在的字段设置为值

php - php中如何通过ajax调用时加载评论

android - 使用 Ffmpeg 的多图像交叉淡入淡出动画

MySQL 未启动,InnoDB 不可用

php - '$ch' 和 '-F' 在 $ch = curl_init(); 中代表什么?