Errororg.json.JSONException:在第0个字符处的输入结束



我创建了一个需要登录系统的应用程序。我创建了注册,它有效,但当我想登录时,我收到了这个错误消息

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);
}
}
}
?>

我在谷歌上寻找解决方案,但找不到。

我的代表不允许我发表评论,所以希望我能这样分享我的想法。只有在数据库中找到给定的电子邮件地址时,代码才会输出一些JSON。

你确定你正在给它提供一个现有的电子邮件地址,没有重复的吗?另外,考虑将散列验证卸载到RDBMS。这可能会加快脚本的速度,并导致更清晰的关注点分离。您还需要转义输入到SQL中的用户输入,因为mysqli_query默认情况下不进行任何转义。更好的方法可能是使用PDO准备的语句。

最新更新