PostgreSQL(5)-POSTとSESSION-

PostgresSQLの接続を維持する為の手段として、POSTの仕組みを使用する事ができます。

index.php

//formタグのmethod属性で送信方法を指定、action属性で移動先ページを指定
<form method="post" action="login.php">
//inputタグのtype属性で移動先ページへ渡す情報入力欄を作成
<table>
<tr><td>データベース名</td><td><input type="text" name="dbname" value='$dbname'></td></tr>
<tr><td>ユーザ名</td><td><input type="text" name="user" value='$user'></td></tr>
<tr><td>password</td><td><input type="text" name="pass" value='$pass'></td></tr>
</table>
//inputタグのtype属性をsubmitとして、送信ボタンを作成
<input type="submit" name="start" value="実行">

login.php

//index.phpで入力されたデータを取得
$dbname = $_POST['dbname'];
$user = $_POST['user'];
$pass = $_POST['pass'];
//dbに接続
$con = pg_connect("dbname='$dbname1' user='$user1'password='$pass'");
if ($con == true) {echo "dbに接続できました<br/>\n";}

このようにPOSTを使用する事で、dbnameやuser、passwordを別のページヘ送り、PostgreSQLとの接続を維持する事ができます。

しかし、POSTはURLに属性情報を追加する事で、inputタグに付与した情報を送付するので、セキュリティ上、問題もあります。

毎回、データベースを接続する為に、URLに情報を付与するのは問題です。

そこで、SESSION機能を使用します。

login.phpを少々改良します。
login.php

//SESSIONを開始する
session_start();
//index.phpで入力されたデータを取得
$dbname = $_POST['dbname'];
$user = $_POST['user'];
$pass = $_POST['pass'];
//dbに接続
$con = pg_connect("dbname='$dbname1' user='$user1'password='$pass'");
if ($con == true) {echo "dbに接続できました<br/>\n";}
$_SESSION['dbname'] = $_POST['dbname'];
$_SESSION['user'] = $_POST['user'];
$_SESSION['pass'] = $_POST['pass'];
header( "Location: ./session.php" ) ;

session.php

//login.phpで入力されたデータを取得
$dbname = $_SESSION['dbname'];
$user = $_SESSION['user'];
$pass = $_SESSION['pass'];
//dbに接続
$con = pg_connect("dbname='$dbname1' user='$user1'password='$pass'");
if ($con == true) {echo "引き続きdbに接続できました<br/>\n";}
session_destroy();

このように入力した情報を保持する事ができます。

SESSIONはサーバー側に必要な情報を保持するので、POSTより安全です。

POSTとSESSIONについて見てきましたが、あとCOOKIEも関係してきます。

実際にSESSIONを使用して、情報を取得するにしても、何かしらのキーが必要です。

このキーはCOOKIEに保存される事が多いです。

参考書籍

今すぐ導入! PHP×PostgreSQLで作る最強Webシステム改訂版 [ 石井達夫 ]