162 / 150 / 97
Регистрация: 24.12.2013
Сообщений: 744
Записей в блоге: 12
1

Функция дописывает \\ перед кавычками

27.07.2015, 10:57. Показов 3227. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Сегодня к моему удивлению заметил странную штуку ( которой раньше не было) при сохранении файла перед кавычками добавляется обратный слэш \. При повторном сохранении добавляются еще два, и так постоянно...
Я понимаю что это экранирование кавычек, но зачем оно в html файле?
функция сохранения:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
function Files(){
$dir = "../site/"; // Открыть заведомо существующий каталог и начать считывать его содержимое
if (is_dir($dir)) {
  foreach(glob($dir.'*') as $obj)
            if (filetype($obj)== file){
            echo "<input type='submit' name='filename' id='filename' value=".$obj.">"; 
            $object = basename($obj);
            switch($object){
                case "colleg.html":echo "Редактировать Коллеги"; break;
                case "fallout.html":echo "Редактировать Fall Out"; break;
                case "lets_fail.html":echo "Редактировать Летс Фейл"; break;
                case "mass_effect.html":echo "Редактировать Масс Эффект 2"; break;
                case "opis.html":echo "Редактировать Новости"; break;
                case "podpison.html":echo "Редактировать Творения подписчиков"; break;
                };
            echo "<br>";
            //echo "Редактировать ".basename($obj)."<br>";
            //"<span class='file'><input type =  checkbox name=filename value=".$obj."> Файлы html: $obj \n </span><br>";
    }       
}
}
 
function Open(){
$file = file($_POST['filename']); // Читаем файл построчно    
        echo '<form  method="post">
        <textarea name=fileentry  cols="113" rows="15">';    
    foreach($file as $value) {
        echo $value."";    
}
        echo '</textarea><br><br>
        <input type=text name=filename value='.$_POST['filename'].'>    
        <input type="submit" name="input"  value="Save"></form> <br>';  
}
 
 
 
function Save(){
if($_POST['input']){
        $fp = fopen($_POST['filename'], 'w');
        fwrite($fp, $_POST['fileentry']);
        $close = fclose($fp);
        
}
}
не знаю почему такое приключилось, до этого ничего не было такого...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.07.2015, 10:57
Ответы с готовыми решениями:

Дописывает слеш к url?
Всем привет. Странное поведение браузеров(?) php(?) - к адресу site.ru/files дописывается слэш,...

Функция rewrite() не дописывает в файл
что исправить в коде? uses crt; var d:char; a,s,u:string; f:Text; begin ...

Как убрать экранирующие слеши перед кавычками при отдаче клиенту JSON?
Добрый вечер, Ниже в примере я использую библиотеку hug реализующую rest стандарт, я пробую...

Функция fwrite дописывает в начале строк буквы
Не понимаю почему, но функция fwrite дописывает в начале строк буквы. К 1-ой строке прибавляется...

11
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
27.07.2015, 11:23 2
а версия PHP старая? Может, магические кавычки включены?
0
162 / 150 / 97
Регистрация: 24.12.2013
Сообщений: 744
Записей в блоге: 12
27.07.2015, 11:38  [ТС] 3
KOPOJI, версия php 5.3.13, магические кавычки не включал, когда проверял скрипт в пятницу, все сохранялось без слешей...магия какая то
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
27.07.2015, 11:42 4
Проверьте, все таки. В вашей версии они еще не отключены, только помечены как deprecated
PHP
1
var_dump(get_magic_quotes_gpc());
Добавлено через 47 секунд
Как вариант, если они работают
PHP
1
2
3
4
5
if(get_magic_quotes_runtime())
{
    // отключение
    set_magic_quotes_runtime(false);
}
1
162 / 150 / 97
Регистрация: 24.12.2013
Сообщений: 744
Записей в блоге: 12
27.07.2015, 11:58  [ТС] 5
KOPOJI,
сначала были включены, выключил
PHP
1
magic_quotes_gpc=Off
все равно такая магия твориться))
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
27.07.2015, 11:59 6
а после выключения перезапустить PHP/сервер не забыли?
0
162 / 150 / 97
Регистрация: 24.12.2013
Сообщений: 744
Записей в блоге: 12
27.07.2015, 12:36  [ТС] 7
KOPOJI, не забыл) перезапустил, все равно...не знаю в какую сторону подумать даже
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
27.07.2015, 12:46 8
Вы где эти обратные черты наблюдаете? Может при включённой magic_qoutes_gpc они записались в БД? Они так и будут, так как добавились до записи в БД. Нужно перезаписывать.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16844 / 6723 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
27.07.2015, 12:47 9
ну если слэши непринципиальны в коде, то можете использовать striipslashes. В ином случае можете удалять именно около кавычек, как-то так:
PHP
1
$text = preg_replace('~\\\\+(?=["\'])~', '', $text);
1
162 / 150 / 97
Регистрация: 24.12.2013
Сообщений: 744
Записей в блоге: 12
27.07.2015, 12:54  [ТС] 10
Para bellum, не не) я в базу ничего не пишу, я пишу в файл, все сохраняется отлично только перед кавычками ставится \, главное ставится так, сохраняю один раз ставится один слеш.. нажимаю еще раз появляется три слеша...как я понял экранит кавычки и экранит первый слеш..еще раз уже 5 слешей...и так до бесконечности...не понимаю в чем дело, началось после того, как добавил switch{} хотя он ну никак к этому не относится
0
Эксперт PHP
5753 / 4133 / 1507
Регистрация: 06.01.2011
Сообщений: 11,276
27.07.2015, 12:59 11
brain-4-me, ну, раз магические кавычки отключили — проверьте, может addslashes или подобная функция где-то задействована?
0
162 / 150 / 97
Регистрация: 24.12.2013
Сообщений: 744
Записей в блоге: 12
27.07.2015, 13:10  [ТС] 12
Para bellum, в том то и дело что нет, сам писал все, таких функций не использовал
0
27.07.2015, 13:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.07.2015, 13:10
Помогаю со студенческими работами здесь

Функция для определения знака перед числом
Народ такая проблема. У меня стоит обнуление то есть если я введу 000000000000000000000000000045 то...

Дописывает символы H
SendDlgItemMessage(IDC_NEW_DESKTOP, EM_GETLINE, 0L, (LPARAM)strNewDesktop.GetBuffer(200)); ...

Как должно выглядеть условие, если перед ним расположена функция?
Здравствуйте. Подскажите, пожалуйста, каким образом нужно изменить скрипт, чтобы можно было...

Функция addEven для добавления элементов перед первым элементом с четным значением
В этом коде необходимо сделать вот эту функцию: Функция addEven для добавления элементов перед...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru