samedi 25 juin 2016

Can't connect swift app to MySQL

I'm developing an iOS app using Swift 2. I want the login info (user and password) to be stored in a MySQL database online, which is in a godaddy VPS server. This is the class for registration: import UIKit class RegisterPageViewController: UIViewController { @IBOutlet weak var userEmailTextField: UITextField! @IBOutlet weak var userPasswordTextField: UITextField! @IBOutlet weak var repeatPasswordTextField: UITextField! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func registerButtonTapped(sender: AnyObject) { let userEmail = userEmailTextField.text let userPassword = userPasswordTextField.text let userRepeatPassword = repeatPasswordTextField.text //Check for empty fields if(userEmail!.isEmpty || userPassword!.isEmpty || userRepeatPassword!.isEmpty) { //Display alert message displayMyAlertMessage("Todos los campos son requeridos") return } //Check if password match if(userPassword != userRepeatPassword) { //Display an alert message displayMyAlertMessage("Passwords no coinciden") return } //Send user data to server side let myURL = NSURL(string: "https://gastonberenstein.com/pruebasmysql/userRegister.php") let request = NSMutableURLRequest(URL: myURL!) request.HTTPMethod = "POST" let postString = "email=(userEmail)&password=(userPassword)" request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding) let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { data, response, error in if error != nil { print("error=(error)") } do { var json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary if let parseJSON = json { var resultValue = parseJSON["status"] as! String! print("result: (resultValue)") var isUserRegistered:Bool = false if(resultValue == "Success") { isUserRegistered = true } var messageToDisplay:String = parseJSON["message"] as! String if(!isUserRegistered) { messageToDisplay = parseJSON["message"] as! String } dispatch_async(dispatch_get_main_queue(), { //Display alert message with confirmation var myAlert = UIAlertController(title: "Alert", message: messageToDisplay, preferredStyle: UIAlertControllerStyle.Alert) let okAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default){ action in self.dismissViewControllerAnimated(true, completion: nil) } myAlert.addAction(okAction) self.presentViewController(myAlert, animated: true, completion: nil) }) } } catch { print(error) } } task.resume() } func displayMyAlertMessage(userMessage:String) { var myAlert = UIAlertController(title:"Alert", message: userMessage, preferredStyle: UIAlertControllerStyle.Alert) let okAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: nil) myAlert.addAction(okAction) self.presentViewController(myAlert, animated: true, completion: nil) } } Conn.php: <?php class Conn { public static $dbhost = "166.62.92.31"; //public static $dbhost = "localhost" public static $dbuser = "gastonbe_gaston"; public static $dbpass = "xxx"; public static $dbname = "gastonbe_pruebasmysql"; } ?> MySQLDao.php: <?php class MySQLDao { var $dbhost = null; var $dbuser = null; var $dbpass = null; var $conn = null; var $dbname = null; var $result = null; function __construct() { $this->dbhost = Conn::$dbhost; $this->dbuser = Conn::$dbuser; $this->dbpass = Conn::$dbpass; $this->dbname = Conn::$dbname; } public function openConnection() { $this->conn = new mysqli($this->dbhost, $this->dbuser, $this->dbpass, $this->dbname); if (mysqli_connect_errno()) echo new Exception("No se pudo establecer la conexion a la base de datos"); } public function getConnection() { return $this->conn; } public function closeConnection() { if ($this->conn != null) $this->conn->close(); } public function getUserDetails($email) { $returnValue = array(); $sql = "select * from users where user_email='" . $email . "'"; $result = $this->conn->query($sql); if ($result != null && (mysqli_num_rows($result) >= 1)) { $row = $result.fetch_array(MYSQLI_ASSOC); if (!empty($row)) { $returnValue = $row; } } return $returnValue; } public function getUserDetailsWithPassword($email, $userPassword) { $returnValue = array(); $sql = "select id, user_email from users where user_email='" . $email . "' and user_password='" .$userPassword . "'"; $result = $this->conn->query($sql); if ($result != null && (mysqli_num_rows($result) >=1)) { $row = $result->fetch_array(MYSQLI_ASSOC); if (!empty($row)) { $returnValue = $row; } } return $returnValue; } public function registerUser($email, $password) { $sql = "insert into users set user_email=?, user_password=?"; $statement = $this->conn->prepare($sql); if (!$statement) throw new Exception($statement->error); $statement->bind_param("ss", $email, $password); $returnValue = $statement->execute(); return $returnValue; } } ?> registerUser.php: <?php require("Conn.php"); require("MySQLDao.php"); $email = htmlentities($_POST["email"]); $password = htmlentities($_POST["password"]); $returnValue = array(); if(empty($email) || empty($password)) { $returnValue["status"] = "error"; $returnValue["message"] = "Falta un campo requerido"; echo json_encode($returnValue); return; } $dao = new MySQLDao(); $dao->openConnection(); $userDetails = $dao->getUserDetails($email); if(!empty($userDetails)) { $returnValue["status"] = "error"; $returnValue["message"] = "El usuario ya existe"; echo json_encode($returnValue); return; } $secure_password = md5($password); $result = $dao->registerUser($email,$secure_password); if($result) { $returnValue["status"] = "Success"; $returnValue["message"] = "Usuario registrado"; echo json_encode($returnValue); return; } $dao->closeConnection(); ?> When I run/debug the app in Xcode, I enter an username and registration into the corresponding fields and in the line 56 where I put a breakpoint: let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {... The console throws this error: 2015-11-19 14:02:16.932 userLoginAndRegistration[17265:6170848] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813) Any help? thanks a lot! If i forgot to add any information please let me know.

Aucun commentaire:

Enregistrer un commentaire