Errororg.json.JSONException: конец ввода в символе 0 из - PullRequest
0 голосов
/ 19 ноября 2018

Я создал приложение, которое требует входа в систему.Я создал регистрацию, она работает, но когда я хочу войти в систему, я получил это сообщение об ошибке

Errororg.json.JSONException: Конец ввода в символе 0 из

Я дал Интернет-разрешение!

Мой логин Класс

package com.quizonwheels.quizfinal;

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
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 org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;

public class Login extends AppCompatActivity {
 private Button openMore;
 private TextView openRegister;
 private Button btn_login;
    private EditText email,password;
    private static String URL_LOGIN = "https://test-onaca.lapausenii.ro/login.php";
    private ProgressBar loading;


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

        openMore = findViewById(R.id.learnmore);
        openRegister = findViewById(R.id.openRegister);
        btn_login = findViewById(R.id.login);
        loading = findViewById(R.id.loading1);
        email = findViewById(R.id.login_email);
        password = findViewById(R.id.login_password);

        openRegister.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(Login.this,Register.class));
            }
        });

        openMore.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(Intent.ACTION_VIEW,Uri.parse("https://quizonwheels.com")));
            }
        });

        btn_login.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String mEmail = email.getText().toString().trim();
                String mPass = password.getText().toString().trim();

                if(!mEmail.isEmpty() || !mPass.isEmpty())
                {
                    login(mEmail,mPass);

                }
                else {
                    email.setError("Please insert E-mail");
                    password.setError("Please insert Password");
                }
            }
        });
    }

    private void login( final String email, final String password) {
        loading.setVisibility(View.VISIBLE);
        btn_login.setVisibility(View.GONE);

        StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_LOGIN, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                try {
                    JSONObject jsonObject = new JSONObject(response);
                    String succes = jsonObject.getString("succes");
                    JSONArray jsonArray = jsonObject.getJSONArray("login");
                    if(succes.equals("1"))
                    {
                        for(int i = 0; i < jsonArray.length();i++)
                        {
                            JSONObject object = jsonArray.getJSONObject(i);
                            String name = object.getString("name").trim();
                            String email = object.getString("email").trim();
                            Toast.makeText(Login.this, "Succes \nYour name:" +name+"\n Your Email:" +email, Toast.LENGTH_SHORT).show();
                            loading.setVisibility(View.GONE);
                        }
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                    loading.setVisibility(View.GONE);
                    btn_login.setVisibility(View.VISIBLE);
                    Toast.makeText(Login.this, "Error" +e.toString(), Toast.LENGTH_SHORT).show();
                }
            }
        },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        loading.setVisibility(View.GONE);
                        btn_login.setVisibility(View.VISIBLE);
                        Toast.makeText(Login.this, "Error!" +error.toString(), Toast.LENGTH_SHORT).show();

                    }
                }
        ) {
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("email", email);
                params.put("password", password);
                return params;
            }
        };
        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);
    }
}

И мой php-код:

<?php
  if($_SERVER['REQUEST_METHOD']== 'POST')
  {
      $email = $_POST['email'];
      $password = $_POST['password'];

      require_once 'connect.php';

      $sql = " SELECT * FROM users WHERE email = '$email'";
      $response = mysqli_query($conn,$sql);
      $result = array();
      $result['login']= array();
      if(mysqli_num_rows($respone)===1) {
          $row = mysqli_fetch_assoc($response);
          if(password_verify($password, $row['password']))
          {
              $index['name']=$row['name'];
              $index['email']= $row['email'];

              array_push($result['login'],$index);
              $result['succes'] = "1";
              $result['message']="succes";
              echo json_encode($result);

              mysqli_close($conn);

          }
          else {
              $result['succes']="0";
              $result['message']="error";
              echo json_encode($result);

              mysqli_close($conn);

          }
      }
  }
?>

Я искал в Google, чтобы найти решение, но я не смог его найти.

1 Ответ

0 голосов
/ 19 ноября 2018

Мой представитель не позволяет мне комментировать, так что, надеюсь, мне позволено делиться своими мыслями, как это.Ваш код выводит только некоторый JSON, если в базе данных был найден указанный адрес электронной почты.

Вы уверены, что вводите ему существующий адрес электронной почты, без дубликатов?Кроме того, рассмотрите возможность выгрузки проверки хэша в RDBMS.Это может ускорить выполнение сценария и привести к более четкому разделению проблем.Вы также захотите избежать пользовательского ввода, который вы вводите в SQL, поскольку mysqli_query по умолчанию не экранирует.Лучшим подходом может быть использование подготовленных заявлений PDO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...