2016-07-21 19 views
0

は、私がやろうとしているものです:PHP:セッション変数内に動的変数を格納する方法は?ここ

$username = 'john'; 
$_SESSION['data'] = "Hello ".$username; 


$username = 'mike'; 
$new = $_SESSION['data']; // trying make it like: $new = "Hello ".$username; 
echo $new // should output: "Hello Mike" 

フレーズは、後に応じて別のページに変更できるように、私は、$ _SESSION変数に動的変数とのフレーズを保存しようとしています動的変数

これは可能なのですか?

+1

あなたは(幸い) – zerkms

+0

はこれを解決することは容易ではありません、と私それを行うことはできませんここであなたが抱いているよりも別の問題を解決しようとしているという明確な印象を受けています(iow、[XY問題](http://xyproblem.info/))。いずれにしても、ソリューションはおそらく '$ _SESSION ['data']'に文字列テンプレートを格納し、関連するすべての変数をテンプレートエンジンに渡します。繰り返しますが、まったく簡単なことではありませんが、本当にあなたが提起した正確な問題を解決する他の方法はありません。それで、あなたが解決しようとしている問題は何ですか? –

+0

私は大量かつ精巧な$ _POST変数とSQL構築計算から作成されたSessionにSQL文を保存しようとしています。ユーザーが「ページ2」をクリックすると、精巧なスクリプトを実行するのではなく、50種類の$ _POST変数をセッション変数に保存するのではなく、SQL文の「Offet、Limit」部分を変更するだけです。 – peppy

答えて

-2

あなたはこのような何か行うことができます:

$username = 'john'; 
$_SESSION['data'] = 'echo "Hello $username";'; 


$username = 'mike'; 
eval($_SESSION['data']); 

をしかし、あなたは、あなたが望む結果を達成できる方法の何百万人があるにしたいと思いますなぜ私にはわからない、このようなアプローチは、おそらくにISN最高です。

+0

バリー、あなたはRCEの脆弱性をどうやって得るのですか?はい、そうです、他のBarry、はい、そうです。 –

+0

バリーはあなたの名前をつかまえていませんでしたか?誰もバリー1と2の良いアイデアだとは言いませんでした。 – Nunchy

0

セッションに保存した値が$username変数の値を使用して完全に新しい値になっているため、書いたとおりに動作しません。作成されるとすぐに、セッションの値は$username変数に関連付けられていません。

セッションに名前とフレーズを別々に保存することができます。名前とフレーズを別々に変更してから、それらを一緒に使用する必要があるときに後で組み合わせることができます。

コメントの特定のケースについては、プレースホルダを使用して準備されたステートメントのSQL文字列を格納することが有効です。

$_SESSION['statement'] = "SELECT some_columns FROM some_table LIMIT ?, ?"; 
$_SESSION['limit'] = $limit; 
$_SESSION['offset'] = $offset; 

あなたは準備された文自体を保存することはできませんが、SQL文字列を格納することができ、その後、後続のページにそれを準備して実行します。

$stmt = $pdo->prepare($_SESSION['statement']); 
$stmt->execute([ $_SESSION['limit'], $_SESSION['offset'] ]); 

はちょうどあなたがyou need to specify that they should be bound as integers or disable emulated prepared statementsこと、それを実行する前に、あなたの次のページにに値をバインドする準備ができたら、覚えています。

0

これにはstring formattingを使用できます。見てみましょう:

$username = 'John'; // not really needed for this test 
$_SESSION['data'] = "Hello %s"; 


$username = 'Mike'; 
$text = sprintf($_SESSION['data'], $username); 
echo $text 

出力:

こんにちはマイク

アクションhere内のコードを参照してください。

+0

私は知っています...この特定の問題(特にOPのコメントに基づいています)しかし、それはこの質問に終わる他の人を助けることができる... – FirstOne

0

セッション配列に新しい要素を追加したい場合は、以下のように、あなたはセッション配列に新しい要素をプッシュすることができます。

array_push($_SESSION['data'],$element) 
関連する問題