PDA

Просмотр полной версии : пхп сохраняет в файл - добавляет слеши. как отключить?


Дикс
12.08.2006, 23:45
написал простую прогу - редактор файлов, чтобы не лазить на фтп


<meta http-equiv='Content-type' Content='text/html; charset=windows-1251' />
<?php
if(isset($_GET['pass']) && $_GET['pass'] == 'МОЙ_ПАРОЛЬ')
{
$file = trim($_GET['file']);
$op = fopen($file, "r");
while(!feof($op))
{
$mass = fread($op, 4096);
}
?>
<b><?=$file?></b>
<form action='file_editor.php?file=<?=$file?>&pass=everyday' method='POST'>
<input type='hidden' name='file' value='<?=$file?>' />
<textarea cols='90' rows='37' name='data'><?=$mass?></textarea>
<br />
<input type='submit' style='width: 740px; font-weight: bold' value='сохранить' />
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$to_write = fopen($file, "w");
$writing = fwrite($to_write, $_POST['data']);
echo ('сохранено...');
}
}else
{
echo ('ну ты же не думаешь, что я вот так вот просто дам любому редактировать файлы? ;)');
}
?>

я не прошу её критиковать (хотя любые отзывы о коде мне были бы полезны)
меня интересует почему сохранённый из неё файл весь пробит слешами (перед каждой кавычкой - слеш)
а точнее как эту особенность отключить чтобы сохранять работоспособные скрипты.

Ch3ck
13.08.2006, 00:03
Тык... magic_quotes_gpc работаит... наверно надо выключить...

SMiX
13.08.2006, 12:06
Если magic_quotes_gpc отключить возможности нет, используй следующий код:
@set_magic_quotes_runtime(0);
$self=$_SERVER['PHP_SELF'];
if(!ini_get("register_globals")){
@import_request_variables("GPC","");
}
if (get_magic_quotes_gpc()) strips($GLOBALS);
function strips(&$el) {
if (is_array($el)) {
foreach($el as $k=>$v) {
if($k!='GLOBALS') {
strips($el[$k]);
}
}
} else {
if(is_string($el))
$el = stripslashes($el);
}
}
//Сперто из r57shell и модифицировано мной
Я во все конфиги моих скриптов это сую.

*Пасс лучше передавать постом.

max_pain89
13.08.2006, 15:27
$writing = fwrite($to_write, stripslashes($_POST['data']));

SMiX
13.08.2006, 15:59
$writing = fwrite($to_write, stripslashes($_POST['data']));
Ну можно и так, но лучше все глобальные переменные сразу избавить от слешей..