2016-08-25 2 views
0

Я новичок в Android-приложении для использования php, json, mysql и httpclient. Я пытаюсь сделать заявку на регистрацию и вход в систему. в Реестре, успешно. но при входе у меня проблема. каждый входной адрес электронной почты и пароль всегда выдают сообщение об ошибке «Недействительный адрес электронной почты или пароль». Даже я был введен правильный адрес электронной почты и пароль. код ниже.Android Войти с использованием Httpclient

login1.php

<?php 
define('HOST','mxxxx.xxxxx.com'); 
define('USER','xxxxxx'); 
define('PASS','xxxxx'); 
define('DB','xxxxxx'); 

$con = mysqli_connect(HOST,USER,PASS,DB); 

$emailAddress = $_POST['email']; 
$passWord = $_POST['password']; 

$sql = "select * from user where email='$emailAddress' and password='$passWord'"; 

$res = mysqli_query($con,$sql); 

$check = mysqli_fetch_array($res); 

if(isset($check)){ 
echo 'success'; 
}else{ 
echo 'failure'; 
} 

mysqli_close($con); 
?> 

то LoginActivity.class (в затмения)

public class LoginActivity extends Activity{ 

    public static final String KEY_EMAIL="emailAddress"; 
    public static final String KEY_PASSWORD="passWord"; 

    private EditText etPassword, etEmail; 
    String passWord,emailAddress,email; 
    Button login; 

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

     TextView registerScreen = (TextView) findViewById(R.id.link_to_register); 
     etEmail=(EditText)findViewById(R.id.ET_email); 
     etPassword=(EditText)findViewById(R.id.ET_password); 
     login=(Button)findViewById(R.id.btnLogin); 

     login.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View arg0) { 
       //fullName= etFullName.getText().toString(); 
       passWord=etPassword.getText().toString(); 
       emailAddress=etEmail.getText().toString(); 

       if (!isValidEmail(emailAddress)) { 
        etEmail.setError("Please Enter Valid Email"); 
        etEmail.requestFocus(); 
       } 
       else if (!isValidPassword(passWord)){ 
        etPassword.setError("Password min. 6 characters"); 
        etPassword.requestFocus(); 
       }else{ 

        //new LoginAsync().execute(emailAddress,passWord); 

        login(emailAddress,passWord); 
        // new BackgroundTaskLogin(LoginActivity.this).execute(emailAddress,passWord); 
         etEmail.setText(""); 
         etPassword.setText(""); 
       } 

      } 
    }); 
     // Listening to register new account link 
     registerScreen.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       // Switching to Register screen 
       Intent i = new Intent(getApplicationContext(), RegisterActivity.class); 
       startActivity(i); 
      } 
     }); 
    } 

    private void login(final String emailAddress, final String passWord) { 
    class LoginAsync extends AsyncTask<String, Void, String>{ 
     //private Context context; 
      public static final String KEY_EMAIL = "email"; 
      private Dialog loadingDialog; 

      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       loadingDialog = ProgressDialog.show(LoginActivity.this, "Please wait", "Loading..."); 
      } 

      @Override 
      protected String doInBackground(String... params) { 
       String emailAddress = params[0]; 
       String passWord = params[1]; 

       InputStream is = null; 
       List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
       nameValuePairs.add(new BasicNameValuePair("email", emailAddress)); 
       nameValuePairs.add(new BasicNameValuePair("password", passWord)); 
       //return nameValuePairs; 

       String result = null; 

       try{ 
        HttpClient httpClient = new DefaultHttpClient(); 
        HttpPost httpPost = new HttpPost("http://xxxx.com/login1.php"); 
        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
        HttpResponse response = httpClient.execute(httpPost); 
        HttpEntity entity = response.getEntity(); 

        is = entity.getContent(); 

        BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8); 
        StringBuilder sb = new StringBuilder(); 
        String line = null; 
        while ((line = reader.readLine()) != null) 
        { 
         sb.append(line + "\n"); 
        } 
        result = sb.toString(); 
       } catch (ClientProtocolException e) { 
        e.printStackTrace(); 
       } catch (UnsupportedEncodingException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
       return result; 
      } 

      @Override 
      protected void onPostExecute(String result){ 
       String s = result.trim(); 
       loadingDialog.dismiss(); 
       if(s.equalsIgnoreCase("success")){ 
        Intent intent = new Intent(LoginActivity.this, ActivityUserProfile.class); 
        intent.putExtra(KEY_EMAIL, emailAddress); 
        startActivity(intent); 
        finish(); 

       }else { 
        Toast.makeText(getApplicationContext(), "Invalid Email or Password", Toast.LENGTH_LONG).show(); 
       }} 
     } 

    new LoginAsync().execute(emailAddress, passWord); 

    } 


    private boolean isValidEmail(String email) { 
     String EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@" 
       + "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; 

     Pattern pattern = Pattern.compile(EMAIL_PATTERN); 
     Matcher matcher = pattern.matcher(email); 
     return matcher.matches(); 
    } 

    // validating password with retype password 
    private boolean isValidPassword(String pass) { 
     if (pass != null && pass.length() >= 6) { 
      return true; 
     } 
     return false; 
    } 

     } 
+0

** ПРЕДУПРЕЖДЕНИЕ ** При использовании 'mysqli' вы должны использовать [параметризованные запросы] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) и [ 'bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php), чтобы добавить данные пользователя в ваш запрос. ** НЕ используйте ** интерполирование строк или конкатенацию для выполнения этого, потому что вы создали серьезную [SQL-инъекцию] (http://bobby-tables.com/). ** НИКОГДА не ставьте данные '$ _POST' или' $ _GET' непосредственно в запрос, это может быть очень вредно, если кто-то пытается использовать вашу ошибку. – tadman

+0

Пробовал ли вы регистрировать значения, которые вы передаете в качестве параметров, во время вызова службы входа в систему? если нет, то проверьте, передают ли они правильные значения? – Mahamadali

+0

не могли бы вы помочь мне, как это сделать? – Sasya

ответ

0
httpPost.setEntity(new StringEntity(body, HTTP.UTF_8)); 

или

HttpPost httpPost = new HttpPost("http://someurl.com"); 
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePair, HTTP.UTF_8)); 

Refer 1

Refer 2

+0

все тот же выход @ Karthik – Sasya

Смежные вопросы