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
然而,当我在 nano 或 cat 中打开data.yml时,我明白了:
Sum Random\'z String\"s with quotemarks
我不想要\那里。 当我在 nano 或 cat 中打开它时,有没有办法让\字符不会出现在那里?我该怎么改变? 修改 $ var取自textarea,其中没有\
答案 0 :(得分:4)
您无需同时退出单引号和双引号。你只需要逃避你引用字符串的内容(即"
)
$var = "Sum Random'z String\"s with quotemarks";
这可能不是你唯一的问题。但这是问题的一部分。
根据您使用来自表单textarea的数据设置的$var
的更新,您需要查看stripslashes()
答案 1 :(得分:1)
我认为这里的问题是你逃脱了一个不需要逃脱的角色,双qoutes内的单个qoutres不需要逃脱,反之亦然。
示例:
OK; " ' "
OK; ' " '
NO; ' ' '
OK; ' \' '
NO; " " "
OK; " \" "
尝试执行以下操作:
$var = 'Sum Random\'z String"s with quotemarks';
$send = base64_encode($var);
编辑:您从来没有说过来自textarea的任何内容,请在编码之前尝试对该值运行stripslashes
。
答案 2 :(得分:0)
你可以用python中的striplashes相当于你自己。
答案 3 :(得分:0)
听起来在PHP中启用了magic quotes。
如果您有权限,可以编辑php.ini或在发送数据前尝试此操作:ini_set('magic_quotes_runtime', 0);
答案 4 :(得分:-1)
试试这个: -
f = open("/root/data.yml","w")
x = base64.b64decode(sys.argv[1])
x.replace("\"", "")
f.write(x)
f.close()
希望它有所帮助。