\ Добавление персонажей там, где их не должно быть - PullRequest
1 голос
/ 27 июня 2011

PHP:

$var = "Sum Random'z String"s with quotemarks"
$send = base64_encode($var)

Затем он отправляет кодированную строку base64 на сервер.

Серверная часть (Python) пытается декодировать содержимое в кодировке base64 и записать его в файл:

f = open("/root/data.yml","w")
f.write(base64.b64decode(sys.argv[1]))
f.close()

sys.argv [1] равно $ send

Однако, когда я открываю data.yml в nano или cat , я получаюэто:

Sum Random\'z String\"s with quotemarks

Я не хочу \ там.Есть ли способ, чтобы символ \ не появлялся там, когда я открою его в nano или cat ?Что я должен изменить? РЕДАКТИРОВАТЬ: $ var берется из textarea, где нет \

Ответы [ 5 ]

4 голосов
/ 27 июня 2011

Вам не нужно избегать ни одинарных, ни двойных кавычек.Вам нужно только избежать того, с чем вы цитируете строку (т.е. ")

$var = "Sum Random'z String\"s with quotemarks";

Это может быть не единственной вашей проблемой.Но это часть проблемы.

ОБНОВЛЕНИЕ

Для каждого обновления $var, установленного с данными из текстовой области формы, вам нужно взглянуть на stripslashes ()

1 голос
/ 27 июня 2011

Проблема здесь, я думаю, в том, что вы избегаете персонажа, которого не нужно избегать, одиночные кутеры в двойных квотах не нужно избегать, и наоборот.

пример:

OK; " ' "
OK; ' " '
NO; ' ' '
OK; ' \' '
NO; " " "
OK; " \" "

Попробуйте сделать следующее:

$var = 'Sum Random\'z String"s with quotemarks';
$send = base64_encode($var);

Редактировать : вы никогда ничего не говорили об этом, поступая из текстовой области, попробуйте запустить stripslashes для значения перед кодированиемэто.

0 голосов
/ 27 июня 2011

Похоже, магические кавычки включены в PHP.

Если у вас есть доступ, вы можете отредактировать php.ini или попробовать это перед отправкой данных: ini_set('magic_quotes_runtime', 0);

0 голосов
/ 27 июня 2011

Попробуйте это: -

f = open("/root/data.yml","w")
x = base64.b64decode(sys.argv[1])
x.replace("\"", "")
f.write(x)
f.close()

Надеюсь, это поможет.

0 голосов
/ 27 июня 2011

PHP выглядит нормально для меня. Бьюсь об заклад, есть какой-то механизм безопасности, который скрывает опасных персонажей за спиной.

вы можете удалить их самостоятельно, используя эквивалент полосок в Python.

...