Ich bin ziemlich neu zu programmieren mit Swift in Xcode, so habe ich kürzlich die fantastische php sql Anmeldung Tutorial von Sergey Kargopolov hier http://swiftdeveloperblog.com/store-user-information-in-mysql-database/.Swift 2 PHP mysql Anmeldung Problem
Leider war das Tutorial etwas veraltet und musste für Swift 2.0 aktualisiert werden. Ich habe es geschafft, den problematischen Code durch eine do/catch-Anweisung zu ersetzen, die gut zu funktionieren scheint, außer wenn ich eine Antwort vom serverseitigen php-Skript erhalte, kann ich nicht zu verschiedenen View-Controllern navigieren, basierend auf dem Ergebnis. Wenn die Antwort beispielsweise "Registrierung erfolgreich" lautet, wird der Benutzer zur geschützten Seite weitergeleitet. Wenn die E-Mail-Adresse jedoch bereits in der Datenbank vorhanden ist, möchte ich, dass sie auf derselben Seite bleibt.
Derzeit habe ich den Code arbeiten an dem Punkt, wo die Warnung angezeigt wird (entweder Benutzer bereits vorhanden oder erfolgreich), aber wenn der Benutzer auf "OK" klickt, werden sie auf die geschützte Seite unabhängig von dem Ergebnis geleitet. Ich dachte, es wäre es ein einfacher Fall zu sagen, auf die nächste Ansicht auf das Ergebnis in diesem „if“ Anweisung basiert gehen:
if (resultValue == "Success") {
isUserRegistered = true
let next = self.storyboard?.instantiateViewControllerWithIdentifier("ProtectedViewController") as! ProtectedViewController
self.presentViewController(next, animated: true, completion: nil)
}
, aber es scheint nicht zu funktionieren. Hoffentlich macht es Sinn, was ich zu tun versuche und jede Hilfe wird sehr geschätzt.
hier ist mein Code:
let myUrl = NSURL(string: "http://localhost/PhpProject1/scripts/registerUser.php")
let request = NSMutableURLRequest(URL: myUrl!)
request.HTTPMethod = "POST"
let postString = "userEmail=\(userEmail!)&userFirstName=\(userFirstName)&userLastName=\(userLastName)&userPassword=\(userPassword!)"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {
data, response, error in
if error != nil {
print("error=\(error)")
return
}
do {
let 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(), {
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)
let next = self.storyboard?.instantiateViewControllerWithIdentifier("ProtectedViewController") as! ProtectedViewController
self.presentViewController(next, animated: true, completion: nil)
}
myAlert.addAction(okAction)
}
)}
} catch { print(error)}
}
task.resume()
}
func displayAlertMessage(userMessage:String) {
let 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)
}
}
Ich möchte auch hinzufügen, dass, wenn der Benutzer erfolgreich anmeldet, I „Ergebnis: 200“ erhalten im Ausgabefenster, aber wenn der Benutzer E-Mail bereits I „Ergebnis existiert erhalten: 400 ". Ich weiß einfach nicht, wie ich das ausnutzen soll.
Vielen Dank im Voraus!
nach 'wenn lassen Sie parseJSON = json {' könnten Sie 'print (parseJSON)' und aktualisieren Sie die Antwort mit der Ausgabe – Scriptable
{ message = "Erfolgreich neuer Benutzer registriert"; Status = 200; userEmail = abc; userFirstName = a; userId = 22; userLastName = a; } Ergebnis: 200 – Rhys