• 締切済み

ユーザー認証でSQLのデータと一致するものだけをログインできるようにするには

PHP初心者です。 タイトルが長くなり、申し訳ありません。 ユーザーのBASIC認証ダイアログを表示させ、データベースのテーブルに書かれたデータと一致するものだけをログインできるようにするにはどうしたら良いでしょうか。 まずデータベースにあるテーブルからIDとパスワードを抽出します。 でも、この場合変数は配列になりますよね。 その配列の変数の宣言の書き方とデータ照合を一致させる方法を知りたくて質問しました。 どうぞ宜しくお願い致します。

  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

DBがMySQLならmod_auth_mysqlを使うといいでしょう。

persona
質問者

お礼

アドバイスありがとうございます。 MySQLだったらいいんですけど、残念ながらSQLiteManagerです。 でも、mod_auth_mysqlってzip形式のは無いんですね。

関連するQ&A

  • SESSION機能を使ったログイン認証

    SESSION機能を使ってログイン認証をPHPで作りたいのですが・・・ いろいろなサイトを回ってみてもPEARを使ったものやBASIC認証のものばかりでどうも・・・うまくいかないのです。 何かやり方もしくはいいサイトご存知でしょうか? ・dbにあるパスワードとメールアドレスを入力したパスワードとメールアドレスに照合したもの ・パスワードとメールアドレスに合った会員の方の名前を「ようこそ○○さん」と表示したい

    • ベストアンサー
    • PHP
  • ログイン画面を通過済み(認証済みユーザ)の判定

    ログイン画面でユーザとパスワードを入力し、ログインできたユーザがいたとして、 その後の、画面Aでも、画面Bでも、 認証済みのユーザかどうかをチェックしたいです。 すべての画面で、データベースサーバのユーザ情報テーブルをチェックするのはなんか頂けないと思っているのですが、 何かよい方法はあるのでしょうか? .

  • ログイン認証機能には、どんな選択肢がありますでしょうか?

    いつもお世話になっております。 環境:PHP5/SQLite3/Apache/Linux ユーザIDと ログインパスワードによる、 ログインページつきのサイトを考えておりますが、 どんな選択肢があり、 また、その中から、どのような基準で選択すれば良いのか等、 分からないことだらけです。 何らかの指針を与えてもらいたく思い、質問させて頂きました。 私が実際に使ったことのある方法に、 Basic認証という方法がありますが、 (PHPを使っていない技術ですね。) 私が今回想定しているログイン認証は、 ユーザが自由にIDとパスワードを決められる仕様で 考えておりますので、このBasic認証は候補から除外致します。 ・ユーザ数は、1~100人くらいを想定、 (場合によっては、~500人くらいになる可能性もあります) ・ユーザ名、パスワードはそれぞれ半角英数字で問題ありません。 また、PHPでログイン機能を構築する場合、 そのセキュリティの程度についても気になっています。 //------------------------ 質問は以上です。 回答頂ければ、適宜、補足等させて頂きますので、 どうぞよろしくお願い致します。

    • ベストアンサー
    • PHP
  • 【Access】部分一致で不一致データを抽出したい

    クエリで2つのテーブルから、不一致データを抽出したいのですが、 完全一致だけでなく部分一致のデータも一致データとして取り除きたいです。 [テーブルA]フィールド1 000-0001 000-0001A 000-0002 000-0003 000-0004 [テーブルB]フィールド2 000-0001 000-0002 というようなデータで、結果は [結果] 000-0003 000-0004 というふうにしたいです。 (000-0001だけでなく000-0001Aというデータも取り除きたいのです。) Access初心者で、クエリウィザードを使用した重複データ抽出、不一致データ抽出、 およびクエリデザインを使用した重複データ抽出が何とかできる程度です。 初心者でも分かるようにご回答いただければ大変助かります。 よろしくお願いいたします。

  • PHP、SQLite3のデーターでログイン認証

    PHP、SQLite3のデーターベースでログイン認証をさせたいのですが、うまくいきません。 MySQL用のコードを自分でSQLite3用に改造したのですがやはり駄目でした。 コードは以下の通りです。 <?php // セッションの生成 session_start(); // ユーザー名/パスワード $usrid = htmlspecialchars($_POST['usrid'], ENT_QUOTES); $usrpw = htmlspecialchars($_POST['usrpw'], ENT_QUOTES); //データーベース接続 require_once('dbcon.php'); // データベースへの問い合わせSQL文 $sql = 'SELECT id,name FROM meibo WHERE usrid = "'.$usrid.'" AND usrpw = "'.$usrpw.'"'; $sth = $dbh->prepare($sql); $sth->execute(); // 認証 if ($row = $sth->fetch() == 1) { // ログイン成功 $login = 'OK';       $row = $sth->fetch();       // データーをセッション変数に保存 $_SESSION['id'] = $row->id; $_SESSION['name'] = $row->name; $_SESSION['usrid'] = $row->usrid; echo 'ログインに成功しました。'; } else { echo 'ログインに失敗しました。'; } //データーベース切断 $dbh = null; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Insert title here</title> </head> <body> <?php echo $_SESSION['id']; ?><br /> <?php echo $_SESSION['name']; ?><br /> <?php echo $_SESSION['usrid']; ?><br /> </body> </html> データーの表示、追加、削除は可能な状態です。 根本的に間違っているのでしょうか?またはちょっとした手直しで問題解決できるのでしょうか? お分りの方いらっしゃいましたらお教えください。

    • ベストアンサー
    • PHP
  • ログイン後・・・

    こんにちは。サイトを作っているperl初心者です。 TOPページからログインして、メイン画面を表示させたいのですが、つまづいてます。 使用している言語はperl5、データベースはmysql4です。 今「TOPページのcgiのログインフォームからデータを取り、mysqlに接続してデータベースのデータ(id、パスワード)を検索し、 一致するデータがあれば仮にテーブルにして表示させる」ところまではできています。 このテーブルを表示せずに、メイン画面を表示させるためにはどうすればよいのでしょうか? くだらない質問でしょうが、よろしければ回答を。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • PHPでパスワード認証

    PHPでパスワード認証をしたいです。 パスワードは、複数あり、テキストボックスにそのどれかが入力されてログインボタンを押すと、パスワードが一致していれば、ログインを許可します。 認証のセッションは、クッキーに記憶して、一定期間有効にしたいです。 また、パスワードは適宜増える可能性があります。 宜しくお願いします。

    • ベストアンサー
    • PHP
  • SQL 完全に一致したデータを検索抽出

    SQLのテーブルから完全に一致したデータを抽出するにはどうすればよいでしょうか。 仮に、dayとweatherの2つのカラムでテーブルを作成 <?php /* 検索フォーム */ ?> <form action = "index.php" method="post">           <table> <tbody> <tr> <th>月</th> <th>天気</th> </tr> <tr> <td><input type="text" name="day"></td> <td><input type="text" name="weather"></td> </tr> </tbody> </table> <input type="submit" name="submit" value="検索"> </form> <?php /* 検索 */ ?> <?php ~略~(SQLを呼び出す) $pdo = connect(); $st = $pdo->query("SELECT * FROM table WHERE day LIKE '%" . $_POST["day"] . "%' ); $word = $st->fetchAll(); ?> とします。 カラム「day」の中に「2」「12」「25」のデータが入っていたとします。 この場合、検索フォームで「2」と入力して検索すると 「2」「12」「25」全てのデータが抽出されます。 そうではなく、「2」のデータだけが抽出されるにはどうしたらよいでしょうか? 検索フォームを作る時は、上記のLIKEを使ったものしか知らないので、困っております。 何卒よろしくお願いします。

    • ベストアンサー
    • MySQL
  • SQL Serverの認証方法について

    SQL Serverについて学習中です。 認証方法の違いについてご教示ください。 SQL Serverには「Windows認証」と「SQL Server認証」の二つの認証方法があるところまでは理解したのですが、ネット検索や手元の資料をみても具体的なものが見えてきません。 (1)「Windows認証」でSQL Serverに接続するには: クライアントPCのWindowsアカウント名/パスワードが、SQL ServerがインストールされているPCに登録されているWindowsのユーザー名/パスワードと一致している必要がある。(一致していても、SQL Serverの設定で接続を拒否されていると接続できない) (2)「SQL Server認証」でSQL Serverに接続するには: SQL Serverの「ログイン」(←Windowsのアカウントではない)に登録されているユーザー名/パスワードと一致すれば、クライアントPCのWindowsアカウントのユーザー名/パスワードが何であっても、データベースに接続できる。 認証方法の違いについては、上記このような理解でよいのでしょうか?? しかし実際には「SQL Server認証」を選択すると、SQL Serverのユーザー名/パスワードだけでなく、Windowsアカウント名/パスワードも一致していないと接続できないように思えます。 つまり 「Windows認証」は「Windows認証だけ」で 「SQL Server認証」は「Windows認証 + SQL Server認証」(両方一致しないといけない) なのではないかという気がしています。 VBやVC#等でローカルアプリを作って複数で使用したいのですが、クライアントPCのアカウント名まで管理するのは厄介です。XPパソコンをAdministratorで使用している人がたくさんいて、Windows認証をクリアできないからです。 クライアントPCのアカウント名やパスワードに関係なく、SQL Serverに登録されたユーザー名/パスワードだけで接続するには、どうしたらよいのでしょうか? よくわかっていないので、よくわからない質問になってしまっていると思いますが、よろしくお願いします。 質問の意味がわからないところは補足しますので、ご指摘ください。

  • PHPのログイン認証管理について

    PHPのログインシステムを開発することになったのですが、一般的に どういった手法がとられているのかお伺いしたくこちらに書き込ませて いただきました。 私が現在実装しているものは、下記となります。 ■ログインフォームからの入力値と照合させ、通った場合、下記の   ようにsession_idをセッションに保存   $_SESSION['authentication'] = sha1(session_id()); ■ログイン後はDBとの通信はせず、上記で保存されたセッション   情報を照合させることにより、認証させる。 if($_SESSION['authentication'] == sha1(session_id())){   認証成功処理 } else{   認証エラー処理 } なにか足りない点や、セキュリティ等の考え方から根本的に誤りが ある場合は、ご指摘いただけますと幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • PHP