2014-03-01 64 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])