从iOS应用程序发送到PHP脚本不工作…简单的解决scheme是likey

我已经做了几次之前,但由于某种原因,我不能得到的职位去通过…我尝试的PHP脚本的variables设置为_POST,没有…当他们没有设置发布它的作品精细。 这是我的iOS代码:

NSDate *workingTill = timePicker.date; NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"HH:mm"]; NSString *time = [formatter stringFromDate:workingTill]; NSString *post = [NSString stringWithFormat:@"shift=%@&username=%@", time, usernameString]; NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO]; NSString *postLength = [NSString stringWithFormat:@"%d", [post length]]; NSURL *url = [NSURL URLWithString:@"http://wowow.php"]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60.0]; [request setHTTPMethod:@"POST"]; NSLog(@"%@", post); [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; [request setHTTPBody:postData]; [NSURLConnection connectionWithRequest:request delegate:nil]; [self.navigationController popToRootViewControllerAnimated:YES]; 

这里是一大块的PHP,是不是在正确的位置POSTvariables?

 <?php function objectsIntoArray($arrObjData, $arrSkipIndices = array()) { $arrData = array(); // if input is object, convert into array if (is_object($arrObjData)) { $arrObjData = get_object_vars($arrObjData); } if (is_array($arrObjData)) { foreach ($arrObjData as $index => $value) { if (is_object($value) || is_array($value)) { $value = objectsIntoArray($value, $arrSkipIndices); // recursive call } if (in_array($index, $arrSkipIndices)) { continue; } $arrData[$index] = $value; } } return $arrData; } $newShift = $_POST('shift'); $bartenderUsername = $_POST('username'); mysql_connect("host", "name", "pw") or die(mysql_error()); mysql_select_db("harring4") or die(mysql_error()); $result = mysql_query("SELECT * FROM BartenderTable WHERE username='".$bartenderUsername."'") or die(mysql_error()); $row = mysql_fetch_array($result); $newfname = $row['fname']; 

我想这是一个相对简单的答案更多的经验开发人员,感谢您的帮助!

$_POST是一个数组,而不是一个函数。 你需要方括号来访问数组索引:

 $newShift = $_POST['shift']; $bartenderUsername = $_POST['username']; 

使用下面的代码。 确保poststring的收据是一个关键,并将在服务器中使用。 客户端代码

  NSString *receipt1 = @"username"; NSString *post =[NSString stringWithFormat:@"receipt=%@",receipt1]; NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]]; NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease]; [request setURL:[NSURL URLWithString:@"http://localhost:8888/validateaction.php"]]; [request setHTTPMethod:@"POST"]; [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; [request setHTTPBody:postData]; NSHTTPURLResponse* urlResponse = nil; NSError *error = [[NSError alloc] init]; NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&error]; NSString *result = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; NSLog(@"Response Code: %d", [urlResponse statusCode]); if ([urlResponse statusCode] >= 200 && [urlResponse statusCode] < 300) { NSLog(@"Response: %@", result); } } 

服务器端的PHP脚本。

validation.php

 <?php if(_POST) { if($_POST['receipt'] == 'username') { echo "post successfull"; $receipt = $_POST['key1']; echo $receipt; } else { echo "not post"; } ?> 

因为我是iPhone开发人员,所以我可以说你的Objective-C代码是正确的。 还要确保你发送的数据不是空的

 NSLog(@"%d,[postData length]"); 

它不应该打印0