2012-04-09 43 views
0

我有我用我的網站像下面一個默認的網站模板:PHP Magic Quotes在模板文件中添加斜線?

<!-- Meta start --> 
<title></title> 
<meta name="description" content="" /> 
<meta name="keywords" content="" /> 
<!-- Meta end --> 

<?php 
    require_once($sidebar_inc); 
?> 

<?php 
    // main.inc.php 
    require_once($main_inc); 
?> 

<!-- CONTENT START --> 
<?php 
    // signup.tpl template location 
    $tpl = 'inc/tpl/signup.tpl'; 
    // check if files exists and is readable 
    if(file_exists($tpl) && is_readable($tpl)) { 
     echo file_get_contents($tpl); 
    } else { 
     echo 'Template not found'; 
    } 
?> 

<!-- CONTENT FINISH --> 

<?php 
    // footer.inc.php 
    require_once($footer_inc); 
?> 

現在,當通過file_get_contents包含在signup.tpl如果魔術引號是它增加了"\所有形式的數據我的問題是。

這裏是signup.tpl模板

<h1>Sign up</h1> 

<p>Welcome to SITE_NAME. To get started, you’ll need an account.</p> 

<form action="signup.php" method="post"> 
    <div class="form_settings"> 
     <p><span>Name</span><input class="contact" type="text" name="your_name" value="" /></p> 
     <p><span>Email Address</span><input class="contact" type="text" name="your_email" value="" /></p> 
     <p><span>Message</span><textarea class="contact textarea" rows="8" cols="50" name="your_enquiry"></textarea></p> 
     <p style="padding-top: 15px"><span>&nbsp;</span><input class="submit" type="submit" name="contact_submitted" value="submit" /></p> 
    </div> 
</form> 

基本上與魔術引號它看起來像這樣當包含signup.tpl

enter image description here

但隨着魔術引號關閉,因此它看起來就像它應該不加斜槓:

enter image description here

現在我知道你不應該對魔術引號,但我有一個函數如果所有$_GET, $_POST, $_COOKIE, $_SESSION的魔術引號都是開啓的,那麼我的腳本就可以運行,即使魔法引號處於打開狀態也是如此。問題是我不知道如何解決我的問題,如果魔術引號是在它不會添加斜槓signup.tpl。我只想確保我的腳本能夠正常工作,例如,如果我將它移動到有魔術引號的服務器上。

我需要做什麼來阻止向signup.tpl添加斜槓的魔術引號?我知道我可以把魔術引號關掉,但正如我所說,如果我改變了服務器上有魔術引號,並且不允許關閉魔術引號。

(忽略表單,它不是一個僅用作示例顯示問題的註冊表單)。

回答

2

有兩個魔術引號設置。從手冊:

; 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 

魔術引號 - runtiume是不一樣的東西魔術GPC報價 - 魔術引號運行時發生的所有輸入在運行時,不只是GET/POST/COOKIE全局。您需要在腳本開始時禁用此設置:

set_magic_quotes_runtime(false); # pre 5.3 
ini_set('magic_quotes_runtime', 0); # 5.3 onwards 
+0

感謝您的快速回復,非常感謝 – PHPLOVER 2012-04-10 07:48:38