2013-12-08 2 views
1

이 방법을 사용하여 내 서버에 게시물 요청을 보내고 데이터를에 저장하지만 데이터가 데이터베이스에 저장된 경우 일부 문자가 누락 될 수 있습니다. 예를 들어이 문자열이 있습니다. "예를 포스트 ++ 요청 ++" + 더하기 기호 누락으로 데이터베이스 문자열 변경 "예를 POST 요청"을 받았을 때 여기 내 코드http 게시 요청을 보낼 때 오류가 발생합니다

엑스 코드입니다

NSString *STR = @"mystring=example post ++ request ++"; 
NSData *PostData = [STR dataUsingEncoding:NSUTF8StringEncoding]; 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://MySiteUrl.com/example.php"]]; 

    [request setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"]; 
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
    [request setHTTPBody:PostData]; 
    [request setHTTPMethod:@"POST"]; 

    NSError *error = nil; 
    NSURLResponse *response = nil; 
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 

PHP 코드

$STR = $_POST['mystring']; 

      header ('Content-Type: text/html; charset=UTF-8'); 
$con = mysql_connect("localhost","xxxxxx","xxxx"); 
      mysql_select_db("xxxxxxx", $con); 
      mysql_query("SET NAMES utf8"); 

$STR = trim($STR); 

mysql_query("INSERT INTO `xxxxxxx`.`table` (`id`, `mystring`) VALUES (NULL, '$STR');"); 
+1

** 경고 ** ** [** 비추천 ** 데이터베이스 API] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql)를 사용하고 있습니다. -functions-in-php) [현대 대체] (http://php.net/manual/en/mysqlinfo.api.choosing.php)를 사용해야합니다. 또한 ** [SQL 주입 공격] (http://bobby-tables.com) **에 취약합니다 ** 현대적인 API로 인해 [방어] (http://stackoverflow.com/questions/60174/)가 쉬워집니다. how-can-i-prevent-sql-injection-in-php)을 사용하지 마십시오. –

답변

1

+는 URL에 공백을 의미합니다. 그래도 + 기호를 전달하려면 인코딩 할 필요가 있습니다. xcode가 UTF8 형식을 사용하고 있습니다. POST에서 요청 매개 변수는 요청 본문의 쿼리 문자열로 사용됩니다. 따라서 PHP 코드를 디버그하고 PHP가 해당 데이터를받은 다음 UTF8로 유지하는지 확인하십시오. 그렇지 않다면 PHP에서 urlencode (string $ str)을 사용하여 변환하십시오. 귀하의 문제는 인코딩과 함께 생각하고 어떤 부분이 올바르게 인코딩되지 않는지 정확하게 식별하기 위해 코드를 디버깅해야합니다. 좋은 질문과 행운

관련 문제