2017-10-18 24 views
0

在我的PHP代码中,我传递了一个ID为PHP从SQL服务器获取信息。 它似乎很好地工作,但每当我有一个“&”的名字,这是行不通的作品“2017_test ID”SQL注入ID名称包含'&'

http://localhost/php/single-entry.php?document_id=2017_test%20id 

这里的ID的更多

$doc_info = array(); 
$id = "ID not set"; 
if(isset($_GET['document_id'])) { 
    $id = $_GET['document_id']; 
    $id = str_replace('___', '&', $id); 
    $doc_info = get_document_info($id); 
    $doc_info['dummy'] = " "; 
} 

例子我知道正确的信息。一个ID的

例如不工作 “2017_e &我EDV”

http://localhost/php/single-entry.php?document_id=2017_e&i%20EDV 

在这里,我让PHP警告:未定义指数。尽管数据在数据库中。

我将id传递给另一个函数,该函数使用此ID获取存储在数据库中的信息数组。 在第一个例子中我得到的数据,但如果名下有“&”我得到未定义指数

+0

“不起作用”究竟意味着什么? – zerkms

+1

了解url编码,因为像'?','='和'&'这样的特定字符在URL中具有特殊含义作为GET参数分隔符 –

+0

$ _GET中的&是一个特殊字符。从G_GET转换为$ _POST,看看是否有帮助 – jeff

回答

0

您可以使用以下方法:

进行urlencode($ DOCUMENT_ID) - 在发送请求你的PHP脚本
并在注释部分指出的,$ _GET [“DOCUMENT_ID”]会给 你已经解码值

,并使用解码值插件tead在你的PHP脚本中。

+0

你不需要'urldecode',它会自动完成。 – zerkms

+0

不,'urldecode($ _ GET [“document_id”])'是完全多余的(可能有害)。 – zerkms

+0

@zerkms为什么它是有害的,请解释。 – Tarun

相关问题