※ ChatGPTを利用し、要約された質問です(原文:セッションを使ったログインページでのエラー)
セッションを使ったログインページでのエラー
このQ&Aのポイント
セッションを使ったログインページでのエラーが発生しました。
現在、某サイトのサンプルを使用して、セッションを使ってログインページを作成しています。
エラーの原因は、プログラムがPostgreSQLを使用しているため、MySQLを使用する場合にエラーが発生することです。
現在某サイトのサンプルを使用して、
セッションを使ってログインページを作っています。ソースは以下です。
ファイル名loginPage.php
<?
session_start();
?>
//一部省略
<form action="loginExe.php" method="POST">
ログインID:<input type="text" size="15" name="fLoginID"><br>
パスワード:<input type="password" size="8" name="fPassword"><br>
<input type="submit" value="ログイン">
//以下省略
ファイル名loginExe.php
<?php
session_start();
$sql = "select password from userLogin where uid='$fLoginID'";
$r = pg_exec($SessDBConn, $sql);
if( pg_numrows($r) != 1 )
{
print "アカウントが違う、もしくはユーザ登録されていません。";
print '<a href="regForm.php">こちらから登録してください。</a>';
session_destroy();
exit;
}
if( pg_result($r, 0, "password") != $fPassword ) {
print "パスワードが違います。";
session_destroy();
exit;
}
session_register("sLoginID");
session_register("sPassword");
$sLoginID = $fLoginID;
$sPassword = $fPassword;
?>
//以下省略
これで実行してみたのですが
Warning: pg_exec(): supplied argument is not a valid PostgreSQL link resource in C:\xampp\htdocs\loginExe.php on line 6
Warning: pg_numrows(): supplied argument is not a valid PostgreSQL result resource in C:\xampp\htdocs\loginExe.php on line 7
と
「$r = pg_exec($SessDBConn, $sql);
if( pg_numrows($r) != 1 ) 」
エラーが出てしまいました。調べてみたところ、このプログラムはPostgreSQLを使用した際に使うものであって、私のようにMySQLを使うとエラーが出てしまいます。
今回質問したいのはではエラーの出た部分をどのようにかえればMySQLを使ったプログラムとして実行してくれるのかということです。
ご存知のかたがいらっしゃいましたら、アドバイスの方よろしくお願いいたします。
ちなみにいろいろサイトを調べて、エラーのところを
$r = $db->getOneRow($sql);
if( $r->password != $fPassword || !$r ) {
に変えてみたのですが、
Fatal error: Call to a member function getOneRow() on a non-object in C:\xampp\htdocs\loginExe.php< on line 6と「$r = $db->getOneRow($sql);」 の部分がエラーになってしまいました。
お礼
ありがとうございます!! たしかにデーターベースに接続してませんでした。 ここについてはすでに勉強したのでなんとかなりました。 そしてちょっと質問の際に載せたプログラムも変えました。安全性という点では、おっしゃるとおり改善しないといけないですね。 ただなにゆえまだ初心者ですので、まずは簡単なプログラムを作成できるようにして、そこから、ご指摘されたとおり安全性の面でもその他の面でも改善できればいいなと思います。 本当にありがとうございました。