セッション
phplibを使わないでユーザ認証を用いたwebサイトを作ろうと思います。
shinki.php => login.php => contents1.php=> contents2.php ....
のような流れの構造で、直接contents1.phpなどに入られないようにセッションを使用したいと思います。
ユーザが持っているセッション名と、サーバー側のセッション名が一致するという条件だけでログインしたユーザと考えていいのでしょうか?
現在はこのような感じになっています。
まずshinki.phpでユーザー登録します。この時ユーザ情報と暗号化されたパスワードをDBに保存。
login.phpでユーザIDとパスワードを入力し、DBのデータと一致するとcontents1.phpに進む。この時セッションを発行し、idと暗号化されたパスワードをセッションに記憶させる。
contents(1 | 2).phpのコード
<?
session_start();
// PostgreSQL 接続
if (!($cn = pg_connect("dbname=****"))){die;}
// SQL文
$sql = "select * from ***** where id='$_SESSION[id]'";
if (!($rs = pg_exec($sql))) {die;}
$ct = pg_numrows($rs);
for ($i = 0; $i < $ct; $i++) {
$array = pg_fetch_array($rs, $i);
}
// セッションのパスワードとデータベースのパスワードが一致
if($_SESSION[pass] == $array['pass']){
login_html();
}else{
print "ログインしてください。";
}
// PostgreSQL 切断
pg_close($cn);
function login_html(){
print "<html><head><title><title></head><body>";
....
....
}
?>
このような構造には、セキュリティー的な問題はあるのでしょうか?
おそらくいろいろ問題があると思いますので、ご指導お願いします。
一般的なパスワード制のページではどのような処理をしているのでしょうか?
よろしくお願いします。
os:linux
httpd:apache1.3.27
postgreSQL
php4.x.x
補足
セッションでユニークユーザのようなだれが来たか判断することはできるのでしょうか。