2010-10-08 80 views
0

我正在使用$ _POST使用Web窗體將用戶輸入存儲到MySQL DB中。HTML窗體 - 安全刪除斜槓

我注意到,一旦textarea字段區域被讀取,斜槓被自動插入以逃避某些字符。

由於我在存儲之前需要操作文本,所以我想過使用stripslashes,但是我發現如果使用日文或其他亞洲字符集,它可能會出現亂碼文本。

有沒有適當的方法來安全地完成這項工作(刪除斜槓)?

+0

這是非常錯誤的。從您的評論下面,你說你的魔術報價是禁用的,因此這些斜槓不是「添加」。這只是你編碼unicode字符的方式(不能用ASCII/iso顯示) – Tseng 2010-10-08 17:38:52

回答

2

在您的PHP設置中關閉magic quotes。無論如何,該功能已被棄用。

+0

我檢查了php.ini,它看起來像禁用了魔術引號: ; Magic quotes ; ; Magic quotes for incoming GET/POST/Cookie data. magic_quotes_gpc = Off ; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc. magic_quotes_runtime = Off ; Use Sybase-style magic quotes (escape ' with '' instead of \'). magic_quotes_sybase = Off Riccardo 2010-10-08 13:59:46

+0

是的,這是PHP5的默認設置。 3,因爲所說的魔術引號已被棄用。在這種情況下,你不應該在字符串上使用stripslashes! stipslashes是唯一必要的,如果啓用了魔術引號,那實際上是我在我的anwser中發佈的。如果魔法引號處於打開狀態,則會使用stripslashes,否則它們不會。如果出於任何原因,您必須將代碼移植到啓用了魔術引號的服務器上,並且您不能或不允許禁用它們(即導致它們干擾其他腳本),而我的解決方案仍然可以正常工作,而上述慣於。 – Tseng 2010-10-08 17:34:51

1

如果你不想禁用魔術引號(即使他們不會再在PHP 6.0工作,因爲他們在5.3中不建議使用),您可以使用此代碼

$txt = $_POST['txt']; 
if(get_magic_quotes_gpc()) 
    $txt = stripslashes($txt); 

這樣的stripslashes只有當你的PHP模塊啓用了魔術引號或者忽略它時才能啓用。否則

+0

正如我寫的,striplashes似乎對一些亞洲編碼的語言,如日本.... – Riccardo 2010-10-08 13:41:17