0

これは私が認証する必要がある私のphpです:

<?php

        $username=$_POST["m_username"];
        $password=$_POST["m_password"];
/*      
        $username=$_GET["m_username"];
        $password=$_GET["m_password"];
*/

?>

iPhoneアプリからの認証に以下のコードを使用しています。しかし、それは認証ではありません。それが機能しないという問題が何であるかわかりません。送信されたnullパラメータ/値を示します。

NSString *urlAsString =[NSString stringWithFormat:@"http://www.myurl.com/abc/authenticate.php"];

NSURL *url = [NSURL URLWithString:urlAsString];

NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url]; 

[urlRequest setTimeoutInterval:30.0f];

[urlRequest setHTTPMethod:@"POST"];

[urlRequest addValue:@"test" forHTTPHeaderField:@"m_username" ];

[urlRequest addValue:@"123" forHTTPHeaderField:@"m_password" ];

[[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];

NSOperationQueue *queue = [[NSOperationQueue alloc] init];

[NSURLConnection sendAsynchronousRequest:urlRequest queue:queue completionHandler:^(NSURLResponse *response,NSData *data, NSError *error) {

    if ([data length] >0 && error == nil){

        html = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

        NSLog(@"HTML = %@", html);

        receivedData = [NSMutableData data];

    }
    else if ([data length] == 0 && error == nil){

        NSLog(@"Nothing was downloaded."); 

    }

    else if (error != nil){

        NSLog(@"Error happened = %@", error);
    } 
}];

// Start loading data
NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self];
if (theConnection) 
{
    // Create the NSMutableData to hold the received data
    receivedData = [NSMutableData data];

} 
else {
    // Inform the user the connection failed.

}
4

3 に答える 3

1
[urlRequest addValue:@"test" forHTTPHeaderField:@"m_username" ];

[urlRequest addValue:@"123" forHTTPHeaderField:@"m_password" ];

これがあなたの問題です。値を投稿データとしてではなく、HTTPヘッダーフィールドとして送信します。投稿データは、ヘッダーではなくリクエスト本文に入力されます。$_POSTそのため、PHPはそれを配列で確認するための着信投稿フィールドとして扱いません。(ただし、これらのフィールドは$_SERVER配列に表示される可能性があります...私はそれを試したことがありません。とにかく、投稿データを送信するための推奨される方法ではありません。)

代わりにこれを行ってください:

NSString *myRequestString = @"m_username=test&m_password=123";
NSData *myRequestData = [NSData dataWithBytes: [myRequestString UTF8String] 
                                        length: [myRequestString length]];

[urlRequest setHTTPBody: myRequestData];

myRequestStringもちろん、必要に応じて、ユーザーが指定した値をドロップして、フォーマットされた文字列として作成できます。

また、SSL以外のURLにアクセスしているため、このデータは平文で送信されます。これは、最近すべての子供たちに悪い考えとして知られています。

于 2012-06-29T12:26:50.697 に答える
0

このようにphpページのURLを呼び出してみてください

[あなたのURL]?m_username = abc&m_password=abc次に変更します

$_POST['m_username'] to $_REQUEST['m_username'] 
and 
$_POST['m_password'] to $_REQUEST['m_password'] 

何が得られるかを確認してください...jsonデータで問題がない場合は、ココアコードに問題があります。

幸運を祈ります。

于 2012-06-29T07:05:26.597 に答える
0

iPhoneからはHTTPヘッダーでパラメーターを渡しますが、PHPスクリプトではPOSTデータからパラメーターを取得します。データ転送を同期してみてください。

于 2012-06-29T09:34:31.627 に答える