0

我有一个用于我的网站的默认网站模板,如下所示:

<!-- 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);
?>

现在我的问题是,如果signup.tpl包含file_get_contents魔术引号,则它会添加"\到所有表单数据中。

这是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

在此处输入图像描述

但是在关闭魔术引号的情况下,它不会添加斜杠,因此它看起来应该:

在此处输入图像描述

现在我知道你不应该有魔术引号,但是如果魔术引号全部打开,我有一个功能可以去除斜线,$_GET, $_POST, $_COOKIE, $_SESSION所以即使魔术引号打开,我的脚本也可以工作。问题是我不知道如何解决我的问题,即如果使用魔术引号,它不会在signup.tpl. 我只是想确保我的脚本能够工作,例如,如果我将它移动到一个有魔术引号的服务器上。

我需要做些什么来阻止魔术引号向 signup.tpl 添加斜杠?我知道我可以关闭魔术引号,但就像我说的那样,以防我更改了启用了魔术引号并且不允许关闭魔术引号的服务器。

(忽略表格,它不是仅用作显示问题的示例的注册表单)。

4

1 回答 1

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

Magic-quotes-runtiume 与magic GPC 引用不同——magic-quotes-runtime 发生在运行时的所有输入上,而不仅仅是 GET/POST/COOKIE 全局变量。您需要在脚本开始时禁用此设置:

set_magic_quotes_runtime(false); # pre 5.3
ini_set('magic_quotes_runtime', 0); # 5.3 onwards
于 2012-04-09T23:16:18.420 回答