NSURLRequest
を作成して、iPhoneアプリケーションのデータをサーバーにポストし、PHPスクリプトを実行します。MyPHPスクリプトは次のようになります。この。
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$link = mysql_connect("localhost", "fffasfdas","Nfdsafafs") or die ("Unable to connect to database.");
mysql_select_db("muradsbi_mydatabase") or die ("Unable to select database.");
$sqlstatement= "INSERT INTO dbname (name,email) VALUES ('$name','$email')";
$newquery = mysql_query($sqlstatement, $link);
echo 'thanks for your register';
?>
そして、私のNSURLRequst
は以下のように作成されます。
NSString *myRequestString = @"&name=Hello%20World&email=Ohai2u";
NSData *myRequestData = [NSData dataWithBytes: [myRequestString UTF8String] length: [myRequestString length]];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: [NSURL URLWithString: @"http://www.google.com/"]];
[request setHTTPMethod: @"POST"];
[request setHTTPBody: myRequestData];
NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil];
ただし、このサイトはこのアプリケーションからデータを取得してデータベースに保存することはできませんが、アプリケーションがサーバーから応答データを取得できるため、正常に接続されたことがわかります。私の変数名が間違った方法で宣言されているのか、他の問題があるのかわかりません。どうすれば修正できますか?
myRequestString
の先頭の&
を削除する必要があります。問題は、正しいcontent-type
ヘッダーが送信されていない可能性が高いです。に通話を追加してみてください
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];
また、エラーに対してnil
を渡さないでください。これにより、クライアントが何を考えているかを確認できます。
無関係ですが、あなたのPHPコードは SQLインジェクション攻撃 に開放されています。
注意すべきこと ...
NSData *data = [NSData dataWithBytes: [myRequestString UTF8String]
length: [myRequestString length]];
...は非常に悪く、漠然としたエラーを引き起こす可能性があります。 UTF8では、エンコードされた文字列のバイト数が文字列の文字数と同じであるという保証はありません。
したがって、代わりに、単に次を使用する必要があります。
NSData *data = [myRequestString dataUsingEncoding: NSUTF8StringEncoding];
これを試して
NSString *name = [[NSString alloc]initWith String: @"Hello World"];
NSString *email = [[NSString alloc]initWith String: @"Ohai2u"];
NSString *urlString = [NSString stringWithFormat:@"http://somedomain.com/sendMail.php?name=%@&email=%@",
[name stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
[email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURL *url = [[NSURL alloc] initWithString:urlString];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url];
NSData *urlData;
NSURLResponse *response;
urlData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:nil];
[url release];
release文字列を忘れないでください
PHPスクリプトにヘッダーを設定する