Проблема при попытке создать экран входа пользователя в XCode - PullRequest
0 голосов
/ 11 марта 2020

Я попытался создать экран входа в систему (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.

...