Я попытался создать экран входа в систему (UserID + Password) для разрешения пользователю go на главный экран.
Я использую для своего теста локальный phpmyadmin с базой данных с именем GLOBAL и одной таблицей с именем пользователь, который содержит столбец: user_ID / user_name / user_password
Это мой код Xcode:
Alamofire.request(urlString, method: .get, parameters: parameters).responseJSON
{
response in
if let error = response.result.error as? AFError {
if case .responseValidationFailed(.unacceptableStatusCode(let code)) = error {
print("ERROR:\(code)")
}
}
let status = response.response?.statusCode
print("STATUS \(status)")
print("ERROR \(response.result.error)")
print("RESULT \(response.result.value)")
if let result = response.result.value
{
let jsonData = result as! NSDictionary
let val = jsonData.value(forKey: "value") as! Int64
print("VALUE:\(val)")
if(val==0){
print("fail")
}
else if(val==1){
print("succes")
}
}
}
И я использую 2 PHP Файлы: соединение. php
define('HOST','localhost');
define('USER','root');
define('PASS','');
define('DB','GLOBAL');
$con = mysqli_connect(HOST,USER,PASS,DB) or die('unable to connect to db');
и логин. php
if($_SERVER['REQUEST_METHOD']=='GET') {
$response = array();
$user_name = $_GET['user_name'];
$user_password = $_GET['user_password'];
require_once('connect.php');
$sql1 = "SELECT * FROM user WHERE user_name ='$user_name'";
$checkemail = mysqli_fetch_array(mysqli_query($con,$sql1));
$sql2 = "SELECT * FROM user WHERE user_password ='$user_password'";
$checkpassword = mysqli_fetch_array(mysqli_query($con,$sql2));
if(isset($checkemail)){
$response["value"] = 0;
$response["message"] = "correct email";
echo json_encode($response);
}else {
$response["value"] = 0;
$response["message"] = "oops! this email is not registered";
echo json_encode($response);
}
if(isset($checkpassword)){
$response["value"] = 0;
$response["message"] = "correct passs";
echo json_encode($response);
}else {
$response["value"] = 0;
$response["message"] = "oops! wrong password";
echo json_encode($response);
}
mysqli_close($con);
} else {
$response["value"] = 0;
$response["message"] = "conexion failed2!";
echo json_encode($response);
}
У меня есть ошибка:
from login
STATUS Optional(200)
ERROR Optional(Alamofire.AFError.responseSerializationFailed(reason: Alamofire.AFError.ResponseSerializationFailureReason.jsonSerializationFailed(error: Error Domain=NSCocoaErrorDomain Code=3840 "Garbage at end." UserInfo={NSDebugDescription=Garbage at end.})))
RESULT nil
И если я изменю alamofire.request с помощью метода:. сообщение У меня есть это:
from login
STATUS Optional(200)
ERROR nil
RESULT Optional({
message = "conexion failed2!";
value = 0;
})
Когда я получаю доступ к http://localhost/API/login.php
Notice: Undefined index: user_name in /Applications/XAMPP/xamppfiles/htdocs/API/login.php on line 7
Notice: Undefined index: user_password in /Applications/XAMPP/xamppfiles/htdocs/API/login.php on line 8
{"value":0,"message":"oops! this email is not registered"}{"value":0,"message":"oops! wrong password"}
Я также пробовал это:
let headers = ["Content-Type": "application/x-www-form-urlencoded"]
let completeURL = "http://the_complete_url_here"
let parameters: [String: String] =
["user_name":"john",
"user_password":"secret"]
Alamofire.request(url, method: .post, parameters: (parameters as! Parameters), encoding: URLEncoding.default, headers: headers).responseJSON { response in
if let JSON = response.result.value {
print("JSON: \(JSON)") // your JSONResponse result
// completionHandler(JSON as! NSDictionary)
}
else {
print(response.result.error!)
}
}
У меня есть:
JSON: {
message = "conexion failed2!";
value = 0;
}
Так что я думаю, проблема в моем логине. php.