2013-06-20 135 views
0

我想問一個非常簡單的問題。在PHP的條形斜槓

我在其中我已經進入了一個代碼的項目工作,說我進入像代碼:

<?php 
echo "Test"; 
?> 

在保存按鈕的點擊,該代碼被保存到一個PHP文件說testfile.php

當我上運行windows 7 - wamp server這個文件,那麼這是確定的,但是當我託管在000webhost.com這個文件是linux server那麼一些反斜線(\)的" "前加入。對於寫入文件,我使用的代碼

$code = $_POST['yourcode']; 
$openphp = fopen("testfile.php","w"); 
fwrite($openphp, $code); 
fclose($openphp); 

在Linux服務器上,該代碼被寫成:

<?php 
echo \"test\"; 

?> 

我不想保存這個反斜線(\),我怎樣才能避免這種情況,而寫文件

+0

你基本上是讓人們注入代碼(一個shell)來根服務器? – HamZa

+0

這是行動中的魔術引號 – DevZer0

+0

我該如何刪除這些魔術引號 –

回答

1

在同一文件夾作爲腳本創建.htaccess文件,並添加以下

php_flag magic_quotes_gpc Off 
+0

它會有什麼缺點嗎? –

+0

@lord_linus你應該先測試它,因爲你在共享服務器上(這可能不起作用) – HamZa

+0

Yeps的工作,非常感謝,它會產生任何安全問題? –

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 

或者在你的PHP文件的開頭可以用ini_set()

設置
ini_set("magic_quotes_gpc", "Off"); 
+0

因爲他在共享服務器上,所以你的第一個解決方案將不起作用。你的第二個不會工作,因爲'magic_quotes_gpc'不能用'ini_set'改變,請檢查這個[list](http://php.net/manual/en/ini.list.php) – HamZa