![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
現在某サイトのサンプルを使用して、
セッションを使ってログインページを作っています。ソースは以下です。
ファイル名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);」 の部分がエラーになってしまいました。
No.1ベストアンサー
- 回答日時:
まず、データベースを使うには、データベースへの接続が必要です。
後、$fLoginIDは、$_POST['fLoginID']ですね。
データベース使用に関して、もう少し基礎を勉強してください。
リンクは、MySQL関数のリファレンスです。
まず、接続してそれからSQLを実行、結果を取得します。
生のRDBMSの関数を使うのもいいのですが、RDBMSごとに色々違いますので、PEAR:DBか、PHP5でしたら、PDOを使ったほうが良いかもしれません。
何を使うにしろ、まずは接続です。
このソースの某サイトはどこか知りませんが、SQLインジェクション攻撃できそうですね。
セキュリティ的にかなり、やばいサイトです。
ユーザーからの、入力をそのままSQLに組み込むと、SQLインジェクション攻撃ができることもあります。
あまり、参考としてはいいサイトじゃないでしょう。
RDBMSの種類にもよりますが、複数SQLを一回のクエリーで実行できるようなRDBMSですと、ユーザーテーブル全件削除できそう・・
参考URL:http://www.php.net/manual/ja/ref.mysql.php
ありがとうございます!!
たしかにデーターベースに接続してませんでした。
ここについてはすでに勉強したのでなんとかなりました。
そしてちょっと質問の際に載せたプログラムも変えました。安全性という点では、おっしゃるとおり改善しないといけないですね。
ただなにゆえまだ初心者ですので、まずは簡単なプログラムを作成できるようにして、そこから、ご指摘されたとおり安全性の面でもその他の面でも改善できればいいなと思います。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- PHP php ログイン 1 2022/11/01 00:24
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ImageCreate関数が undefined f...
-
PHPMailerのサンプルコードのエ...
-
csobjは削除しても平気??
-
onedrive にexcelファイルをア...
-
.phpと.incファイルの違いはな...
-
トランザクションが原因?DBに...
-
フォントの色を変えるには?
-
現在位置より2つ上のディレク...
-
CFileDialogの最初のディレクト...
-
VBSの「MsgBox」について
-
HPを開くとダウンロードページ...
-
3つ以上の論理積は利用可能なの...
-
php文字列中のシングルクオート...
-
PHPのif文でその処理を途中で抜...
-
MySQLでのdeadlockをPHPで検出...
-
.phpファイルが、表示されない
-
FTPコマンドでディレクトリごと...
-
C# メール送信ついて困っています
-
URLの変わらないページをPHPで...
-
「@$変数」の「@の意味は?」
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ImageCreate関数が undefined f...
-
PHPMailerのサンプルコードのエ...
-
仮想フレームバッファXvfb上でf...
-
pdflib /pdi の拡張関数が有効...
-
Pear::QuickFormの代わりにな...
-
sformmmail2を使ったお問い合わ...
-
値の受け渡しが出来ない。
-
smartyについて
-
PHPでのAmazonAPI認証スクリプ...
-
xoopsのインストール時に生じる...
-
MAMPでsqlをインポートできない
-
soapclient
-
メール送信
-
phpで処理分岐して別のphpを呼...
-
何故unexpected ';'が出るので...
-
HTMLからPHPを呼び出すには
-
Parse errorが表示されない
-
PHP認証がProxy越しだと通らな...
-
セッションを使ったログインペ...
-
【初歩】 極単純なFOR文がなぜ...
おすすめ情報