2016-07-12 15 views
0

htmlフォームからカスタムURLをbase64でエンコードされたデータで提供できる必要があります。例えばフォームのデータbase64をgetメソッドでエンコード

<form name="test" action="test.php" method="get"> 
<input type="text" name="category" /> 
<input type="text" name="gender" /> 
<input type="text" name="quantity" /> 
</form> 

とURLを取得:

test.php?Y2F0ZWdvcnk9c3BvcnRzJmdlbmRlcj1mZW1hbGUmcXVhbnRpdHk9NTA= 

感謝。

+0

この関数は['base64_encode()'](http://php.net/base64_encode)と呼ばれます。 –

+0

私は@ÁlvaroGonzálezを知っていますが、フォームのすべての値を、分離された値ではなく、1つの文字列としてどのようにエンコードしますか? – ManelPNavarro

答えて

0

あなたはおそらく最初のフォームをポストする必要があり、その後、次の操作を行います

// Sanitize data 

$urlData = $array(); 

$urlData['category'] = $_POST['category']; 
$urlData['gender'] = $_POST['gender']; 
$urlData['quantity'] = $_POST['quantity']; 

$urlData = base64_encode(json_encode($urlData)); 

header("Location test.php?data=". $urlData .""); 
exit(); 

だけでbase64では、あなたのデータの意味を変えることができますので、私はjson_encodeを使用。 チェックアウトそのテーマに関する記事:test.phpをに続いてPassing base64 encoded strings in URL

を:

$data = json_decode(base64_decode($_GET['data'])); 
// Sanitize data again 
+0

あなたの助けに感謝しました – ManelPNavarro

+0

'method =" get "'、 '$ _POST ['...']'は未定義のインデックス通知をトリガーするだけです。そして 'json_encode()'は期待される出力形式を生成しません。 –

1

我々はY2F0ZWdvcnk9c3BvcnRzJmdlbmRlcj1mZW1hbGUmcXVhbnRpdHk9NTA=が期待される出力であると仮定した場合、我々はそれがどのように見えるかを確認するためにそれをデコードすることから始めます:

category=sports&gender=female&quantity=50 

あなたGETフォームの正確クエリ文字列ですので、我々は右$_SERVER['QUERY_STRING']からから値を取得することができます。

エンコードする組み込み関数はbase64_encode()で、built-in operatorで文字列を連結することもできます。最後には、rawurlencode()という別のビルトイン関数を使用してURLコンポーネントをエンコードできます。したがって、我々はすべてのレンガを持っています:

$url = 'test.php?' . rawurlencode(base64_encode($_SERVER['QUERY_STRING'])); 
+0

私は道を見つけました、あなたの助けをありがとう – ManelPNavarro

+0

@ManelMustiどういう意味ですか?私の答えに間違いはありますか? –

+0

あなたの答えはまったくではなく、とても役に立ちました。ありがとうございました。 – ManelPNavarro

関連する問題