if($tag == 'signin'){
// check for user
$email = mysql_real_escape_string(trim($_POST['username']));
$password = mysql_real_escape_string(trim($_POST['password']));
if(isset($email) && !empty($email) && isset($password) && !empty($password)){
$result = getUserByEmailAndPassword($email, $password);
if ($result != false) {
// user found
$response["error"] = FALSE;
$response['uid'] = $result['uid'];
$response['email'] = $result['email'];
$response['username'] = $result['username'];
$response['password'] = $result['password'];
$response['endyear'] = $result['endyear'];
$response['phone'] = $result['phone'];
$response['currentyear'] = $result['currentyear'];
$response['currentsem'] = $result['currentsem'];
echo json_encode($response);
} else {
// user not found
// echo json with error = 1
$response["error"] = TRUE;
$response["error_msg"] = "Incorrect email or password!";
header('Content-Type: application/x-www-form-urlencoded');
echo json_encode($response);
}
}else{
$response["error"] = TRUE;
$response["error_msg"] = "Required parameter 'username' or 'password' is missing!";
echo json_encode($response);
}
}
我在我的API上使用上面的PHP代码
我使用标题('Content-Type:application / x-www-form-urlencoded');在正确的地方?
此外,当我在chrome中的Advanced REST客户端上检查此请求时,请求就可以了。回复如下:
{"tag":"signin","error":false,"uid":"10","email":"example@exmaple.com","username":"jammy","password":"40be4e59b9a2a2b5dffb918c0e86b3d7","endyear":null,"phone":null,"currentyear":null,"currentsem":null}
但是,当我在任何在线响应检查器上运行相同的操作时,响应都是垃圾HTML。与我在线托管的应用程序相同
我注意到Chrome扩展默认情况下将Content-Type设置为application / x-www-form-urlencoded
当我在localhost上的xampp上运行我的应用程序时,相同的代码工作正常,但是,我在线上传后,我正面临这个问题
有人可以帮我弄清楚我做错了吗
答案 0 :(得分:1)
这不是强制性的,但如果您打算返回JSON,则右侧标题应为
header('Content-Type: application/json');
否则,响应的接收者可能会或可能不会将身体响应解释为JSON。
答案 1 :(得分:0)
我能够找到问题的根本原因。我对代码做了很多更改,后来才意识到这是由于MySQL数据库表
我在本地使用的InnoDB引擎上创建的表,而我的托管服务提供商则在MyISAM引擎上提供。
通过导入SQL文件创建的所有表都将引擎设置为MyISAM。我使用InnoDB引擎在不同的提供商上托管表格,一切似乎都运行正常。
感谢大家尝试提供帮助