2016-12-29 2 views
0

나는 모든 변수를 필요로하는 응용 프로그램의 VC를 가지고 있으며 POST 요청을 통해 php 파일로 전달해야합니다.이 요청은 저장되어 데이터베이스로 전송됩니다. 변수는 데이터베이스에 설정되지 않은 경우에 발생합니다 (연결이 제대로되었다고 생각합니다). PHP 파일은 똑같은 Android 앱 (변수가 Android 앱을 사용하여 잘 저장되도록)에서 잘 작동합니다.신속한 게시 POST 요청

도움을 주시면 감사하겠습니다.

스위프트

@IBAction func modPres(_ sender: AnyObject) { 
    let postDataURL = "https://www.juankarfollador.com/login_app.php" 
    let url: NSURL = NSURL(string: postDataURL)! 
    let request: NSMutableURLRequest = NSMutableURLRequest(url:url as URL) 

    request.httpMethod = "POST" 
    request.httpBody = user.data(using: String.Encoding.utf8) 
    request.httpBody = l_origen.data(using: String.Encoding.utf8) 
    request.httpBody = l_destino.data(using: String.Encoding.utf8) 
    request.httpBody = num_pal.data(using: String.Encoding.utf8) 
    request.httpBody = String(precio).data(using: String.Encoding.utf8) 
    request.httpBody = texto.data(using: String.Encoding.utf8) 

    NSURLConnection.sendAsynchronousRequest(request as URLRequest, queue: OperationQueue.main) 
    { 
     (response, data, error) in 
     print(response!) 

     if let httpResponse = response as? HTTPURLResponse { 
      let statusCode = httpResponse.statusCode 

      if statusCode==200 { 
       print("Connection Successful") 

      } else { 
       print("Connection Failed (!200)") 
      } 
     } 
    } 
} 

$precio = $_POST['precio']; 

$texto = $_POST['texto']; 

$user = $_POST['user']; 

$l_origen = $_POST['l_origen']; 

$l_destino = $_POST['l_destino']; 

$num_pal = $_POST['num_pal']; 

$modificar = $_POST['modificar']; 

define('HOST','***'); 
define('USER','***'); 
define('PASS','***'); 
define('DB','***'); 

$con = mysqli_connect(HOST,USER,PASS,DB) or die('Unable to Connect'); 

mysqli_set_charset($con, 'utf8'); 

//Cliente 

$sql = "UPDATE users SET precio='$precio', text_cli='$texto', l_origen='$l_origen', l_destino='$l_destino', num_pal='$num_pal' WHERE username='$user' AND text_cli=''"; 

mysqli_query($con,$sql); 

콘솔 인쇄 "연결 성공", 나는 연결이 잘 그래도 확실하지 않다 (완료 생각하는 이유는, 내가 스위프트에 처음 온 것처럼)

답변

1

을 무시하고 있습니다. 귀하의 요청210 번 이상.

위에는 의 게시물 변수와 일치하는 keys이 전달되지 않습니다. 당신이 다음이없는 경우에 그것이 당신의 DB와 상호 작용하기 때문에 당신이 정말로 그것을를 추가해야합니다, 제가 확인이 표시되지 않는

let paramString = "precio=\(precio)&texto=\(texto)&user=\(user)&l_origen=\(l_origen)&l_destino=\(l_destino)&num_pal=\(l_destino)&modificar=\(modificar)" 
request.httpMethod = "POST" 
request.HTTPBody = paramString.dataUsingEncoding(NSUTF8StringEncoding) 

당신의 PHP에서 :

당신은이 라인을 따라 뭔가가 필요합니다.

SQL 주사에 노출되어있는 것은 말할 필요도 없습니다.

+0

감사합니다. @meda. PHP 페이지는 단지 그것을 테스트하는 것입니다. 작동하면보다 안전한 스크립트를 작성합니다. 나는 당신의 코드를 시험해보고 결과를 말할 것이다. 다시 감사합니다. – alberzyzz

+0

@alberzyzz는 테스트하지 않았다는 것을 명심하십시오. 필자의 요지는 paramString을 빌드하는 것이며, 필자는 대답의 마지막 줄에 인코딩을했기 때문에 인코딩을 제거 할 수 있습니다. – meda

+0

테스트되지 않았지만 작동했습니다! 고맙습니다. – alberzyzz