2015-04-09 11 views
0

Я пытаюсь создать страницу входа с использованием номера социального страхования и пароля в качестве параметров для входа в систему. Я использую внешнюю базу данных (MySQL). Я получаю ответ от файла PHP, но у меня возникают проблемы с проверкой ответа, чтобы перейти к активности.Ошибка входа в систему

Это мой Войти класс:

package com.ajibola.demola; 

import java.util.ArrayList; 
import java.util.List; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.ResponseHandler; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.BasicResponseHandler; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 
import android.os.Bundle; 
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class Login extends Activity { 

private EditText ninum , pass; 
private String strniNum,strPass; 
private Button login; 
HttpPost httppost; 
StringBuffer buffer; 
HttpResponse response; 
HttpClient httpclient; 
List<NameValuePair> nameValuePairs; 
ProgressDialog dialog = null; 


GetIPAddress getIPaddress = new GetIPAddress(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setTitle("Login"); 
    setContentView(R.layout.activity_login); 




    ninum = (EditText)findViewById(R.id.edtninum); 

    pass = (EditText)findViewById(R.id.edtpass); 

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

    login.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      strniNum = ninum.getText().toString(); 
      strPass = pass.getText().toString(); 
      if(strniNum.length() == 0 || strPass.length() == 0){ 
       showToast("Please fill in a National Id and a password"); 
      }else{ 
       dialog = ProgressDialog.show(Login.this, "", "Validating user...", true); 
       new Thread(new Runnable() { 
        public void run() { 
         login();       
        } 
       }).start(); 
      } 
     } 


    }); 


} 


private void login() { 
    // TODO Auto-generated method stub 
    try{    

     httpclient=new DefaultHttpClient(); 
     httppost= new HttpPost(getIPaddress.getIP()+"check.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("social_security", ninum.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 responsee = httpclient.execute(httppost, responseHandler); 
     System.out.println("Response : " + response); 

     runOnUiThread(new Runnable() { 
      public void run() { 
       Toast.makeText(Login.this, "Response from PHP : " + responsee, Toast.LENGTH_SHORT).show(); 

       if(responsee.trim().equalsIgnoreCase("lecturer")){ 
        runOnUiThread(new Runnable() { 
         public void run() { 
          Toast.makeText(Login.this, "success", Toast.LENGTH_SHORT).show(); 


         } 
        }); 
        Intent in=new Intent(Login.this, MainActivity.class); 
        startActivity(in); 
        //startActivity(new Intent(Login.this, MainActivity.class)); 

     //tv.setText();hjg,jhg 
       //Intent in=new Intent(Login.this, MainActivity.class); 
       //startActivity(in); 
       dialog.dismiss(); } 

        else{ 
         Toast.makeText(Login.this, "failed", Toast.LENGTH_SHORT).show(); 
        } 
      } 
     }); 




    }catch(Exception e){ 
     dialog.dismiss(); 
     System.out.println("Exception : " + e.getMessage()); 
    } 

    /*if(responsee.equals("lecturer")){ 

      Toast.makeText(Login.this,"Login Success", Toast.LENGTH_SHORT).show(); 

     Intent in = new Intent(Login.this, Register.class); 
     startActivity(in); 
    }*/ 

    } 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.login, menu); 
    return true; 
} 

public void signUp(View v){ 
    Intent in = new Intent(Login.this,Register.class); 
    startActivity(in); 

} 

public void showToast(String msg){ 
    Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); 
} 

} 

Это файл PHP Войти

<?php 

$con = mysql_connect("localhost", "root", ""); 
if(!$con) 
    { 
    die('Could not connect: ' .mysql_error()); 
    } 
mysql_select_db("demola", $con); 

$social_security = $_POST['social_security']; 
$password = $_POST['password']; 

$query = "select * from users where social_security ='" .$social_security. "'  AND password ='".$password."'"; 
$query_exec = mysql_query($query) or die(mysql_error()); 

// if and else 
$rows = mysql_num_rows($query_exec); 

if ($rows == 1) { 
echo "lecturer"; 
} 
else{ 
echo "No user was found"; 

} 

mysql_close($con); 

?> 
+0

Каков ответ, который вы получаете от PHP? –

ответ

1

Вы должны сделать этот код в фоновом режиме через асинхронный, то onPostexecute вы можете создать новую активность : Это грубый пример

public class AsyncTaskTestActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // This starts the AsyncTask 
    new MyTask().execute("my string paramater passed in this can be your login credentials"); 
} 

Класс:

private class MyTask extends AsyncTask < String, 
Integer, 
String > { 

    // This is run in a background thread 
    @Override 
    protected String doInBackground(String...passed_in_string) { 
     // get the string from params, which is an array (your login stuff) 
     //replace your nameValuePairs with this array instead 
     String myString = passed_in_string[0]; 


     httpclient = new DefaultHttpClient(); 
     httppost = new HttpPost(getIPaddress.getIP() + "check.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("social_security", ninum.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 responsee = httpclient.execute(httppost, responseHandler); 
     System.out.println("Response : " + response); 

     //then this string is passed to onPostExecute; 
     return passed_in_string; 

    } 


    // This runs in UI when background thread finishes 
    @Override 
    protected void onPostExecute(String responsee) { 
     super.onPostExecute(responsee); 
     //login 
     if (responsee.trim().equalsIgnoreCase("lecturer")) { 
      runOnUiThread(new Runnable() { 
       public void run() { 
        Toast.makeText(Login.this, "success", Toast.LENGTH_SHORT).show(); 


       } 
      }); 
      Intent in = new Intent(Login.this, MainActivity.class); 
      startActivity(in); 
     } 
    } 
} 
Смежные вопросы