2014-03-01 66 views
1

我试图使用编码在PHP base64我的剧本,但为什么我的代码自动添加在单引号'反斜杠\ 或双引号"
这是我使用的编码在使用Base64编码的PHP逃离

代码
$encode = $_POST ['encode']; 
$encod = base64_encode ($encode); 
echo "<form action='?' method='post'><textarea name='encode'></textarea><input type='submit' value='Encode'></form><textarea> ".$encod." </textarea>"; 

我使用的代码在上面,然后我尝试编码此脚本:

echo "just test"; 
echo 'or just test'; 

,并导致

PD9waHAgZWNobyBcImp1c3QgdGVzdFwiOw0KZWNobyBcJ29yIGp1c3QgdGVzdFwnOyA/PG ==

当我解码,导致

echo \"just test\"; 
echo \'or just test\'; 

如何删除反斜杠?

我试过在$encodstripslashes($encod)上使用str_replace,但它不起作用。

+0

你是怎么用'str_replace'来替换的?请包括您尝试完成任务的代码 – Subin

+0

替换\' $ encod = str_replace(“\'”,“”,$ encod); 替换\“ $ encode = str_replace('\'','',$ encod); – user3367454

+0

这真的是由'base64_encode'造成的,还是原始字符串中的反斜杠('$ encode')? – pat

回答

1

我试着解码你的base64编码的字符串,它产生了相同的结果。我试着再次编码它,斜线和所有,并且它产生了相同的编码字符串。

问题不在于您在解码过程中以某种方式获取未知的斜线,而是在您编码字符串之前斜线存在。

无斜线相同的字符串是这样的: PD9waHAgZWNobyAianVzdCB0ZXN0IjsNCmVjaG8gJ29yIGp1c3QgdGVzdCc7ID8+

尝试对其进行解码。

我认为,真正解决你的问题可以在这里找到:

Why are $_POST variables getting escaped in PHP?

+0

那么如何完整的代码,我试图使用它来编码,但它会生成|^r#ºËmzË^ r(®;¬¶×¬ 对不起,对英文不好 – user3367454

0

我相信你用base64是编码字符串中JSON已编码的(因为POST必须与实现一个JSON字符串,我假设)。

的Json的方式来逃避引号是你描述是你的问题是什么:

参见:json_encode PHP

所以这里的解决办法是首先解码来自的base64(BASE64_DECODE [PHP]),然后从解码json(jsoN_decode()[PHP])或者(JSON.parse()[JS])