0

目的:ホストがローカルホストであるか、Zend Frameworkの1つの場所で開発サイトのホストであるかを判断し、セッション変数を介してサイトの残りの部分でその判断を使用できるかどうかを知りたいです。

詳細:私は少人数のグループでウェブサイトに取り組んでいます。svnツールを使用してコードをマージし、変更や追加を開発サーバーに移動する前にローカルホストでテストしています。すべてのプラットフォームで同じコードが使用されているためgethostname()、phpで使用して、ローカルホストまたはサーバーを介してサイトにアクセスしているかどうかを判断します。これが必要なのは、ファイルパスを適切に設定できるようにするためです(http://localhost/images/dog.jpgvs https://mysite.com/images/dog.jpg)。最初に、これが機能するたびに、public function init()そのページ全体で使用する適切な文字列を含む変数$hostをコントローラーに設定しました。次に、$ hostをセッション変数に入れるように切り替えました。これにより、冗長なコードの量が大幅に減少しました。しかし、これを1か所に設定する方法があると確信していますそしてそれで終わります、しかし私はこの場所がどこにあるかわかりません(Zendフレームワーク内で)。ユーザーが他の場所から入力する可能性があるため、インデックスのランディングページは機能しません。私の推測では、レイアウトに設定することでしたが、レイアウトコードの実行がページの読み込みプロセスに遅すぎるため、エラーが発生します。ホストを決定するためのより良い場所はありますか?レイアウトコード内で優先順位を付けて、ページで必要になる前に何らかの方法で実行する方法はありますか?

コード:

if(!isset($_SESSION['hostname'])){
  $hostname = gethostname();
  if ($hostname == 'prodserver') { 
    $_SESSION['hostname'] = 'https://mysite.com'; 
  } else { 
    $_SESSION['hostname'] = 'http://localhost'; 
  }
}

私たちの現在の方法はうまく機能しますが、もっと良い方法があるはずだという気持ちを揺るがすことはできません!あなたがそれを知っているなら-私はそれを聞きたいです。ありがとう!

4

1 に答える 1

2

コメントの質問に答えるために、いいえ、セッション変数は定義上ユーザー固有です。ただし、ZFは(慣例により)APPLICATION_ENV環境固有のチェックを行うために使用できる定数を設定します。を介して変数(baseUrlを含む)を設定することもできます。application.iniは、必要に応じて質問の問題をどのように解決しますか。

于 2013-03-04T19:00:41.537 に答える