Alamofire POST请求PHP脚本未获取任何值
我对Alamofire中的POST请求有问题。如果我尝试发出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.
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