I want to POST Data in a Textfield via HTTPS to a Webserver using Swift and PHP and tried this Example POST data to a PHP method from Swift, but it is not compatible with PHP7.
Now this is for PHP7 and Swift 4 but i got an empty entry in the MySql Database.
I think thats the PHP-File...
Use Xcode 10.1 Any Solution?
Swift:
import UIKit class MessageViewController: UIViewController { @IBOutlet weak var nachricht: UITextField! @IBAction func submit(_ sender: Any) { let url = NSURL(string: "http://localhost.com") // localhost MAMP - change to point to your database server var request = URLRequest(url: url! as URL) request.httpMethod = "POST" var dataString = "secretWord=???" // starting POST string with a secretWord // the POST string has entries separated by & dataString = dataString + "&nachricht=\(nachricht.text!)" // add items as name and value // convert the post string to utf8 format let dataD = dataString.data(using: .utf8) // convert to utf8 string do { // the upload task, uploadJob, is defined here let uploadJob = URLSession.shared.uploadTask(with: request, from: dataD) { data, response, error in if error != nil { // display an alert if there is an error inside the DispatchQueue.main.async DispatchQueue.main.async { let alert = UIAlertController(title: "Upload Didn't Work?", message: "Looks like the connection to the server didn't work. Do you have Internet access?", preferredStyle: .alert) alert.addAction(UIAlertAction(title: "OK", style: .cancel, handler: nil)) self.present(alert, animated: true, completion: nil) } } else { if let unwrappedData = data { let returnedData = NSString(data: unwrappedData, encoding: String.Encoding.utf8.rawValue) // Response from web server hosting the database if returnedData == "1" { // insert into database worked // display an alert if no error and database insert worked (return = 1) inside the DispatchQueue.main.async DispatchQueue.main.async { let alert = UIAlertController(title: "Upload OK?", message: "Looks like the upload and insert into the database worked.", preferredStyle: .alert) alert.addAction(UIAlertAction(title: "OK", style: .cancel, handler: nil)) self.present(alert, animated: true, completion: nil) } } else { // display an alert if an error and database insert didn't worked (return != 1) inside the DispatchQueue.main.async DispatchQueue.main.async { let alert = UIAlertController(title: "Upload Didn't Work", message: "Looks like the insert into the database did not worked.", preferredStyle: .alert) alert.addAction(UIAlertAction(title: "OK", style: .cancel, handler: nil)) self.present(alert, animated: true, completion: nil) } } } } } uploadJob.resume() } } } PHP File:
<?php $secret = $_POST["secretWord"]; if ("???" != $secret) exit; // note the same secret as the app - could be let out if this check is not required. secretWord is not entered by the user and is used to prevent unauthorized access to the database $nachricht = $_POST['nachricht']; // POST items should be checked for bad information before being added to the database. // Create connection $mysqli=mysqli_connect("localhost","db","db_pass","db_usr"); // localhost, user name, user password, database name // Check connection if (mysqli_connect_errno()) { echo " Failed to connect to MySQL: " . mysqli_connect_error(); } $query = "insert into `db` (nachricht) value ('".$nachricht."')"; $result = mysqli_query($mysqli,$query); echo $result; // sends 1 if insert worked ?>