2017-01-05 6 views
1

PHP MySQLデータベースとPHPコードでは、email = 'abc'pw = '123'という値があります。xcodeの他のviewControllerにテキストフィールド値を取り込む方法Obj c?

login2.php

<?php 
$connect = mysqli_connect("localhost","","",""); 
if(isset($_POST['email'])) { 
    $email = $_POST['email']; 
    $pw = $_POST['pw']; 
    $sql = "SELECT * FROM table WHERE email='$email' AND pw=md5('$pw')"; 
    $get = mysqli_query($connect,$sql); 

    if($get && mysqli_num_rows($get) > 0) { 
     while($row = mysqli_fetch_assoc($get)) { 
      $email_db = $row['email']; 
      $pw_db = $row['pw'];    
      echo '{"success":1}'; 
      exit(); 
     } 
     mysqli_free_result($get); 
    } else { 
     echo '{"success":0}'; 
     echo mysqli_error($connect); 
     exit(); 
    } 
} 
?> 

私はXcodeで達成したいことは他のViewControllerに成功価値をもたらすことですがHomepageVCと呼ばれ、loginbuttonアクションがクリックされたときに値を表示します。

現在、私は同じViewControllerページでテキストフィールドの値を見ることしかできません。入力値を別のViewControllerに転送する方法がわかりません。 Objコードを以下のように記述します。

ViewController.m

@synthesize displayL,passL,email,pw; 

- (IBAction)loginbutton:(id)sender 
{  
    @try { 

     if([[email text] isEqualToString:@""] || [[pw text] isEqualToString:@""]) { 
      [self alertFailed:@"Please enter both Username and Password" :@"Login Failed!"]; 
     } 
     else { 
      NSString *post =[[NSString alloc] initWithFormat:@"email=%@&pw=%@",[email text],[pw text]]; 
      NSLog(@"PostData: %@",post); 
      NSURL *url=[NSURL URLWithString:@"http://localhost/login2.php"]; 
      NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
      NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; 

      NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
      [request setURL:url]; 
      [request setHTTPMethod:@"POST"]; 
      [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
      [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; 
      [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
      [request setHTTPBody:postData]; 

      NSError *error = [[NSError alloc] init]; 
      NSHTTPURLResponse *response = nil; 
      NSData *urlData=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
      NSLog(@"Response code: %d", [response statusCode]); 
      if ([response statusCode] >=200 && [response statusCode] <300) 
      { 
       NSString *responseData = [[NSString alloc]initWithData:urlData encoding:NSUTF8StringEncoding]; 
       NSLog(@"Response ==> %@", responseData); 
       SBJsonParser *jsonParser = [SBJsonParser new]; 
       NSDictionary *jsonData = (NSDictionary *) [jsonParser objectWithString:responseData error:nil]; 
       NSLog(@"%@",jsonData); 
       NSInteger success = [(NSNumber *) [jsonData objectForKey:@"success"] integerValue]; 
       NSLog(@"%d",success); 
       if(success == 1) 
       { 
        NSLog(@"Login SUCCESS"); 
        [self alertStatus:@"Logged in Successfully." :@"Login Success!"]; 
        NSString * input = email.text; 
        NSString * input2 = pw.text; 
        displayL.text = input; 
        passL.text = input2; 

       } else { 
        NSString *error_msg = (NSString *) [jsonData objectForKey:@"error_message"]; 
        [self alertFailed:error_msg :@"Login failed"]; 
       } 
      } else { 
       if (error) NSLog(@"Error: %@", error); 
       [self alertFailed:@"Connection Failed" :@"Login Failed!"]; 
      } 
     } 
    } 
    @catch (NSException * e) { 
     NSLog(@"Exception: %@", e); 
     [self alertStatus:@"Login Failed." :@"Login Failed!"]; 
    } 
} 
+1

私はObjective-Cを前回使用してから数ヶ月が経ちました。私は今すぐSwiftユーザーです。とにかく、2つのViewController間でデータを渡すことは簡単なことではありません。 Segues経由で、またはpushViewControllerの前にデータを渡すことができます。詳細はこちら:http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers – Glenn

+0

情報ありがとうございました:) 。 – AlotJai

+0

次のビューコントローラで正確に何を渡したいですか? –

答えて

0

あなたはcurrentViewControllerからnextViewControllerにテキストフィールドの値を使用したい場合は、NSUserDefaultsを使用することができます。

文字列にテキストフィールドの値を格納します。例えばTxtfldstring

Txtfldstring= [NSString stringWithFormat:@"%@",_yourTextField.text]; 

は、その後、次の方法のように、そのテキストフィールドの値を格納:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
// saving an NSString 

[prefs setObject:Txtfldstring forKey:@"abc"]; 

使用nextViewController又は下記方法のような任意の他のコントローラにこの値。

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
// getting an NSString 
NSString *s = [prefs stringForKey:@"abc"]; 
NSLog(@“%@",s); 
+0

あなたはあなたの問題を解決しましたか? –

関連する問題