Alamofire POST请求PHP脚本未获取任何值

Alamofire POST请求PHP脚本未获取任何值,php,mysql,swift,alamofire,Php,Mysql,Swift,Alamofire,我对Alamofire中的POST请求有问题。如果我尝试发出POST请求,那么PHP脚本似乎没有得到这些值。这是我的发帖请求: func userRegistration(){ let url = "http://offlineshopper.sunpowr.de/register.php" let parameters: [String:String] = ["nickname":RegisterTexts.nickname, "password":RegisterTexts.

我对Alamofire中的POST请求有问题。如果我尝试发出POST请求,那么PHP脚本似乎没有得到这些值。这是我的发帖请求:

func userRegistration(){
    let url = "http://offlineshopper.sunpowr.de/register.php"
    let parameters: [String:String] = ["nickname":RegisterTexts.nickname, "password":RegisterTexts.password, "email":RegisterTexts.email]
    print(parameters)
    Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseJSON{ response in
        if((response.result.value) != nil){
            let swiftyJsonVar = JSON(response.result.value!)
            print("Das kommt dabei raus: \(swiftyJsonVar)")
        }
    }
}
参数字典打印以下内容:[“昵称”:“测试”,“密码”:“测试”,“电子邮件”:“测试”]

所以我认为这是正确的

这是我的PHP脚本:

<?php
include("mysql_connect.php");

if(isset($_POST['nickname'])){
    $nickname = $_POST['nickname'];
}

if(isset($_POST['password'])){
    $password = $_POST['password'];
}

if(isset($_POST['email'])){
    $email = $_POST['email'];
}

//Check if nickname is already used
$select = "SELECT `nickname` FROM `User` WHERE nickname = '$nickname'";
$result = mysqli_query($link, $select);
if (!$result){
    $returnArray["message"] = "Fehler in der Datenbank!";
    json_encode($returnArray);
}
if (mysqli_num_rows($result) != 0){
    $returnArray["message"] = "Nickname bereits vorhanden!";
    json_encode($returnArray);
}

//Add new User to the database
$sql = "INSERT INTO User (nickname, password, email) VALUES ('$nickname', '$password', '$email')";
if(mysqli_query($link, $sql)){
    $returnArray["message"] = "Erfolgreich registriert!";
    echo json_encode($returnArray);
}
else{
    mysqli_error($link);
    $returnArray["message"] = "Fehler!";
    echo json_encode($returnArray);
}

mysqli_close($link)
?>


警告:使用
mysqli
时,您应该使用和将用户数据添加到查询中。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将
$\u POST
$\u GET
或任何用户数据直接放入查询中,如果有人试图利用您的错误进行攻击,这可能会非常有害。警告:编写自己的访问控制层并不容易,而且有很多机会使其严重出错。请不要编写您自己的身份验证系统,因为任何现代的同类产品都具有强大的内置功能。至少绝对不要以明文形式存储密码。谢谢你的提示,但这应该只是一个关于Swift和Web服务之间的交互如何工作的简短测试,我还在学习。我永远不会发布这个:)我知道像这样的身份验证是非常不安全的,如果你想做一个测试,那很好。只需输入硬编码密码,完全忘记用户表。那样的话,如果真的因为某种原因(奇怪的事情发生在一个混乱的世界里!)而进入了生产阶段,你还是可以的。我明白了。。我只需要用URLEncoding.httpBody替换JSONEncoding.default
Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default).responseJSON
Alamofire.request(url, method: .post, parameters: parameters, encoding: URLEncoding.httpBody).responseJSON