理解为什么在alamofire中使用respondJSON时无法从php脚本返回json
为了在MySQL表中注册用户,我用PHP编写了以下脚本理解为什么在alamofire中使用respondJSON时无法从php脚本返回json,php,xcode,server,alamofire,swifty-json,Php,Xcode,Server,Alamofire,Swifty Json,为了在MySQL表中注册用户,我用PHP编写了以下脚本 <?php $host = "127.0.0.1"; $user = "root"; $password = ""; $database = "login_db"; $connessione = new mysqli($host,$user,$password,$database); if ($connessione === false) {
<?php
$host = "127.0.0.1";
$user = "root";
$password = "";
$database = "login_db";
$connessione = new mysqli($host,$user,$password,$database);
if ($connessione === false) {
die("errore connessione db " .$connessione->connection_error);
}
@$staff = $_POST['staff_ID'];
@$password = $_POST['password'];
@$email = $_POST['email'];
@$cpt = $_POST['isCPT'];
@$name = $_POST['Name'];
echo $staff;
$sql = "INSERT INTO users(staff_ID, password , email, isCPT, Name) VALUES (?,?,?,?,?)";
if ($statment = $connessione->prepare($sql)){
$statment -> bind_param("sssss",$staff,$password,$email,$cpt,$name);
$statment -> execute();
$json_array = [
"successSignUp"=>true
];
header('Content-type:application/json;charset=utf-8');
$json = json_encode($json_array);
if ($json === false) {
$json = json_encode(["jsonError" => json_last_error_msg()]);
if ($json === false) {
// This should not happen, but we go all the way now:
$json = '{"jsonError":"unknown"}';
}
http_response_code(500);
} else {
echo $json;
}
} else {
echo "errore connessione";
}
$statment -> close();
$connessione -> close();
?>
删除变量赋值前面的所有
@
,改为添加正确的验证。这些会抑制错误,使调试问题变得更加困难,比如您正在询问的问题。特别是因为您完全忽略了这个问题,并以任何方式继续您的脚本,只需假设所有值都存在且有效。顺便说一句,您不应该以纯文本形式存储密码。始终使用创建密码的安全散列,并仅保存该散列。然后,在对用户进行身份验证时,您使用将密码与哈希值进行比较。您的输出也不一致。有时输出json,有时直接输出文本。你总是echo$staff任何其他输出(包括头,必须在任何输出之前设置,否则您将遇到问题)之前的代码>,这将始终导致任何json输出无效。你需要检查你的逻辑。这里有很多问题。
let parm : [String: Any] = ["staff_ID": staffID,"password":password, "email":email, "isCPT":isCpt, "Name": nameUser]
AF.request(self.linkServerDB, method: .post, parameters: parm).validate()
.responseJSON{ response in
print(response)
let json = JSON(response.result)
print(json)
}
.responseData { dt in
do {
let json = try JSON(data: dt.data!)
print(json)
}catch {
print("error")
}
}