2013-03-26 4 views
0

Я программирую с помощью webservice в iphone, который обращается к базе данных mysql, которая содержит такие значения, как «Мобильные & игровые решения». Я получаю это значение в строке от пользователя и передаю его в php-файл. Но php не принимает строку с '&'. Он принимает только «Мобильный». Помоги мне. Мой код в Xcode является:Передача '&' в строке от xcode до php?

strEditbuunit = [labeditbunit.text stringByReplacingOccurrencesOfString:@" " withString:@"+"]; 

NSString *Updpost =[NSString stringWithFormat:@"buname=%@",strEditbuunit]; 

UpdLTRhostStr = @"http://localhost/practice/ltrupdate.php?"; 

UpdLTRhostStr = [UpdLTRhostStr stringByAppendingString:Updpost]; 
UpdLTRdataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:UpdLTRhostStr]]; 
UpdLTRserverOutput = [[NSString alloc] initWithData:UpdLTRdataURL encoding: NSASCIIStringEncoding]; 


<?php 
$con = mysql_connect("192.168.0.82","android","android"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("androidlogin", $con); 
$buname = $_GET["buname"]; 
$retval1 = mysql_query("SELECT code_id FROM typedescs where name = '$buname'"); 
    while($row1 = mysql_fetch_assoc($retval1)) 
    { 
     $bu_id = $row1['code_id']; 

    } 
echo $buname; 
mysql_close($con); 
?> 

Когда я эхо buname это дает мне «Мобильный» вместо «Мобильных & игровых решений» из-за «&». Пожалуйста, помогите мне передать строку со специальными символами в php из xcode.

+3

Nice [SQL injection hole] (http://bobby-tables.com). Наслаждайтесь наличием вашего сервера pwn3d. –

ответ

1

Это не имеет никакого отношения к PHP. Вы не указываете параметры запроса в своем URL-адресе.

UpdLTRhostStr = @"http://localhost/practice/ltrupdate.php?"; 
UpdLTRhostStr = [UpdLTRhostStr stringByAppendingString:Updpost]; 

Вот один из способов сделать это:

UpdLTRhostStr = [NSString 
    stringWithFormat:@"http://localhost/practice/ltrupdate.php?buname=%@", 
    CFURLCreateStringByAddingPercentEscapes(
     kCFAllocatorDefault, (CFStringRef) buunit, NULL, 
     CFSTR(":/?#[]@!$&’()*+,;="), kCFStringEncodingUTF8)]; 

Не забывайте, что вам нужно, чтобы избежать строки на стороне PHP тоже, прежде чем передать его в MySQL. Как заметил Марк Б, у вас серьезная дыра в безопасности.

+0

как сделать это.give me какой-нибудь пример pls. – VadivuPandi

+0

@ user2210195: Например, если у вас есть '&', он заменяется на '% 26'. Другие специальные символы заменяются одинаково. –

+0

Я использовал $ buname = mysql_escape_string ($ _ GET ["buname"]); в php side.Is it right.It не работает. Я новичок в php также. plz help – VadivuPandi

Смежные вопросы