2011-01-02 17 views
4

linuxコマンドプロンプトからPHPセッション変数を設定する方法は?linuxコマンドプロンプトからPHPセッション変数を設定する方法は?

明確化

だから、あなたは私たちがコーディング時に$ _SESSIONグローバル変数を使用してPHPのセッション変数を設定することができます知っています。 PHPのコマンドプロンプトでこの変数を設定する方法があるかどうかを知りたいですか?

は例えば、コードでは、私は$ _SESSIONを設定することができれば[「TEMP」] =

は、コマンドプロンプトPHPを通して同じ変数を設定する方法はあります「何」?

+0

をあなたが達成しようとしているもので、もう少し詳しく説明してもらえますか? –

+0

@Steven - done – Sev

+2

Stack Overflowでより完全な答えが得られると思います。 –

答えて

5

PHPのデフォルトのセッションハンドラは、セッションデータをserialize()という形式でファイルに保存します。つまり、基本的にプレーンテキストです。導入していない限り、標準のUNIXテキスト操作ツール(perl、sed、awk、シェルスクリプトのecho/catなど)を使って、コマンドラインからそのファイルを操作することはできますシリアライズされたデータへの構文エラー。

しかし、その時点で、unserialize()、おそらくserialize()という機能/ライブラリ/モジュールが見つからない限り、操作自体はPHP自身でもよいでしょう。それは、Webサーバのバージョンの横にPHPのCLIバージョンがインストールされていない非常にまれなシステムです。

$dat = file_get_contents('/path/to/session/file'); 
$session = unserialize($dat); 
$session['temp'] = 'whatever'; 
$dat = serialize($session); 
file_put_contents('/path/to/session/file', $dat); 
1

「セッション」は、リクエスト間でHTTPがステートレスであるという事実を回避するために使用される概念を指します。 PHPセッションは、$_SESSIONのすべてのデータをサーバー上のいくつかのストア(デフォルトはファイルですが、データベースやmemcacheなどに頻繁に変更されます)に詰め込み、「セッションCookie」を発行することで動作します。ブラウザが再び表示され、PHPがすべてのデータを読み込むように促します。

ここでのポイントは、通常、そのクッキーによって、少なくともセッション識別子によって操作される点です。コマンドラインからPHPスクリプトを実行するときには、セッション自体は実際にはありません。だから問題は、どのセッションを操作しようとしているのでしょうか?

2

私はその後、(すなわちsession_vars.php)別のファイルに関連する変数を設定することにより、$ _SESSION変数を使用してデバッグコードを扱ってきました次:これはからPHPを付加します

cat session_vars.php main.php | php 

session_vars.phpmain.phpに変更することなく、main.phpに変更を加えて、コードをきれいに保つことができます。

1

実際にはCLIでこれを行う方法があります。

最初のリクエストについては、session_id()を呼び出して最初のIDを取得し、/ tmpフォルダのように一意の名前で保存するか(データベースまたはmemcacheなどに保存する)、残りのリクエストは前にスクリプト内でsession_start()を呼び出し、ファイルからセッションIDを読み込み、phpに渡します。

は、以下のこのサンプルコードをチェックアウト:

if($session_id = @file_get_contents('/tmp/SESSION_ID_xxx.txt')) { 
    session_id($session_id); 
} 
else { 
    file_put_contents('/tmp/SESSION_ID_xxx.txt', session_id()); 
} 

session_start(); 

$_SESSION['var1'] = 'foo'; // this variable will retain the value for all following calls of this script 
関連する問題