ObjectiveC-PHP: передача строк и проблемы с безопасностью - PullRequest
0 голосов
/ 29 декабря 2010

Я новичок в разработке для iPhone.Я тестирую передачу имени пользователя из:

iphone / obj-c -> php -> Database / MySql -> php -> return to iphone

У меня проблема при передаче имени пользователя.Вот код:

NSString *hostStr =[NSString stringWithFormat:@"localhost/username.php?username=%@", tf_username.text];

NSData *dataURL =  [NSData dataWithContentsOfURL: [ NSURL URLWithString: hostStr ]];    
NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding: NSUTF8StringEncoding];
NSLog(@"Server output: %@", serverOutput);

мой php файл (username.php)

<?php
// for testing, i simply output what i received
if(!empty($_GET['username'])){
echo $_GET['username'];
} else {
echo "No parameters";
}
?>

Вот результат, когда я ввожу:

Enter        I    Result
=============================================
test         I    Server Output: test
test test    I    Server Output: 
  1. Когда у меня будет «пробел», он вернется пустым.В php есть этот URLEncode. Должен ли я сначала кодировать строку в obj-c?

  2. Каковы недостатки безопасности моих методов?(я знаю, что есть много)

  3. Есть ли лучший подход / методы, когда получить данные из базы данных веб-сервера?(как мой метод: obj-c -> php -> obj-c)

Спасибо

1 Ответ

0 голосов
/ 29 декабря 2010
  1. См. NSString stringByAddingPercentEscapesUsingEncoding:, который будет работать нормально. Единственным исключением является то, что он превратит пробелы в %20 вместо +, но вы можете легко заменить строку после кодирования.
  2. Учитывая, что вы на самом деле мало что нам рассказали, трудно сказать. Если предположить, что «имя пользователя» - это просто параметр поиска, а не учетные данные для входа, то в этом нет ничего плохого. Может быть, вам нужно прочитать о HTTP RESTful APIs . Для настольного приложения вполне нормально совершать вызовы к удаленному API. Однако я бы формализовал ваш ввод и вывод, например, используя JSON или XML, если что-либо требуется в теле запроса / ответа.
  3. Опять же, то, что вы делаете, нормально. Вы создаете API. Если вам нужно что-то читать, читать API-интерфейсы веб-служб (в частности, REST ... Я бы не стал втягиваться в SOAP , который пугающий и слишком сложный IMHO).

PS: +URLWithString действительно должен требовать полный URL (включая 'http://').

)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...