Php 创建用户登录/注册页面时,如何将iOS应用程序与数据库连接?

Php 创建用户登录/注册页面时,如何将iOS应用程序与数据库连接?,php,ios,mysql,xcode,swift,Php,Ios,Mysql,Xcode,Swift,我正在进行一个学校项目,以构建一个类似instagram的应用程序,我们要做的第一件事是创建一个用户登录和注册页面。我的队友创建了一个数据库,但我在连接他的数据库时遇到问题 以下是我在网上找到的源代码(): 导入UIKit 类签名查看控制器:UIViewController{ //在此声明两个textfield对象 @IBOutlet弱变量txtUsername:UITextField! @IBOutlet弱var txtPassword:UITextField! 重写func viewDidL

我正在进行一个学校项目,以构建一个类似instagram的应用程序,我们要做的第一件事是创建一个用户登录和注册页面。我的队友创建了一个数据库,但我在连接他的数据库时遇到问题

以下是我在网上找到的源代码():

导入UIKit
类签名查看控制器:UIViewController{
//在此声明两个textfield对象
@IBOutlet弱变量txtUsername:UITextField!
@IBOutlet弱var txtPassword:UITextField!
重写func viewDidLoad(){
super.viewDidLoad()
//加载视图后执行任何其他设置。
}
重写函数didReceiveMemoryWarning(){
超级。我收到了记忆警告()
//处置所有可以重新创建的资源。
}
//单击“登录”按钮时,将运行以下功能
@iAction func已签名(发件人:UIButton){
变量用户名:NSString=txtUsername.text
var密码:NSString=txtPassword.text
if(username.isEqualToString(“”)| | password.isEqualToString(“”){
var-alertView:UIAlertView=UIAlertView()
alertView.title=“登录失败!”
alertView.message=“请输入用户名和密码”
alertView.delegate=self
alertView.addButtonWithTitle(“确定”)
alertView.show()
}否则{
var post:NSString=“用户名=\(用户名)&密码=\(密码)”
NSLog(“PostData:%@”,post);
//变量url:NSURL=NSURL(字符串:https://dipinkrishna.com/jsonlogin2.php")!
变量url:NSURL=NSURL(字符串:http://php-kingpendragon.rhcloud.com/index.php")!
var postData:NSData=post.dataUsingEncoding(NSASCIIStringEncoding)!
变量postLength:NSString=String(postData.length)
var请求:NSMutableURLRequest=NSMutableURLRequest(URL:URL)
request.HTTPMethod=“POST”
request.HTTPBody=postData
setValue(postLength为字符串,forHTTPHeaderField:“内容长度”)
request.setValue(“application/x-www-form-urlencoded”,forHTTPHeaderField:“内容类型”)
request.setValue(“application/json”,forHTTPHeaderField:“Accept”)
var REPORNSERROR:NSError?
var响应:nsurresponse?
变量urlData:NSData?=NSURLConnection.sendSynchronousRequest(请求、返回响应:&response、错误:&ResponseError)
if(urlData!=nil){
让res=响应为!NSHTTPURLResponse!;
NSLog(“响应代码:%ld”,res.statusCode);
如果(res.statusCode>=200&&res.statusCode<300)
{
var responseData:NSString=NSString(数据:urlData!,编码:NSUTF8StringEncoding)!
NSLog(“响应==>%@”,响应数据);
var错误:N错误?
将jsonData:NSDictionary=NSJSONSerialization.JSONObjectWithData(urlData!,选项:NSJSONReadingOptions.MutableContainers,错误:&error)设为!NSDictionary
让success:NSInteger=jsonData.valueForKey(“success”)作为!NSInteger
//[jsonData[@“success”]integerValue];
NSLog(“成功:%ld”,成功);
如果(成功==1)
{
NSLog(“登录成功”);
var prefs:NSUserDefaults=NSUserDefaults.standardUserDefaults()
prefs.setObject(用户名,forKey:“用户名”)
prefs.setInteger(1,forKey:“ISLOGGEDIN”)
prefs.synchronize()
//self.dismissViewControllerAnimated(真,完成:无)
}否则{
var错误消息:NSString
如果jsonData[“错误消息”]为?NSString!=nil{
error\u msg=jsonData[“error\u message”]as!NSString
}否则{
错误\u msg=“未知错误”
}
var-alertView:UIAlertView=UIAlertView()
alertView.title=“登录失败!”
alertView.message=错误消息为字符串
alertView.delegate=self
alertView.addButtonWithTitle(“确定”)
alertView.show()
}
}否则{
var-alertView:UIAlertView=UIAlertView()
alertView.title=“登录失败!”
alertView.message=“连接失败”
alertView.delegate=self
alertView.addButtonWithTitle(“确定”)
alertView.show()
}
}否则{
var-alertView:UIAlertView=UIAlertView()
alertView.title=“登录失败!”
alertView.message=“连接失败”
如果let error=reponseError{
alertView.message=(错误.localizedDescription)
}
alertView.delegate=self
alertView.addButtonWithTitle(“确定”)
alertView.show()
}
}
}
func textField应该返回(textField:UITextField)->Bool{//delegate方法
textField.resignFirstResponder()辞职
返回真值
}
/*
//标记:-导航
//在基于故事板的应用程序中,您通常需要在导航之前做一些准备
覆盖函数prepareforsgue(segue:UIStoryboardSegue,sender:AnyObject?){
//使用segue.destinationViewController获取新的视图控制器。
//将选定对象传递给新的视图控制器。
}
*/
}
注册页面:

import UIKit

class SignupViewController: UIViewController {

    @IBOutlet weak var txtUsername: UITextField!
    @IBOutlet weak var txtPassword: UITextField!
    @IBOutlet weak var txtConfirmPassword: 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.
    }

    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
    }
    */

    //When user clicks signin button
    @IBAction func gotoSignIn(sender: UIButton) {
        self.dismissViewControllerAnimated(true, completion: nil)
    }

    //When user clicks signup button
    @IBAction func signupTapped(sender: UIButton) {
        var username:NSString = txtUsername.text as NSString
        var password:NSString = txtPassword.text as NSString
        var confirm_password:NSString = txtConfirmPassword.text as NSString

        if ( username.isEqualToString("") || password.isEqualToString("") ) {

            var alertView:UIAlertView = UIAlertView()
            alertView.title = "Sign Up Failed!"
            alertView.message = "Please enter Username and Password"
            alertView.delegate = self
            alertView.addButtonWithTitle("OK")
            alertView.show()
        } else if ( !password.isEqual(confirm_password) ) {

            var alertView:UIAlertView = UIAlertView()
            alertView.title = "Sign Up Failed!"
            alertView.message = "Passwords don't match"
            alertView.delegate = self
            alertView.addButtonWithTitle("OK")
            alertView.show()
        } else {

            var post:NSString = "username=\(username)&password=\(password)&c_password=\(confirm_password)"

            NSLog("PostData: %@",post);

            //var url:NSURL = NSURL(string: "https://dipinkrishna.com/jsonsignup.php")!
            var url:NSURL = NSURL(string: "http://php-kingpendragon.rhcloud.com/index.php")!

            var postData:NSData = post.dataUsingEncoding(NSASCIIStringEncoding)!

            var postLength:NSString = String( postData.length )

            var request:NSMutableURLRequest = NSMutableURLRequest(URL: url)
            request.HTTPMethod = "POST"
            request.HTTPBody = postData
            request.setValue(postLength as String, forHTTPHeaderField: "Content-Length")
            request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
            request.setValue("application/json", forHTTPHeaderField: "Accept")


            var reponseError: NSError?
            var response: NSURLResponse?

            var urlData: NSData? = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&reponseError)

            if ( urlData != nil ) {
                let res = response as! NSHTTPURLResponse!;

                NSLog("Response code: %ld", res.statusCode);

                if (res.statusCode >= 200 && res.statusCode < 300)
                {
                    var responseData:NSString  = NSString(data:urlData!, encoding:NSUTF8StringEncoding)!

                    NSLog("Response ==> %@", responseData);

                    var error: NSError?

                    let jsonData:NSDictionary = NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers , error: &error) as! NSDictionary


                    let success:NSInteger = jsonData.valueForKey("success") as! NSInteger

                    //[jsonData[@"success"] integerValue];

                    NSLog("Success: %ld", success);

                    if(success == 1)
                    {
                        NSLog("Sign Up SUCCESS");
                        self.dismissViewControllerAnimated(true, completion: nil)
                    } else {
                        var error_msg:NSString

                        if jsonData["error_message"] as? NSString != nil {
                            error_msg = jsonData["error_message"] as! NSString
                        } else {
                            error_msg = "Unknown Error"
                        }
                        var alertView:UIAlertView = UIAlertView()
                        alertView.title = "Sign Up Failed!"
                        alertView.message = error_msg as String
                        alertView.delegate = self
                        alertView.addButtonWithTitle("OK")
                        alertView.show()

                    }

                } else {
                    var alertView:UIAlertView = UIAlertView()
                    alertView.title = "Sign Up Failed!"
                    alertView.message = "Connection Failed"
                    alertView.delegate = self
                    alertView.addButtonWithTitle("OK")
                    alertView.show()
                }
            }  else {
                var alertView:UIAlertView = UIAlertView()
                alertView.title = "Sign in Failed!"
                alertView.message = "Connection Failure"
                if let error = reponseError {
                    alertView.message = (error.localizedDescription)
                }
                alertView.delegate = self
                alertView.addButtonWithTitle("OK")
                alertView.show()
            }
        }

    }


    func textFieldShouldReturn(textField: UITextField!) -> Bool {   //delegate method
        textField.resignFirstResponder()
        return true
    }

}
导入UIKit
类SignupViewController:UIViewController{
@
import UIKit

class SignupViewController: UIViewController {

    @IBOutlet weak var txtUsername: UITextField!
    @IBOutlet weak var txtPassword: UITextField!
    @IBOutlet weak var txtConfirmPassword: 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.
    }

    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
    }
    */

    //When user clicks signin button
    @IBAction func gotoSignIn(sender: UIButton) {
        self.dismissViewControllerAnimated(true, completion: nil)
    }

    //When user clicks signup button
    @IBAction func signupTapped(sender: UIButton) {
        var username:NSString = txtUsername.text as NSString
        var password:NSString = txtPassword.text as NSString
        var confirm_password:NSString = txtConfirmPassword.text as NSString

        if ( username.isEqualToString("") || password.isEqualToString("") ) {

            var alertView:UIAlertView = UIAlertView()
            alertView.title = "Sign Up Failed!"
            alertView.message = "Please enter Username and Password"
            alertView.delegate = self
            alertView.addButtonWithTitle("OK")
            alertView.show()
        } else if ( !password.isEqual(confirm_password) ) {

            var alertView:UIAlertView = UIAlertView()
            alertView.title = "Sign Up Failed!"
            alertView.message = "Passwords don't match"
            alertView.delegate = self
            alertView.addButtonWithTitle("OK")
            alertView.show()
        } else {

            var post:NSString = "username=\(username)&password=\(password)&c_password=\(confirm_password)"

            NSLog("PostData: %@",post);

            //var url:NSURL = NSURL(string: "https://dipinkrishna.com/jsonsignup.php")!
            var url:NSURL = NSURL(string: "http://php-kingpendragon.rhcloud.com/index.php")!

            var postData:NSData = post.dataUsingEncoding(NSASCIIStringEncoding)!

            var postLength:NSString = String( postData.length )

            var request:NSMutableURLRequest = NSMutableURLRequest(URL: url)
            request.HTTPMethod = "POST"
            request.HTTPBody = postData
            request.setValue(postLength as String, forHTTPHeaderField: "Content-Length")
            request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
            request.setValue("application/json", forHTTPHeaderField: "Accept")


            var reponseError: NSError?
            var response: NSURLResponse?

            var urlData: NSData? = NSURLConnection.sendSynchronousRequest(request, returningResponse:&response, error:&reponseError)

            if ( urlData != nil ) {
                let res = response as! NSHTTPURLResponse!;

                NSLog("Response code: %ld", res.statusCode);

                if (res.statusCode >= 200 && res.statusCode < 300)
                {
                    var responseData:NSString  = NSString(data:urlData!, encoding:NSUTF8StringEncoding)!

                    NSLog("Response ==> %@", responseData);

                    var error: NSError?

                    let jsonData:NSDictionary = NSJSONSerialization.JSONObjectWithData(urlData!, options:NSJSONReadingOptions.MutableContainers , error: &error) as! NSDictionary


                    let success:NSInteger = jsonData.valueForKey("success") as! NSInteger

                    //[jsonData[@"success"] integerValue];

                    NSLog("Success: %ld", success);

                    if(success == 1)
                    {
                        NSLog("Sign Up SUCCESS");
                        self.dismissViewControllerAnimated(true, completion: nil)
                    } else {
                        var error_msg:NSString

                        if jsonData["error_message"] as? NSString != nil {
                            error_msg = jsonData["error_message"] as! NSString
                        } else {
                            error_msg = "Unknown Error"
                        }
                        var alertView:UIAlertView = UIAlertView()
                        alertView.title = "Sign Up Failed!"
                        alertView.message = error_msg as String
                        alertView.delegate = self
                        alertView.addButtonWithTitle("OK")
                        alertView.show()

                    }

                } else {
                    var alertView:UIAlertView = UIAlertView()
                    alertView.title = "Sign Up Failed!"
                    alertView.message = "Connection Failed"
                    alertView.delegate = self
                    alertView.addButtonWithTitle("OK")
                    alertView.show()
                }
            }  else {
                var alertView:UIAlertView = UIAlertView()
                alertView.title = "Sign in Failed!"
                alertView.message = "Connection Failure"
                if let error = reponseError {
                    alertView.message = (error.localizedDescription)
                }
                alertView.delegate = self
                alertView.addButtonWithTitle("OK")
                alertView.show()
            }
        }

    }


    func textFieldShouldReturn(textField: UITextField!) -> Bool {   //delegate method
        textField.resignFirstResponder()
        return true
    }

}
<?php

