問題タブ [superglobals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - $_SERVER['document_root']?
これは、現在のファイルが実行されているディレクトリを指していますか?
php - PHP の実際の SESSION オブジェクト
編集:(更新)
多分私の質問は十分に明確ではありませんでした。わかりました、このように言いましょう:
最初の var_dump は次を返します。
2番目のものは次のように返されます:
unset($arr["a"]) すると、次のように返されます。
ルールは、2 つ以上の変数が同じコンテンツを「指している」場合、var_dump はアンパサンド文字 (&) を使用して参照を表示することです。
$_SESSION の場合、 register_long_arrays = Offであっても、 $_SESSION は引き続き参照を示します。したがって、他の変数も同じコンテンツを指していることは明らかです。
言い換えれば、unset($_SESSION) した場合、リンクできる他の変数がまだどこかにあるということです。上記の例では、unset($arr["a"]) のときに、 $arr["z"] =& $arr["b"]のようなリンクを作成すれば、そのコンテンツを復元できます。
それで、私の最初の質問は、他の変数がどれか知っている人はいますか?そのような変数が存在しない可能性は非常に高いです...しかし、なぜPHP内部でその参照が表示されるのか疑問に思っていました。
ありがとうございました
(元の質問:)
たとえば、PHP でセッションを作成する場合:
GLOBAL 変数を次のようにダンプします。
次のようなものが表示されます。
ご覧のとおり、変数 $GLOBAL[HTTP_SESSION_VARS] と $_SESSION の両方が他のオブジェクトのコンテンツへの参照です...そのオブジェクトがどれか知っている人はいますか?
理論的には、両方の変数の設定を解除すると、どういうわけかそのコンテンツにアクセスできるはずです...手がかりはありますか?
ありがとうございました!
php - PHP グローバル変数を使用して動的フォーム生成が可能
どうやら私の元の投稿に関して混乱があったようですので、最初からやり直しましょう。
私は基本的に、私たちが提供するトレーニングサービスに従業員を登録する機能をマネージャーに提供するオンラインショッピングカートを作成しています. 登録されたすべての従業員のサービスに対して 49 ドルを請求します。ただし、これと従来のショッピング カートとの主な違いは、プログラムに登録されている「各」従業員に関する確かな量のデータを収集する必要があることです。この情報は、登録/購入時に雇用主から提供されます。
マネージャーとして、個人情報を入力し、登録する従業員数を選択します。現在、7 人の従業員を処理するようにサイトをセットアップしていますが、実際には最大 30 人まで処理する必要があります。私が抱えている問題は、動的機能の欠如と巨大なファイルサイズ (特に検証中) です。
各ファイターの情報は、次のようなセッション スーパー グローバルに渡され、保存されます。および $_SESSION['F1SSN3']; 等々。これはクライアント側で簡単にオフにできるため、「別の登録者を追加」ボタンに JavaScript を使用したくありません (使用しません)。
私の仮定は次のとおりです。
1) 新しいファイターごとに変数を動的に追加して、オンライン データベースに保存し、テスト センターに渡すことができるようにする必要があります。たとえば、従業員 1 の名前は F1FirstName です。従業員 12 の生年月日は F12DOB1 などです。
2) 各従業員の検証は、個々のフィールドに基づいて同じになります (すべての名が同じテストに合格する必要があります)。すべての電子メール アドレスの検証は、同じ電子メール検証テストに合格する必要があります。これを個々のレコードごとに単純に作成すると、検証ファイルが非常に大きくなります。どういうわけか Firstname 配列を追加する必要があると考えていますが、完全にはわかりません。
3)これをスケーラブルにする必要があるということは、ある意味で、マネージャーに最大 100 人の従業員を登録してもらいたいということです。
4) 前述したように、これはショッピング カートのようなもので、マネージャーはすべての従業員を一度に登録して、1 回のトランザクションですべての従業員の支払いを行うことができます。
誰かアイデアはありますか?
php - PHP $_SERVER['SERVER_ADDR']変数は常に127.0.0.1を返します
同じPHPWebアプリ(LAMP)を実行している複数の負荷分散されたWebサーバーマシンがあり、各サーバーでわずかに異なるコードを実行したいと思います(テスト目的で)。$_SERVER['SERVER_ADDR']
私はこのようなことをするためにスーパーグローバルを使用することを望んでいました:
$_SERVER['SERVER_ADDR']
残念ながら、両方のマシンが「127.0.0.1 」に設定されているため、これは機能しません。$_SERVER['SERVER_ADDR']
パブリックIPアドレスに設定されるように構成するにはどうすればよいですか?
この問題は何か関係があるのではないかと推測している/etc/hosts
ので、参照用に現在は次のようになっています。
アップデート...
おっと!Webサーバーの前でnginxリバースプロキシを検討することを怠りました。これらのWebサーバーへのすべてのトラフィックは、nginx confの次の行が原因で、nginxから到着します。
php - PHPでスーパーグローバル`$_SERVER['PHP_SELF']`を使用する利点は何ですか?
スーパーグローバルを使用する利点は何$_SERVER['PHP_SELF']
ですか?
php - PHPでスーパーグローバルを直接使用するのは良いことですか、悪いことですか?
したがって、私は PHP のバックグラウンドが豊富なわけではありません。また、整形式のコードでは、「スーパーグローバル」を直接使用する必要があるかどうか疑問に思っていました。たとえば、関数 say$_SESSION['x'] = 'y';
または if の途中で、通常は変数、そこから使用できる引数としてそれらを送信することをお勧めします。
次に、Doer->sess
Doer 内などからバージョンを使用します。(この方法の利点は、Doer
$_SESSION の使用が明確になることです。)
この問題に対して受け入れられている PHP 設計アプローチは何ですか?
php - スーパーグローバルに動的にアクセスする方法はありますか?
Web 開発者として、ログイン フォームやその他の「保存」操作のようなものに対して、私は常にこのアプローチを使用しています (入力変数に直接アクセスする危険性は無視しています)。
これを退屈でなく、DRY の原則 (一種) に沿ったものにするために、私はこれを作成しました。
スーパーグローバルにアクセスするために動的変数名を非常に巧妙に使用しているにもかかわらず、これは惨めに失敗します。
だから、私はこの醜いものを使って立ち往生しています:
私の質問: 2 番目のコード サンプルで試みているように、スーパーグローバル変数に動的にアクセスする方法はありますか? いいえの場合、3 番目のコード サンプルで行っていることを達成するためのより良い/より効率的な方法はありますか?
私の解決策: Tom Haigh's answer のおかげで、最終的なコードは次のとおりです。
php - $_POST および連想配列内の variable 変数
私はおそらく少し太っていますが、これに対する答えが見つからないようです。register globals がオンになっているサーバーから、オフになっているサーバーに移動しています。それは良いことですが、残念なことに、私は何年にもわたってレジスタ グローバルを ON にして作業することに慣れてきたため、ずさんなコードを書くことになりました。私は今それを修正しようとしています。
$_POST 内に可変変数を持つ古いコードを書き直そうとしています。
これがばかげた例であることはわかっていますが、解決しようとしている問題を示しています。以下は、レジスタ グローバルがオンの場合に機能します。
register globals をオフにしてこれを機能させるにはどうすればよいですか? 以下は明らかに機能しません。
お手柔らかにお願いします - 私はおそらく私が愚かであることを知っていますが、私はこれについて頭を悩ませることができないようです.
php - $_GET と isset()
if isset($_GET['whatever'])...
if ステートメントの残りの部分の前に試されています。E_NOTICEエラーはオフにするのに便利な方法であり、$_POST
変数についてはinitスクリプトに解決策があります..
これにより、自己投稿スクリプトがきれいに見えるようになります。
キーが何であるかわからない場合、これを動的に行う方法がわかりませんか? $_GET
変数について同様の解決策を見つけるのを手伝ってくれる人はいますか?
編集:
if ($_GET['whatever'] == "whatever");
設定されておらず、E_NOTICE
エラーがない場合は、単に false を返したいだけです。
編集:
不明確な場合は申し訳ありませんが、解決策を探している$_GET
わけではありません。達成したいことの例として$_POST
のみ使用しています。$_POST