iOS не поддерживает связь между приложением iPhone и базой данных MySQL через PHP

0

Мне нужна помощь, пытаясь понять, почему мое приложение для iPhone не общается с моим PHP. У меня есть текстовое поле, в котором пользователь может ввести сообщение, и есть кнопка, которая должна сообщать приложению, когда текст был введен и должен быть отправлен в мою базу данных mySQL.

Мой код PHP и iOS вставлен ниже, но я также включил некоторые инструкции для отладки.

Я помещаю разрыв в строку if([serverOutput...) и в этот момент получаю следующее:

alertsuccess    UIAlertView *   0x00000000
dataURL NSData *    0x00000000 
messageString   __NSCFString *  0x0685e7a0 @"hi"
serverOutput    __NSCFConstantString *  0x00b75a7c
url NSURL * 0x06869540 @"http://www.mysite.com/connect.php?message=hi"

Из точки останова отладки я бы ожидал, что serverOutput скажет "ОК", но это пустое, что, я считаю, означает, что оно не связано с моим PHP. Ваша помощь приветствуется, как исправить это.

<?php
// Connecting, selecting database
$link = mysql_connect("localhost", "user", "password")
or die('Could not connect: ' . mysql_error());

mysql_select_db("mydb") or die('Could not select database');

// Performing SQL query
$query = "INSERT INTO messages (message,date) VALUES ('$_GET["message"]',NOW())";
$result = mysql_query($query) or die('Query failed: ' . mysql_error());

echo "OK";

// Free resultset
mysql_free_result($result);

// Closing connection
mysql_close($link);
?>

Код iPhone

- (IBAction)postmessage:(id)sender {

self.message = self.messageField.text;
NSString *messageString = self.message;
UIAlertView *alertsuccess;

 //construct an URL for your script, containing the encoded text for parameter value
NSURL* url = [NSURL URLWithString:
 [NSString stringWithFormat:
 @"http://www.mysite.com/connect.php?message=%@",messageString]];

NSData *dataURL =  [NSData dataWithContentsOfURL:url];
NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding: NSASCIIStringEncoding];

if([serverOutput isEqualToString:@"OK"]) {

   alertsuccess = [[UIAlertView alloc] initWithTitle:@"Posted" message:@"Done"
                                                          delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

} else {
    alertsuccess = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Done"
                                                          delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

}
[alertsuccess show];

}
  • 1
    Вы проверили логи вашего веб-сервера, чтобы увидеть, действительно ли был хит на PHP-скрипте? Возможно, он подключается, но в вашем скрипте есть ошибка, которая убивает его до того, как произойдет какой-либо вывод.
  • 0
    Я бы не стал получать доступ к таким удаленным ресурсам. Попробуйте загрузить его в устройство в Safari, чтобы увидеть, работает ли оно первым.
Показать ещё 3 комментария
Теги:
nsdata
nsurl

1 ответ

1

Ошибка здесь $query = "INSERT INTO messages (message,date) VALUES ('$_GET["message"]',NOW())";

Должно быть

$query = "INSERT INTO messages (message,date) VALUES ('" . $_GET["message"] . "', NOW())";

или

$query = "INSERT INTO messages (message,date) VALUES ('${_GET["message"]}', NOW())";
  • 1
    Я был бы очень осторожен, используя это, поскольку это уязвимо для инъекции.
  • 1
    Это правда, я только что указал OP на место в коде с синтаксической ошибкой

Ещё вопросы

Сообщество Overcoder
Наверх
Меню