2011-10-24 1 views
2

どのようにすれば、$ _POST []をすべての行を書き込むことなくセッションに入れるだけの文にこれを指定できますか?セッションphp文

<?php session_start(); 
$_SESSION['s_type'] = $_POST['s_type']; 
$_SESSION['s_uname'] = $_POST['s_uname']; 
$_SESSION['s_email'] = $_POST['s_email']; 
$_SESSION['s_promo'] = $_POST['s_promo']; 
$_SESSION['s_ctry'] = $_POST['s_ctry']; 
?> 
+0

直接割り当ては、postデータを渡す '$ _SESSION'ユーザの変数を上書きすることができます。これは非常に危険です。ではない? – itzmukeshy7

答えて

11
$_SESSION['POST'] = $_POST; 
echo $_SESSION['POST']['s_type']; 
5

あなたはマルク・Bのネスティングが気に入らない場合は、

foreach ($_POST as $k => $v){ 
    $_SESSION[$k] = $v; 
} 
+0

**は好きではない**は何ですか? – Neal

+0

何もありません。私はそれが好きです。私はちょうどいくつかのコードを入力したいと思っていました。 – mqsoh

+0

Errr ...入力検証を追加しない限り、これについては考えていません。誰かが$ _POST ['user_id']に行った場合はどうなりますか?マークBが言ったことをやって! – mqsoh

1

あなたは$_POST値はありませんセッションストレージに移動しているかについての選択的理由がある場合

// We won't store s_email in $_SESSION. All others stored 
$store_to_session = array('s_stype','s_uname','s_promo','s_city'); 
foreach ($store_to_session as $s) { 
    $_SESSION[$s] = $_POST[$s]; 
} 
:(あなたがするたびに再入力する必要がありましたCAPTCHA、またはクレジットカード番号や敏感な何かを持っていた場合など)、保存し、それを反復する $_POSTキーの配列を作ります
1
$_SESSION = $_POST; 

$ _POST配列のコピーを作成し、それを$ _SESSIONに割り当てると、あなたが求めているものを実現します。しかし、これは$ _SESSION配列内の配列メンバも一掃します。ですから、配列メンバーをすでに$ _SESSIONに維持するループをお勧めします。

foreach ($_POST as $key=> $val){ 
    $_SESSION[$key] = $val; 
} 
0

これを試してみてください;)

代わりの直接$_SESSION$_POSTを割り当てるこのようなネストされたスコアを作成:この場合

$_SESSION['putScopeNameHere'] = $_POST; 

を、あなたのsessionデータはpost後もあなたのために提供されていますデータの割り当て。