Java android登录注册使用php、mysql
嘿,朋友们,我正在本地主机上使用php和mysql开发android登录注册系统。。我完成了编码部分,但我的代码内容在运行我的应用程序时出现了一些运行时错误,然后在注册屏幕上显示“无效用户名或密码或电子邮件”,这意味着我正在从php获取jsonresult 0,这意味着我的数据(名称、电子邮件、密码)没有传递到php…下面是我的代码 对于Register.javaJava android登录注册使用php、mysql,java,php,android,mysql,android-studio,Java,Php,Android,Mysql,Android Studio,嘿,朋友们,我正在本地主机上使用php和mysql开发android登录注册系统。。我完成了编码部分,但我的代码内容在运行我的应用程序时出现了一些运行时错误,然后在注册屏幕上显示“无效用户名或密码或电子邮件”,这意味着我正在从php获取jsonresult 0,这意味着我的数据(名称、电子邮件、密码)没有传递到php…下面是我的代码 对于Register.java public class Register extends Activity { TextView tvlogin; EditTex
public class Register extends Activity {
TextView tvlogin;
EditText etuname,etemail,etpass,etmobno;
Button userreg;
String name,email,pass;
// private ProgressDialog pDialog;
int flag=0;
private static String url = "http://10.0.2.2/examtime/register.php";
// private static final String TAG_SUCCESS = "success";
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
//StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
//.detectDiskReads().detectDiskWrites().detectNetwork()
//.penaltyLog().build());
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
etuname=(EditText)findViewById(R.id.et_name);
etemail=(EditText)findViewById(R.id.et_email);
etpass=(EditText)findViewById(R.id.et_password);
userreg=(Button)findViewById(R.id.button1);
// etmobno=(EditText)findViewById(R.id.editText1);
tvlogin=(TextView)findViewById(R.id.tv_login);
userreg.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
userReg(v);
}
});
}
public void userReg(View v)
{
name=etuname.getText().toString();
email=etemail.getText().toString();
// mobno=etmobno.getText().toString();
pass=etpass.getText().toString();
if(name.equals("") || pass.equals("") || email.equals("")){
Toast.makeText(Register.this, "Username or password or email must be filled", Toast.LENGTH_LONG).show();
return;
}
if(name.length() <= 1 || pass.length() <= 1){
Toast.makeText(Register.this, "Username or password length must be greater than one", Toast.LENGTH_LONG).show();
return;
}
// request authentication with remote server4
AsyncDataClass asyncRequestObject = new AsyncDataClass();
asyncRequestObject.execute(url, name, pass, email);
}
private class AsyncDataClass extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 5000);
HttpConnectionParams.setSoTimeout(httpParameters, 5000);
HttpClient httpClient = new DefaultHttpClient(httpParameters);
HttpPost httpPost = new HttpPost(params[0]);
String jsonResult = "";
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("name", params[1]));
nameValuePairs.add(new BasicNameValuePair("pass", params[2]));
nameValuePairs.add(new BasicNameValuePair("email", params[3]));
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpClient.execute(httpPost);
jsonResult = inputStreamToString(response.getEntity().getContent()).toString();
System.out.println("Returned Json object " + jsonResult.toString());
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return jsonResult;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
System.out.println("Resulted Value: " + result);
if(result.equals("") || result == null){
Toast.makeText(Register.this, "Server connection failed", Toast.LENGTH_LONG).show();
return;
}
int jsonResult = returnParsedJsonObject(result);
if(jsonResult == 0){
Toast.makeText(Register.this, "Invalid username or password or email", Toast.LENGTH_LONG).show();
return;
}
if(jsonResult == 1){
Intent intent = new Intent(Register.this, Profile.class);
intent.putExtra("USERNAME", name);
intent.putExtra("MESSAGE", "You have been successfully Registered");
startActivity(intent);
}
}
private StringBuilder inputStreamToString(InputStream is) {
String rLine = "";
StringBuilder answer = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
try {
while ((rLine = br.readLine()) != null) {
answer.append(rLine);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return answer;
}
}
private int returnParsedJsonObject(String result){
JSONObject resultObject = null;
int returnedResult = 0;
try {
resultObject = new JSONObject(result);
returnedResult = resultObject.getInt("success");
} catch (JSONException e) {
e.printStackTrace();
}
return returnedResult;
}
公共类寄存器扩展活动{
文本视图登录;
EditText-etuname、etemail、etpass、etmobno;
按钮用户注册;
字符串名称、电子邮件、密码;
//私人对话;
int标志=0;
专用静态字符串url=”http://10.0.2.2/examtime/register.php";
//私有静态最终字符串标记_SUCCESS=“SUCCESS”;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
//StrictMode.setThreadPolicy(新的StrictMode.ThreadPolicy.Builder()
//.detectDiskReads().detectDiskWrites().detectNetwork()
//.penaltyLog().build());
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
etuname=(EditText)findViewById(R.id.et_name);
etemail=(EditText)findViewById(R.id.et_电子邮件);
etpass=(EditText)findViewById(R.id.et_密码);
userreg=(按钮)findViewById(R.id.button1);
//etmobno=(EditText)findViewById(R.id.editText1);
tvlogin=(TextView)findViewById(R.id.tv\u登录);
userreg.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
userReg(v);
}
});
}
公共void userReg(视图五)
{
name=etuname.getText().toString();
email=etemail.getText().toString();
//mobno=etmobno.getText().toString();
pass=etpass.getText().toString();
if(name.equals(“”)pass.equals(“”)email.equals(“”){
Toast.makeText(Register.this,“必须填写用户名、密码或电子邮件”,Toast.LENGTH_LONG.show();
返回;
}
if(name.length()
还有我的User.php
<?php
include_once 'db.php';
class User{
private $db;
private $db_table = "stud";
public function __construct(){
$this->db = new DbConnect();
}
public function isLoginExist($username, $password){
$query = "select * from " . $this->db_table . " where name = '$username' AND pass = '$password' Limit 1";
$result = mysqli_query($this->db->getDb(), $query);
if(mysqli_num_rows($result) > 0){
mysqli_close($this->db->getDb());
return true;
}
mysqli_close($this->db->getDb());
return false;
}
public function createNewRegisterUser($username, $password, $email){
$query = "insert into stud (name, pass, email) values ('$username', '$password', '$email')";
$inserted = mysqli_query($this->db->getDb(), $query);
if($inserted == 1){
$json['success'] = 1;
}else{
$json['success'] = 0;
}
mysqli_close($this->db->getDb());
return $json;
}
public function loginUsers($username, $password){
$json = array();
$canUserLogin = $this->isLoginExist($username, $password);
if($canUserLogin){
$json['success'] = 1;
}else{
$json['success'] = 0;
}
return $json;
}
我知道我遗漏了一些东西,我试着解释一下,抱歉英语不好,我也是android新手,也是堆栈溢出新手,这对我来说太多了,我无法通读所有这些,但我想我知道你想要什么。
首先检查名称是否已存在:
<?php>
$text = $_POST["text1"];
$db = @new mysqli("mysql.hostinger.de", "...", "...", "...");
if($db->connect_error){
die("<pre>".$db->connect_error."</pre>");
}
$num = $sql->num_rows;
$sql = $db->query("SELECT name FROM Rangliste");
$num = $sql->num_rows;
if($num > 0){
while($row = $sql->fetch_object()){
if($row->name == $text){
echo("Name already exists!");
}else{
echo("Name accepted!");
}
}
}
我假设这是在模拟器上运行的,因为有IP地址,所以您是否尝试过检查模拟器是否可以访问服务器?或者直接在模拟器的浏览器中运行URL来访问URL?您的登录/注册php代码位于index.php
中。但是在java代码中,它指向login.phpe> 和register.php
yes当我将()放入模拟器浏览器时,我正在访问目录。请稍候,我尝试将登录/注册代码指向index.php。谢谢
<?php
include_once 'db.php';
class User{
private $db;
private $db_table = "stud";
public function __construct(){
$this->db = new DbConnect();
}
public function isLoginExist($username, $password){
$query = "select * from " . $this->db_table . " where name = '$username' AND pass = '$password' Limit 1";
$result = mysqli_query($this->db->getDb(), $query);
if(mysqli_num_rows($result) > 0){
mysqli_close($this->db->getDb());
return true;
}
mysqli_close($this->db->getDb());
return false;
}
public function createNewRegisterUser($username, $password, $email){
$query = "insert into stud (name, pass, email) values ('$username', '$password', '$email')";
$inserted = mysqli_query($this->db->getDb(), $query);
if($inserted == 1){
$json['success'] = 1;
}else{
$json['success'] = 0;
}
mysqli_close($this->db->getDb());
return $json;
}
public function loginUsers($username, $password){
$json = array();
$canUserLogin = $this->isLoginExist($username, $password);
if($canUserLogin){
$json['success'] = 1;
}else{
$json['success'] = 0;
}
return $json;
}
<?php>
$text = $_POST["text1"];
$db = @new mysqli("mysql.hostinger.de", "...", "...", "...");
if($db->connect_error){
die("<pre>".$db->connect_error."</pre>");
}
$num = $sql->num_rows;
$sql = $db->query("SELECT name FROM Rangliste");
$num = $sql->num_rows;
if($num > 0){
while($row = $sql->fetch_object()){
if($row->name == $text){
echo("Name already exists!");
}else{
echo("Name accepted!");
}
}
}