Размещать странные символы в PHP-скрипте? - PullRequest
0 голосов
/ 03 мая 2011

У меня есть приложение для iPhone, где мои данные публикуются в файл PHP на сервере через GET.Однако после выполнения со странными символами ответ сервера отсутствует.(Я ставлю NSLog на то, что я получаю с сервера).

Вот как я отправляю свои данные на сервер:

// St uploading to server
        NSString *urlString = [NSString stringWithFormat:@"http://myflashpics.com/iphone_processes/upload.php?album=%@&id=%@&caption=%@&orient=%@&size=%d&device=iPhone",getAlbumID,theUserID,theCaption,getOrientation,imageSize];

        NSLog(@"Calling URL: %@", urlString);

        NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
        [request setURL:[NSURL URLWithString:urlString]];
        [request setHTTPMethod:@"POST"];

        NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
        NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
        [request addValue:contentType forHTTPHeaderField:@"Content-Type"];

        NSMutableData *body = [NSMutableData data];
        [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\".jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[[NSString stringWithString:@"Content-Type: binary\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
        [body appendData:[NSData dataWithData:imageData]];
        [body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
        [request setHTTPBody:body];

А вот как я обрабатываю на стороне сервера:

<?php

// Connect to MYSQL

$name = $_GET['name'];

mysql_query("INSERT INTO *** (name) VALUES ('$name')");

Я действительно хотел бы исправить эту сторону сервера, если это возможно.Я подал в Apple, и я надеюсь, что исправить, не отправив его повторно.

Пожалуйста, пожалуйста, помогите!Спасибо

Култон

Ответы [ 2 ]

3 голосов
/ 03 мая 2011

Прежде всего, если ваше действие создает запись, вы должны делать POST, а не GET.

Во-вторых, прекратите использовать функции mysql_ * и используйте PDO с параметризованными запросами.

Если у вас все еще есть проблемы, используйте функцию php error_log () в сочетании с var_export ($ var, true), чтобы записывать сообщения журнала, чтобы определить, что PHP получает.

Что в сочетании с любыми ошибками / исключениями, сгенерированными PDO, должно указывать на причину проблемы.

1 голос
/ 03 мая 2011

Если вы используете $ _GET, перед отправкой их вам следует кодировать переменные в URL.

В любом случае, вы должны делать две вещи:

  • экранирование переменных запроса (GET или POST) с помощью таких функций, как mysql_escape_string (http://php.net/manual/en/function.mysql-real-escape-string.php), перед вставкой в ​​базу данных
  • кодирование ваших переменных для странных символов в числовые символы Юникода (я полагаю, что это правильный термин) с использованием mb_convert_encoding($variable, 'HTML-ENTITIES', 'UTF-8'); перед сохранением их в базе данных

Надеюсь, это поможет.

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