Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JSON/PHP从android接收错误响应_Php_Android_Json_Phpmyadmin_Jsonresult - Fatal编程技术网

使用JSON/PHP从android接收错误响应

使用JSON/PHP从android接收错误响应,php,android,json,phpmyadmin,jsonresult,Php,Android,Json,Phpmyadmin,Jsonresult,我正在编写我的android应用程序,它在本地服务器上与PHP论坛共享DB表。我的应用程序用户需要注册才能开始使用该应用程序,我的应用程序中的一个功能是允许注册用户向论坛发送/查看帖子和评论。所有这些都是通过Android应用程序界面完成的,不是通过将整个论坛呼叫到我的手机中,而是我在此任务中使用了JSON,并给出了不同的响应。不幸的是,每次我注册时都会收到一个错误响应,但我不知道为什么 这是我得到的错误响应 03-14 16:14:52.361: E/JSON(400): {"tag":"re

我正在编写我的android应用程序,它在本地服务器上与PHP论坛共享DB表。我的应用程序用户需要注册才能开始使用该应用程序,我的应用程序中的一个功能是允许注册用户向论坛发送/查看帖子和评论。所有这些都是通过Android应用程序界面完成的,不是通过将整个论坛呼叫到我的手机中,而是我在此任务中使用了JSON,并给出了不同的响应。不幸的是,每次我注册时都会收到一个错误响应,但我不知道为什么

这是我得到的错误响应

03-14 16:14:52.361: E/JSON(400): {"tag":"register","success":0,"error":1,"error_msg":"Error occured in Registartion"}
这是我的index.php

<?php

   /**
 * File to handle all API requests
 * Accepts GET and POST
*
* Each request will be identified by TAG
 * Response will be JSON data

/**
* check for POST request
 */
if (isset($_POST['tag']) && $_POST['tag'] != '') {
// get tag
$tag = $_POST['tag'];

// include db handler
require_once 'include/DB_Functions.php';
$db = new DB_Functions();

// response Array
$response = array("tag" => $tag, "success" => 0, "error" => 0);

// check for tag type
if ($tag == 'login') {
    // Request type is check Login
    $email = $_POST['email'];
    $password = $_POST['password'];

    // check for user
    $user = $db->getUserByEmailAndPassword($email, $password);
    if ($user != false) {
        // user found
        // echo json with success = 1
        $response["success"] = 1;
        $response["id"] = $user["unique_id"];
        $response["user"]["name"] = $user["username"];
        $response["user"]["email"] = $user["email"];
        $response["user"]["created_at"] = $user["created_at"];
        $response["user"]["updated_at"] = $user["updated_at"];
        echo json_encode($response);
    } else {
        // user not found
        // echo json with error = 1
        $response["error"] = 1;
        $response["error_msg"] = "Incorrect email or password!";
        echo json_encode($response);
    }
} else if ($tag == 'register') {
    // Request type is Register new user
    $name = $_POST['username'];
    $email = $_POST['email'];
    $password = $_POST['password'];

    // check if user is already existed
    if ($db->isUserExisted($email)) {
        // user is already existed - error response
        $response["error"] = 2;
        $response["error_msg"] = "User already existed";
        echo json_encode($response);
    } else {
        // store user
        $user = $db->storeUser($name,  $password, $email);
        if ($user) {
            // user stored successfully
            $response["success"] = 1;
            $response["id"] = $user["unique_id"];
            $response["user"]["name"] = $user["username"];
            $response["user"]["email"] = $user["email"];
            $response["user"]["created_at"] = $user["created_at"];
            $response["user"]["updated_at"] = $user["updated_at"];
            echo json_encode($response);
        } else {
            // user failed to store
            $response["error"] = 1;
            $response["error_msg"] = "Error occured in Registartion";
            echo json_encode($response);
        }
    }
} else {
    echo "Invalid Request";
}
  } else {
echo "Access Denied";
  }
  ?>
我真的不知道这里出了什么问题,因为之前我可以很好地运行它,但现在我修改了这个代码,将详细信息存储在论坛的用户表中,这样我就可以处理一个用户数据表
我对这里的新代码感到非常满意——我的意思是,我想这不是错误响应的原因——但我怀疑表中的错误,但无论如何,我不确定触发错误响应的错误在哪里

好了,伙计们,我现在修复了它,没问题 是android端的函数发出了登录请求,其参数的设置顺序与php文件中函数的顺序不匹配。 谢谢你,伙计 特别感谢卡玛芬克,你帮了我很多,而且你做得最好


希望我的问题能帮助其他人解决同样的问题。

与其将
错误消息设置为一般消息,不如返回数据库客户端的错误消息(类似
$db->mysql\u error()
你能确认用户没有保存到数据库吗?我想这可能是你的问题。$user=$db->storeUser($name,$password,$email);检查您发送的值。@323go,但我在说call to undefined时出错method@karmafunk是的,我的用户表是空的,它没有得到我的值…你说我发送的检查值是什么意思?你是指它们的数据类型还是什么…请告诉我,我还在开始做@323go建议的事情,看看mysql错误是什么。这将l给出问题的指示。$response[“error\u msg”]=$db->mysql\u error();而不是$response[“error\u msg”]=“error occurrent in registration”;如果不明显,请检查您发送的值。
 public function storeUser($name, $password, $email) {
    $uuid = uniqid('', true);
    $hash = $this->hashSSHA($password);
    $encrypted_password = $hash["encrypted"]; // encrypted password
    $salt = $hash["salt"]; // salt
    $result = mysql_query("INSERT INTO user(unique_id, username, password, salt, email,  created_at) VALUES('$uuid', '$name',  '$encrypted_password', '$salt', '$email',  NOW())");
    // check for successful store
    if ($result) {
        // get user details
        $id = mysql_insert_id(); // last inserted id
        $result = mysql_query("SELECT * FROM user WHERE id = $id");
        // return user details
        return mysql_fetch_array($result);
    } else {
        return false;
    }
}