マニュアルによると「この環境変数は、カレントのリクエストを実行している間のみ存在します。 リクエスト終了時、環境変数は元の状態に戻されます」(http://php.mirror.camelnetwork.com/manual/ja/function.putenv.php)
とあります。消えてしまうのなら何も、環境変数を設定するまでもなくプログラム側のコード次第でどうにでもなる話だと思うのですが。。。一体この関数にはどんな使い方があるのでしょう?
私の実現したいことは、例えばGET(単なるリンクでもいい)で次のページにデータを引き渡すのですが、それと共に(裏側で)自分で設定した環境変数に値を載せて次のページでgetenv(hoge)みたいな感じで取得したいのです。POSTやCookieを使えない環境を想定しています(ケータイなど)
上記を実現する代替手段があればputenvでなくても構いません。要するに(GETのような)ユーザーによる変更が容易でないデータの受け渡し方法を知りたいのです。
ちなみにセキュリティのベキ論などはまったく期待してません。
どなたかよろしくお願いします。
putenvは、例えばPHPで外部コマンドを実行するときに、環境変数を設定する為に使えます(exec() 等)
データを書き換えられるのが嫌ならば、普通にセッション管理を行えば良いのではないですか? hoge.php?SID=セッションIDの様に、GET形でもセッション管理できますが。
PHPは、もともとWEB専用の言語ではありません。
従って常駐して動作するようなプログラムも
存在します。
putenvに関しては、生成したプログラムが
別のプログラムを起動する場合、起動された
プログムの設定情報などを環境変数経由で
参照する場合に使われます。
今回の利用方法では、putenvしても
プログラムが終了してしまうので、getenv
しても元のデータは存在しない事になり
目的が処理は出来ない。
通常は、cookie/postが使えない場合は
セッション情報を使う必要があります。
簡単なのは、URLに?xxxxのように
パラメータ部分にセッション情報を埋め込む方法。
又は個体識別情報をセッション情報として使う方法。
http://ke-tai.org/index.php?DoCoMo%2F%A5%B5%A5%A4%A5%C8%C0%A9%BA...
http://www.limy.org/program/mobile/uid.html
http://ke-tai.org/index.php?cmd=read&page=DoCoMo%2F%A5%B5%A5...
ご回答ありがとうございます。
ケータイ向けのリンク大変参考になりました。
putenvは外部コマンド実行のときに使うものなのですね。勉強になりました。
ちなみに(蛇足ながら恐縮ですが)もともとのPHPの略を見てもWeb用言語だと思いますよ。(PersonalHomepageTool)
ご回答ありがとうございます。
なるほど、外部コマンド実行のときに使うものなのですね。勉強になりました。GETでのセッション管理は存じておりますが、それしかないようですね。ありがとうございました。