2009-08-13 9 views
1

データベース接続変数の宣言を1つしか持てませんか?$dbconnPHPのデータベース接続変数を理解する

ユーザーが認証されていない場合は私のログインスクリプトがfollowing procedure

  1. に基づいており、彼は、ユーザーが認証されると、彼は$_SESSION["logged_in"] = true;
  2. を取得し、バック、ログインページ
  3. にスローされます次に、ユーザーがメインページまたは認証が必要な他のページをブラウズしているときに、$ _SESSION ["auth"]が設定されているかどうかを確認するだけです。

私は私のindex.phpの先頭にデータベース変数を持っている:

$dbconn = pg_connect("host=localhost port=5432 dbname=masi user=masi password=123"); 

は、私は私のコードでdb_close()どこでも、接続をしないでください。 自分のログインスクリプトを自分のデータベースを使用しているindex.phpにソースします。

しかし、スクリプトにも変数宣言がない場合、dbにアクセスできないという標準的な警告が表示されます。スクリプトのそれぞれに宣言を追加すると、dbにアクセスできます。

答えて

2

ここでは、PHPがどのようにショーを実行しているのかを理解してから、データベース接続の幅広い世界を詳しく調べる必要があります。

各PHPページリクエストは、新しいPHPスクリプトを起動します。セッションを有効にしているかもしれませんが、それは内部のPHP構造体のみです。データベースは、これをサーバーに接続する新しい接続/プロセスとみなします。したがって、pg_connectコードを呼び出す限り、データベースの新しいプロセスが作成されます。それ以外の場合、Postgresはあなたが誰であるか、どのセッションを使用したいのか分かりません。さらに、親プロセスが終了すると、一般にPostgresセッションが終了します(この場合、PHPスクリプトが実行され、終了すると終了します)。時には、これらはゾンビをPostgresの通りを回るままにすることができますが、全体的に、それはちょうどそれらを殺すでしょう。

PHPスクリプトでSQLコードを使用する場合は、スクリプトでデータベースに接続し、Postgresを呼び出す必要があります。

+0

を働くだろうindex.phpでからlogin.phpを必要に応じて

私はちょうどデータベース-connectionを持つファイルから変数を取得するための一つの方法は、DBからデータを保存することであることが判明しましたその変数を関数のパラメータとして第2のファイルに渡すことができます。 –

0

あなたの他の質問を覚えていれば、login.phpにリダイレクトしていますか?これは、別のページで初期化されたため、dbconn変数が存在しないことを意味します。あなたはそれが


$dbconn = pg_connect("host=localhost port=5432 dbname=masi user=masi password=123"); 
require_once('login.php'); 
+0

私の実験では、この事実は真実ではないことがわかりました。index.phpから$ dbconn宣言をコードに2回入れないでlogin.phpが必要です。これは2つの警告です。 $ dbconn変数をlogin.phpに追加する必要があるようです。 –

+0

はlogin.phpクラスまたは関数ですか?そうであれば、必要な変数スコープはありません。グローバル$ dbconnを使用しない限り、機能/クラス内から – rezzif

+0

それはどちらもありません。私は多くのPHPファイルのコードを持っています。 –

関連する問題