0

私は、iPhoneアプリケーションによって送信されたHTTPリクエストをチェックするPHPで記述されたWebサービスを使用しています。その後、PHPスクリプトは、資格情報が正しいかどうかに応じてyesまたはnoを返します。現在、ハードコーディングしていますが、 PHPスクリプトがyesを返しても、条件は失敗します。結果をハードコードされた文字列に変更しようとしましたが、これは機能しました...

これがコードです

NSString *varyingString1 = @"username=";
    NSString *varyingString2 = @"username";


    NSString *varyingString3 = @"&password=";
    NSString *varyingString4 = @"password";
    NSString *post = [NSString stringWithFormat: @"%@%@%@%@", varyingString1, varyingString2, varyingString3, varyingString4];

    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:[NSURL URLWithString:@"http://url.com/api/login.php"]];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody:postData];
    NSData *returnData = [NSURLConnection sendSynchronousRequest: request returningResponse: nil error: nil];
    NSString *strResult = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

    NSString *result = strResult;
    result = [post stringByReplacingOccurrencesOfString:@" " withString:@""];

    if(result == @"yes"){
        NSLog(@"%@",strResult);
        [self performSegueWithIdentifier:@"picker" sender:self];
    }else{
        NSLog(@"No");
    }

PHPで書かれた私のWebサービスは次のようになります

<?php if($_POST['password'] == 'password' && $_POST['username'] == 'username') echo "yes";
else echo "no";

何か案は?

4

2 に答える 2

0

result == @"yes"2つの文字列を比較しません。

文字列を比較するには、[result isEqualToString:@"yes"]

于 2013-02-13T02:58:27.473 に答える
-2

残りのサービスの場合、ユーザーがログインして200 OKを返した場合、たとえばhttp応答コードを介して応答を処理することをお勧めします。

クレデンシャルが401Unauthorizedを返すことに失敗した場合は、応答本文を取得して処理できます

   <?php 
   if($_POST['password'] == 'password' && $_POST['username'] == 'username') 
   {
    header('HTTP/1.0 200 OK');
   } else {
    header('HTTP/1.0 401 Unauthorized');
   }
于 2013-02-12T23:46:12.633 に答える