/**
 * File to handle all API requests
 * Accepts GET and POST
 * 
 * Each request will be identified by TAG
 * Response will be JSON data

  /**
 * check for POST request 
 */
if (isset($_POST['tag']) && $_POST['tag'] != '') {
    // get tag
    $tag = $_POST['tag'];

    // include db handler
    require_once 'DB_Functions.php';
    $db = new DB_Functions();

    // response Array
    $response = array("tag" => $tag, "error" => FALSE);

    // check for tag type
    if ($tag == 'login') {
        // Request type is check Login
        $email = $_POST['email'];
        $password = $_POST['password'];

        // check for user
        $user = $db->getUserByEmailAndPassword($email, $password);
        if ($user != false) {
            // user found
            $response["error"] = FALSE;
            $response["uid"] = $user["unique_id"];
            $response["user"]["name"] = $user["name"];
            $response["user"]["email"] = $user["email"];
            $response["user"]["created_at"] = $user["created_at"];
            $response["user"]["updated_at"] = $user["updated_at"];
            echo json_encode($response);
        } else {
            // user not found
            // echo json with error = 1
            $response["error"] = TRUE;
            $response["error_msg"] = "Incorrect email or password!";
            echo json_encode($response);
        }
    } else if ($tag == 'register') {
        // Request type is Register new user
        $name = $_POST['name'];
        $email = $_POST['email'];
        $password = $_POST['password'];

        // check if user is already existed
        if ($db->isUserExisted($email)) {
            // user is already existed - error response
            $response["error"] = TRUE;
            $response["error_msg"] = "User already existed";
            echo json_encode($response);
        } else {
            // store user
            $user = $db->storeUser($name, $email, $password);
            if ($user) {
                // user stored successfully
                $response["error"] = FALSE;
                $response["uid"] = $user["unique_id"];
                $response["user"]["name"] = $user["name"];
                $response["user"]["email"] = $user["email"];
                $response["user"]["created_at"] = $user["created_at"];
                $response["user"]["updated_at"] = $user["updated_at"];
                echo json_encode($response);
            } else {
                // user failed to store
                $response["error"] = TRUE;
                $response["error_msg"] = "Error occured in Registartion";
                echo json_encode($response);
            }
        }
    } else {
        // user failed to store
        $response["error"] = TRUE;
        $response["error_msg"] = "Unknow 'tag' value. It should be either 'login' or 'register'";
        echo json_encode($response);
    }
} else {
    $response["error"] = TRUE;
    $response["error_msg"] = "Required parameter 'tag' is missing!";
    echo json_encode($response);
}
?>
var post:NSString = "tag=login&username=\(username)&password=\(password)&c_password=\(confirm_password)"

var post:NSString = "tag=register&username=\(username)&password=\(password)&c_password=\(confirm_password)"