糟糕!我想到了。不得不剥去斜线......
您好,我有以下代码在浏览器中编辑我的配置文件。检索文件内容并将其显示在文本框中。然后将编辑内容保存回文件中。在我的开发机器上一切正常,但在我的托管帐户中,它不起作用。
当我保存文件时,所有单引号都被覆盖,在它们前面添加反斜杠。
如何更改代码以防止此问题?谢谢!
<?php
// button javascript
$save_changes_js = "return confirm('Do you want to SAVE the CHANGE(S)?');";
// open web config
$filename = ROOT_PATH.'web.config.php';
$contents = file_get_contents($filename);
if(isset($_POST['txbConfig']) && !empty($_POST['txbConfig']))
{
// save changes to file
$changes = $_POST['txbConfig'];
file_put_contents($filename,$changes);
// refresh page
$destination_url = SITE_URL.'admin/edit-config.php';
header('Location:'.$destination_url);
}
?>
<form action="" method="post" name="editConfig" class="htmlForm">
<div class="editConfigWrap">
<textarea name="txbConfig"><?php echo $contents ?></textarea>
</div>
<input name="submit" type="submit" value="Save Changes" class="gvbtn" onclick="<?php echo $save_changes_js; ?>">
</form>
答案 0 :(得分:0)
您已启用'magic quotes'。它们绝不是神奇的。
您可以通过get_magic_quotes_gpc或get_magic_quotes_runtime检查此设置并撤消魔术,例如
$value=get_magic_quotes_gpc()?stripslashes($_REQUEST['value']):_REQUEST['value'];
答案 1 :(得分:0)
这是因为您的ISP仍然启用了Magic Quotes。理想情况下,让他们关闭它或找到一种方法为您的帐户配置它。
如果无法做到这一点,则需要使用stripslashes
或同等效果。请参阅此其他问题:How to turn off magic quotes on shared hosting?