отправка сообщения из приложения iOS в php-скрипт не работает … Простое решение похоже

Я делал это несколько раз раньше, но по какой-то причине я не могу получить сообщение, чтобы пройти … Я пробовал сценарий php с переменными, установленными на _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, являются ли переменные POST не в нужном месте?

 <?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']; 

Используйте следующий код. убедитесь, что почтовая строка является ключом и будет использоваться на сервере. код на стороне клиента

  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