問題タブ [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.

0 投票する
2 に答える
815 参照

php - スーパーグローバルをラッパークラスのプロパティとして保存する必要がありますか、それとも直接アクセスする必要がありますか?

PHPスーパーグローバルに直接アクセスする必要がないように、のラッパーSessionを作成したかったのです。Requestスーパーグローバルのラッパーを作成して使用すると、ラッパークラスをモックできるため、アプリケーションの単体テストが簡単になることに気付きました。

ラッパークラスを作成しようとしているときに、いくつかのサンプルラッパークラスを調べました。それらのいくつかは、初期化時にスーパーグローバルをクラスプロパティとして格納します。

私の質問:ラッパークラスを作成するときに、スーパーグローバルに直接アクセスするのではなく、クラスのプロパティとしてスーパーグローバルを格納する特別な理由はありますか?上記のコードを次のコードと比較してください。

IMO、とにかくラッパークラスがモックされるので、なぜスーパーグローバルをクラスプロパティとして保存するのが面倒なのですか?多くの人がこれを行う特別な理由はありますか?スーパーグローバルに直接アクセスするのではなく、ラッパーのプロパティとしてスーパーグローバルを保存する必要がありますか?

ご入力いただきありがとうございます。

0 投票する
2 に答える
2308 参照

php - codeigniterのリダイレクト機能に問題があります

これはn00bのトピックかもしれませんが、とにかく、私はこのバグでかなり困難で奇妙な時間を過ごしてきました。基本的には、フォームを表示するページのコントローラーメソッドに取り組んでいました。$this->input->post基本的に、私は次のようにcodeigniterの関数を使用してフォーム入力をvarダンプすることにより、フォームの送信データをデバッグしていました。

これは1日おきに機能しましたが、今日、投稿変数をブラウザーにダンプすると、フォームを送信したときに値があったとしても、値がないかのようにfalseが返されることがわかりました。次に、次のように、PHPのPOSTスーパーグローバル配列を介して変数に直接アクセスしてみました。

そしてそれも空に戻ったので、私は次のようにpost配列全体をダンプしようとしました:

フォーム全体に記入したにもかかわらず、空でした。それにもかかわらず、MySQLデータベースのレコードは更新されていました(つまり、$ _ POST変数が空のように見えてもフォームは送信されていました)。

また、通常、リダイレクト関数呼び出しの前にコントローラー関数に変数をvarダンプすると、「ヘッダーは既に送信されました」というエラーが発生するはずですが、発生しなかったと考えました。変数をダンプする代わりに、想定される成功ページにリダイレクトされました。

そのため、約2時間、POSTデータが送信されていないと思い、コードのエラーを再確認し、スクリプトで原因のステートメントが見つかるまで、ステートメントを1つずつコメントアウトし始めました。

最後に、次のように、成功メッセージをリダイレクトするコードのチャンクをコメントアウトしました。

その後、スクリプトは、codeigniterの$this->input->post関数と$_POSTスーパーグローバル配列を使用して、以前のすべての変数ダンプのダンプを開始しました。

さて、ヘッダーが送信される前に変数ダンプが出力を送信しているにもかかわらず、スクリプトが実際にリダイレクトする場合は、$_POST変数が空に見える理由がわかります。

では、本当の問題は、ヘッダーが送信される前に出力を送信したにもかかわらず、スクリプトがリダイレクトされるのはなぜですか?誰かがこれを経験したことがありますか?

これに関する助けをいただければ幸いです。

編集:ビューのロードに関して、ここに私のスクリプトの簡略化されたバージョンがデバッグvardumpステートメントのように見えます:

0 投票する
3 に答える
769 参照

php - スーパーグローバル$_SESSIONを上書きしても安全ですか?

スーパーグローバル$_SESSIONを特殊なセッションオブジェクトで上書きしても安全ですか?

0 投票する
6 に答える
20730 参照

php - $_COOKIE値が空かどうかを確認する

変数にCookieを割り当てます。

$user_cookie受け取った値があるかどうかを確認するにはどうすればよいですか?

私はif (empty($user_cookie))何か他のものを使うべきですか?

0 投票する
3 に答える
178 参照

php - 環境が仮想ホストであるかどうかを区別する方法は?

私はここにこのコードを持っています:

また、APP_URLはHTMLテンプレート全体で使用されます。問題は、構成を可能な限りユニバーサルにする必要があるため、環境を切り替えるときに行うことが少なくなることです。

これで、プロジェクトの仮想ホストを構成したときにこのように機能しますが、仮想ホストではなく、ローカルホスト/myproject/のようなものである場合-$config['SUBFOLDER']を手動で設定する必要があります/私のプロジェクト/

これをプログラムで行うにはどうすればよいですか?

0 投票する
1 に答える
385 参照

php - 自分のスーパーグローバル変数をPHPファイルに保存しますか?

私は何百ページもあるウェブサイトを構築しています。これらの各ページには、次のようなタイトルが付けられます。

世界で最高のウェブページ-Stackoverflow

上記のように、すべてのページにはページタイトルの後にサイト名があります。

サイト名をある種のグローバル変数に格納したい。

これは、サイト名が変更された場合に備えて、何百ものページタイトルを手動で変更する必要がないようにするためです。

これで、名前をファイルに保存し、require_oneを使用して名前を含めることができます。

しかし、私はもっとエレガントな解決策を望んでいました。これにより、タイトルをphpファイル内に保存し、PHPGETなどを呼び出すのと同じ方法で呼び出すことができます。

0 投票する
2 に答える
111 参照

php - PHPでphpファイルを作成する

私は私のプロジェクトのインストーラーに取り組んでおり、インストーラーは構成ファイルを作成します。

私はそれを99.99%正常に動作させていますが、そのファイルでは、ハッキングが直接アクセスできないことを確認するためにチェックが必要であり、そのコードは $_SERVER スーパーグローバルを使用しています。私が行こうとしているロジック。

スーパーグローバルを解析せずにそのままにしておくことができることを誰かが知っていますか、それともロジックを再考して他の場所に追加する必要がありますか?

コードを見たい人のために、ここにあります:

0 投票する
3 に答える
181 参照

php - スーパーグローバル $_GET でキーと値のペアの順序は保証されていますか?

$_GET スーパーグローバル変数のキーと値のペアの順序は、要求された URL でフィールドと値のペアがどのように受信されたかと一致することが保証されていますか?

たとえば、Web サーバーが次の URL 要求を受信したとします。

...そしてこのコード:

...結果は常に次のようになることが保証されます:

$_GET または一般的なスーパーグローバルの PHP ドキュメントで、キーの順序付けについての言及は見当たりませんでした。これにより、キーと値のペアの順序は信頼できないと思います。

注文に一貫性が保証されているかどうか、またはこれを明確にする仕様/ドキュメントを指し示しているかどうかを誰かが知っていますか?

0 投票する
4 に答える
5378 参照

php - $_SERVER['SERVER_ADDR'] は常に設定されていますか?

$_SERVER['SERVER_ADDR']常に設定されていますか?

isset() で確認する必要がありますか、それとも不要ですか?

127.0.0.1/localhost かどうかを確認できるように、サイトの IP を取得する必要があります。

0 投票する
4 に答える
1859 参照

php - アップロードされたファイルが post_max_size php を超えているときにエラーを表示するには?

アップロードされたファイルがpost_max_sizephpを超えているときにエラーを表示するには?

を超えたときに空の配列を取得しますpost_max_size

これをphp.netから入手したのですが、よくわからずやり方がわかりません、

投稿データのサイズが post_max_size より大きい場合、$_POST および $_FILES スーパーグローバルは空です。これはさまざまな方法で追跡できます。たとえば、データを処理するスクリプトに $_GET 変数を渡し、$_GET['processed'] が設定されているかどうかを確認します。

これが私のフォーム、