2016-05-10 13 views
0

Ich versuche, eine Anmeldung und Registrierung in meiner Android App, aber das Problem, das ich gegenüberstelle, ist wie, ich bin in der Lage, meine Registrierung in der Tabelle zu tun, aber ich kann nicht mit denen einloggen registrierte Werte. Es zeigt mir die "Fehler" -Meldung meines Login-PHP-Skripts. Unten ist mein "login.php" Dateilogin in android mit php und mysql

<?php 
    if($_SERVER['REQUEST_METHOD']=='POST'){ 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    require_once('dbConnect.php'); 
    $sql = "SELECT * FROM register WHERE username = '$username' AND password='$password'"; 
    $result = mysqli_query($con,$sql); 
    $check = mysqli_fetch_array($result); 
    if(isset($check){ 
    echo'sucess' 
    }else{ 
    echo'failure' 
    } 
    } 
    ?> 

Und das ist mein Android Java File 'Login.java'

package com.example.tejask.add4u; 
import android.app.ProgressDialog; 
     import android.content.Context; 
     import android.content.Intent; 
     import android.content.SharedPreferences; 
     import android.os.AsyncTask; 
     import android.os.Bundle; 
     import android.support.annotation.Nullable; 
     import android.support.v7.app.AppCompatActivity; 
     import android.view.View; 
     import android.widget.Button; 
     import android.widget.EditText; 
     import android.widget.TextView; 
     import android.widget.Toast; 
     import com.android.volley.AuthFailureError; 
     import com.android.volley.DefaultRetryPolicy; 
     import com.android.volley.Request; 
     import com.android.volley.RequestQueue; 
     import com.android.volley.Response; 
     import com.android.volley.VolleyError; 
     import com.android.volley.toolbox.StringRequest; 
     import com.android.volley.toolbox.Volley; 
     import java.util.HashMap; 
     import java.util.Map; 

/** 
* Created by tejas k on 26-04-2016. 
*/ 


     public class Login extends AppCompatActivity implements View.OnClickListener { 
     private Button btnLogin; 
     private TextView txtRegister; 
     private EditText editUsername,editPassword; 
     public static final String USER_NAME = "username"; 
     public static final String KEY_PASSWORD="password"; 

     private static final String LOGIN_URL = "http://10.0.2.2/loginn.php"; 

     private String username; 
     private String password; 

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

     editUsername = (EditText) findViewById(R.id.editUsername); 
     editPassword = (EditText) findViewById(R.id.editPassword); 
     btnLogin= (Button) findViewById(R.id.btnLogin); 
     txtRegister=(TextView)findViewById(R.id.txtRegister); 
     txtRegister.setOnClickListener(this); 
     btnLogin.setOnClickListener(this); 
     } 
     private void userLogin() { 
     username = editUsername.getText().toString().trim(); 
     password = editPassword.getText().toString().trim(); 
     StringRequest stringRequest = new StringRequest(Request.Method.POST, LOGIN_URL,new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
     if(response.trim().equals("success")){ 
     openProfile(); 
     } 
     else{      Toast.makeText(Login.this,response,Toast.LENGTH_LONG).show(); 
     } 
     } 
     },new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
          Toast.makeText(Login.this,error.toString(),Toast.LENGTH_LONG).show(); 
     } 
     }){ 
     @Override 
     protected Map<String, String> getParams() throws AuthFailureError { 
     Map<String,String> map = new HashMap<String,String>(); 
     map.put(USER_NAME,username); 
     map.put(KEY_PASSWORD,password); 
     return map; 
     } 
     }; 
     RequestQueue requestQueue = Volley.newRequestQueue(this); 
     requestQueue.add(stringRequest); 
     } 

     private void openProfile(){ 
     Intent intent = new Intent(this,ProfileActivity.class); 
     intent.putExtra(USER_NAME, username); 
     startActivity(intent); 
     } 

     @Override 
     public void onClick(View v) { 
     switch (v.getId()){ 
     case R.id.btnLogin: 
     userLogin(); 
     break; 

     case R.id.txtRegister: 
     Intent register = new Intent(Login.this,Register.class); 
     startActivity(register); 
     break; 
     } 
     } 
     } 
+0

fehlt) auf 'if (isset ($ check) {' das ist ein Tippfehler – Matt

+0

'echo'? Zeile muss enden mit ** ';' ** Semikolon – Bharatesh

+0

** Speichern Sie niemals Nur-Text-Passwörter! ** Bitte verwenden Sie PHP [integrierte Funktionen] (http://jayblanchard.net/proper_password_hashing_with_PHP.html), um die Passwortsicherheit zu behandeln. Wenn Sie eine PHP-Version kleiner als 5.5 verwenden, können Sie das 'password_hash()' [compatibility pack] (https://github.com/ircmaxell/password_compat) verwenden. Stellen Sie sicher, dass Sie [Passwörter nicht umgehen] (http://stackoverflow.com/q/36628418/1011527) oder verwenden irgendeinen anderen Reinigungsmechanismus vor dem Hashing. Wenn Sie dies tun, * ändert * das Passwort und verursacht unnötige zusätzliche Codierung. –

Antwort

0

In Ihrem Skript Sie eine ) auf if(isset($check){ fehlen.

Aber ich denke, Sie sollten dies in MySQLi vorbereitete Erklärung für die Sicherheit ändern.

Sie könnten Ihre php in den folgenden ändern:

if($_SERVER['REQUEST_METHOD']=='POST'){ 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
    require_once('dbConnect.php'); 
    if($stmt = $con->prepare("SELECT * FROM register WHERE username = ? AND password = ? LIMIT 1")) { 
     $stmt->bind_param('ss', $username, $password); 
     if (!$stmt->execute()) { 
      die('execute() failed: ' . htmlspecialchars($stmt->error)); 
     } 
     $stmt->store_result(); 
     if ($stmt->num_rows == 1) { 
      echo 'success'; 
     } 
     else { 
      echo 'failure'; 
     } 
    } 
    else { 
     die('prepare() failed: ' . htmlspecialchars($con->error)); 
    } 
    $stmt->close(); 
} 

Hinzufügen LIMIT 1 bedeutet, dass Sie nur 1 Ergebnis erhalten wird zurück oder Null, wenn der Benutzer nicht existiert.

+0

Ich habe dieses versucht, aber es gibt eine msg wie, unerwartete ';' in Zeile 6 – Rebecca

+0

@ Rebecca jetzt versuchen. Ich vermisste a) auf der 'if ($ stmt' – Matt

+0

Wo soll ich das versuchen? Können Sie den improvisierten Code-Kumpel einfügen? Ich bin irgendwie verwirrt lil Bit. – Rebecca

0

Hallo Rebecca haben Sie falsche Zugangsdaten einmal gegeben, um diese Zeile zu sehen, ob ich nicht falsch bin

private static final String LOGIN_URL = "http://10.0.2.2/loginn.php";

hier Sie loginn.php statt login.php gab

keine Zweifel mehr unter: http://androidcoding.in/2016/05/08/android-login-and-registration-based-on-mysql-database-using-php-part-1/

+0

Eigentlich sah ich das und ich änderte es in 'loginn.php', aber immer noch wird das Problem nicht gehen – Rebecca

+0

Dies ist, was es in Logcat zeigt: Request.finish: 18630 ​​ms: [] http://10.0.2.2/login.php 0x1e7db229 NORMAL 1 – Rebecca