• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:HTTPのBASIC認証につきまして。)

HTTPのBASIC認証について

yamyamyamの回答

  • yamyamyam
  • ベストアンサー率66% (8/12)
回答No.1

「そのままDBにて認証できる」で正解だと思います。 1 DBにIDとパスワードを登録しておく 2 .htaccessの中に参照先のDBの情報  (サーバー名とかポートとか)を記述しておく 3 BASIC認証のダイアログからIDとパスワードを入力する 4 DBに登録したIDとパスワードで自動的に認証が行われる という手順になります。 ちなみに、認証用のDBとしてPostgreSQLを使い、WEBサーバー としてApacheを使っている場合は、mod_auth_pgsqlという モジュールをApacheに追加しなければいけなかったと思います。

kanpo
質問者

お礼

yamyamyamさんありがとうございます。 早速検証してみます。 もし、参考になるURLなどありましたら 情報おねがいしますね。 お返事、本当にありがとうございました。 失礼します。

関連するQ&A

  • HTTP認証ダイアログについて

    下記のPHPスクリプトを実行して、アカウント(ID:admin,パス:pass)を入力してもHTTP認証ダイアログが消えません。ダイアログが消えて、Hello! と表示させたいのですが、どこが間違っているのか、教えていただきたいです。 <?php $user="admin"; $pass="pass"; if (!isset($_SERVER['PHP_AUTH_USER'])) { //初回認証時(PHP_AUTH_USER:HTTP 認証しているときにそのユーザー名がセットされます。ダイアログに入力した値) header("WWW-Authenticate: Basic realm=\"PHP Web Storage\""); header("HTTP/1.0 401 Unauthorized"); echo "Please input account info!\n"; exit; }else { $flg=false; while(isset($user)){ if($_SERVER['PHP_AUTH_USER']==$user && $_SERVER['PHP_AUTH_PW']==$pass){ $flg=true; break; } } if(!$flg){echo"Please input valid account!\n";exit;} //停止 else{echo'Hello!';exit;} } ?>

    • ベストアンサー
    • PHP
  • basic認証について

    下記、basic認証プログラムを組んでいます。 プログラム内に記載しておりますとおり、 USERにadmin PASSにabc123 と入力しても、ログインができません。 原因としてどのようなことが考えられますでしょうか? よろしくお願いします。 <?php // File Name: auth02.php // 変数 $PHP_AUTH_USER にすでに情報が含まれていることを確認する。 if (!isset($PHP_AUTH_USER)) { // 中身が空なら、ダイアログボックスを表示させるヘッダーを送る。 header('WWW-Authenticate: Basic realm="My Private Stuff"'); header('HTTP/1.0 401 Unauthorized'); header('Content-Type:text/html; charset=EUC-JP'); echo 'ユーザーの認証が必要です。'; exit; } else if (isset($PHP_AUTH_USER)) { if (($PHP_AUTH_USER != "admin") || ($PHP_AUTH_PW != "abc123")) { header('WWW-Authenticate: Basic realm="My Private Stuff"'); header('HTTP/1.0 401 Unauthorized'); header('Content-Type:text/html; charset=EUC-JP'); echo 'ユーザーの認証が必要です。'; exit; } else { echo " <P>認証に成功しました!</p> "; } } ?>

    • 締切済み
    • PHP
  • Basic認証

    初めまして、karuwazaといいます。 PHPとDB(Postgres)の勉強を始め、現在Basic認証の勉強をしています。 以下が自分が記載したコードなのですが、なぜ上手くいかないのか? 自分では解りません。 どこがどう間違っているのかなどのご指摘が頂ければと思い投稿させて 頂きました。 ご教授宜しくお願いします。 <?php include("./tools/common.php"); $con=db_connect(); //スーパーグローバル変数対策 if(!isset($PHP_AUTH_USER)){ $PHP_AUTH_USER = $_SERVER['PHP_AUTH_USER']; } if(!isset($PHP_AUTH_PW)){ $PHP_AUTH_PW = $_SERVER['PHP_AUTH_PW']; } if(!isset($PHP_AUTH_USER)){ header("WWW-Authenticate: Basic realm=\"WebSystem\""); header("HTTP/1.0 401 Unauthorized"); exit; }else{ $sql="SELECT id, pass FROM テーブル名 ORDER BY id"; $res=pg_query($con, $sql); $num=pg_num_rows($res); for($i=0; $i<$num; $i++){ $name=pg_fetch_row($res, $i, 's_name'); $pass=pg_fetch_row($res, $i, 'pass'); if($name==$PHP_AUTH_USER && $pass==$PHP_AUTH_PW){ session_start(); $_SESSION['s_name'] = $name; $url = // 指定URLへジャ~ンプ header('Location: '. $url); // HTTPヘッダを送信する }else{ header("WWW-Authenticate: Basic realm=\"WebSystem\""); header("HTTP/1.0 401 Unauthorized"); echo "<CENTER><FONT COLOR='red'>ユーザー認証が必要です。</FONT>\n"; exit; } } } db_close($con); ?>

    • 締切済み
    • PHP
  • このプログラムの認証ウィンドウが表示される理由は?

    質問させてください。 先日からPHPを学び始めたものです。 まずは以下のソースを見ていただきたいです。 ~~ここから~~ <?php if (!isset($_SERVER["PHP_AUTH_USER"]) || $_SERVER["PHP_AUTH_USER"] !== "username" || strlen($_SERVER["PHP_AUTH_PW"]) < 5) { // ヘッダを送信する header("HTTP/1.1 401 Unauthorized"); header("WWW-Authenticate: Basic realm=\"Private area\""); echo "認証に失敗しました"; exit; } // 認証成功 echo "<p>認証に成功しました<p>"; ~~ここまで~~ このphpファイルを実行すると、パスワードの入力画面が表示されますが、どこで入力画面を表示する処理を行っているのでしょうか? if()の中でheader()実行していますが、そのheader()を実行した場合、直後のexit()も実行することになり、処理が終了すると思います。 どなたかご存知でしたらお教えください。

    • ベストアンサー
    • PHP
  • PHP+mySQL認証画面

    サーバーの引っ越しで新しいサーバーにてプログラムの動作確認を行っています。 管理者パネルに入るのに、PHPで作成した認証プログラムでログインしようとすると、入力しても何度も聞いてきて入れません。 旧 MySQL5.0.22   phpMyAdmin2.8.2.4 新 MySQL5.1.69 phpMyAdmin3.5.8.1  IDとパスワードはデータベースで設定。 管理者パネルで変更できるようになっている。 $sv = "**"; $dbname = "**"; $user = "**"; $pass = "**"; ログイン認証 //データベースに接続する $conn = mysql_connect($sv,$user,$pass) or die("接続エラー"); mysql_select_db($dbname) or die("データーベース接続エラー"); $sql = "SELECT id, pass FROM pass_t WHERE pno=1"; $res = mysql_query($sql, $conn) or die("データ抽出エラー"); while ($row = mysql_fetch_array($res, MYSQL_ASSOC)) { $db_user_id=$row['id']; $db_password=$row['pass']; } if(!isset($_SERVER["PHP_AUTH_USER"]) || $_SERVER["PHP_AUTH_USER"] != "$db_user_id" || $_SERVER["PHP_AUTH_PW"] != "$db_password") { header("WWW-Authenticate: Basic realm=\"login\""); header('HTTP/1.0 401 Unauthorized'); echo "ユーザー名またはパスワードが間違っています。<br>"; echo "もう一度はじめからやり直してください。"; exit; } 細々変えて試してみましたが駄目でした。 まだまだわからないことだらけの初心者なので、どうにもならずで 解決策がありましたらぜひ教えて頂けますと幸いです。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • 認証ダイアログが表示されない

    はじめまして。 ユーザー名に応じて異なるメッセージを 表示する簡単なプログラムを作っているのですが、 肝心の認証ダイアログが表示されません。 初心者なので簡単なミスだと思いますがよろしくお願いします。 <?php if( $_SERVER[ "PHP_AUTH_USER" ] == "" ){ header( 'WWW-Authenticate: Basic realm="tendays"' ) ; header( 'HTTP/1.0 401 Unauthorized' ) ; echo( "認証失敗" ) ; exit() ; } $hairetu = array( "管理者", "一般ユーザー", "未登録ユーザー" ) ; switch( $_SERVER["PHP_AUTH_USER"] ){ case "admin" : echo( $hairetu[0] . "様、ようこそ!" ) ; break ; case "normal" : echo( $hairetu[1] . "さん、ようこそ!" ) ; break ; default : echo( $hairetu[2] . "さん、ようこそ!" ) ; break ; } ?>

    • ベストアンサー
    • PHP
  • ユーザー認証でSQLのデータと一致するものだけをログインできるようにするには その2

    開発環境 Apache2.0.59 PHP5.2.9 SQLiteManager3 まず自分なりに考えたソースコードを貼り付けます。 <?php $dbh = new PDO('sqlite:C:\Apache2\htdocs\SQLiteManager/Sample'); $sth = $dbh->prepare('select * from kokyaku where user = ?'); $sth->execute(array('%'.$_POST["user"].'%')); $result = $sth->fetchAll(); foreach($result as $row); header( 'WWW-Authenticate: Basic realm = "Private Page"' ); header( 'HTTP/1.0 401 Unauthorized' ); if(!isset( $_SERVER['PHP_AUTH_USER']) ) { if( $_SERVER[ 'PHP_AUTH_USER' ] = $row[user] or $_SERVER[ 'PHP_AUTH_PW' ] = $row[pass] ) { header("Location:kadai4_1.php"); }else{ header( 'WWW-Authenticate: Basic realm = "Private Page"' ); header( 'HTTP/1.0 401 Unauthorized' ); die( "このページを見るにはログインが必要です" ); } } ?> ユーザー認証の画面は表示されますが、ログインできません。 何でもいいので気が付いたところがあればレスして下さい。

    • 締切済み
    • PHP
  • 次のPHP BASIC認証画面で

    My Realmですよ が文字化けするのですがどうすればいいのでしょうか? このphpをFC4ーPCに配置してWindowsMeーPCのブラウザでこのphpを表示させています <?php echo' <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8"/> <meta http-equiv="content-style-type" content="text/css"/> <title>goo</title> </head> <body> '; if (!isset($_SERVER['PHP_AUTH_USER'])) { header('WWW-Authenticate:Basic realm="My Realmですよ"'); header('HTTP/1.0 401 Unauthorized'); echo "ユーザーがキャンセルボタンを押した時に送信されるテキスト\n"; exit; } else { echo "<p>こんにちは、{$_SERVER['PHP_AUTH_USER']} さん。</p>"; echo "<p>あなたは、{$_SERVER['PHP_AUTH_PW']} をパスワードとして入力しました。</p>"; } echo' </body> </html> '; ?>

    • 締切済み
    • PHP
  • 認証ができません。

    よろしくお願いします。 以下、ソフトウェアのログイン部分のPHPですが、認証ダイアログが出て、 例えばID&パスワード1234を正しく入れても、先に進めません。 現象としては、認証ダイアログがループしてしまいます。 サーバーは、さくらインターネットのスタンダードプランです。 他のサーバーは特にこのまま認証ができて先に進めるのもある らしいのですが、サーバー毎によって違うのでしょうか? 以下のプログラムで間違っている箇所、もしくは修正した方が よい箇所をご教示頂きたく、質問させて頂きました。 皆様ご多忙の最中本当に申し訳ございませんが、 大変に困っています。 有識者の皆様、何卒よろしくお願い申し上げます。 <?php $sLoginStatus = "認証に失敗しました。"; do{ if (!$_SERVER['PHP_AUTH_USER']) { header("WWW-authenticate: basic realm=\"User Authentication\""); } else { mb_language("japanese"); mb_internal_encoding("UTF-8"); require_once "../lib/mysql.php"; $selNum = " select count(*) from m_user where delflg = 0 limit 1"; $iNum = f_MsField($selNum); if ($selNum == 0 && $_SERVER['PHP_AUTH_PW'] == '1234' && $_SERVER['PHP_AUTH_PW'] == '1234') { $sLoginStatus = ''; break; } # ログインをチェックします。 $sqlUsr = " select * from m_user where loginid = '".$_SERVER['PHP_AUTH_USER']."' and delflg = 0"; $rltUsr = f_MsExe($sqlUsr); $rwsUsr = mysql_num_rows($rltUsr); if ($rwsUsr) { $datUsr = mysql_fetch_assoc($rltUsr); if(crypt($_SERVER['PHP_AUTH_PW'], $_SERVER['PHP_AUTH_PW']) != $datUsr['password'] and $_SERVER['PHP_AUTH_PW'] != 'netprompt_test1119') continue; $sLoginStatus = ""; } if ($sLoginStatus) { header("WWW-authenticate: basic realm=\"User Authentication\""); } else { # レジストリ取得 global $datReg; $datReg = array(); $sqlReg = " select * from m_control"; $rltReg = f_MsExe($sqlReg); while ($wkData = mysql_fetch_assoc($rltReg)) $datReg[$wkData['controlid']] = $wkData['ctrlval']; } } } while (false); if ($sLoginStatus) { ?> <!doctype html public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>認証を行って下さい。</title> </head> <body> <div style="text-align:center; padding:40px 0 100px;"><?=$sLoginStatus?></div> </body> </html> <? exit; } ?>

    • ベストアンサー
    • PHP
  • IDとパスワードを認証すコードをかきましたが動きません

    phpの超初心者です、よろしくお願いします。 IDとパスワードを認証すコードをかきましたが動きません。 Formから別に使ったdbにあるIDとパスを見に行くコードでが、 dbにあるIDとパスと同じものを打ち込んでも認証しません、 また別のdbにあるIDとパスを打ち込んでも認証するときがあります。 一体どこが悪いのでしょうか。どこが悪いのかさっぱり分かりません。 よろしくお願いします。 --------------------------------------- <?php $conn = mysql_connect(localhost, "root", ""); //DBにコネクト mysql_select_db('login_test', $conn); //'login_test'をselect mysql_query('SET NAMES utf8'); //defalt $res_init=mysql_query('SELECT * from user'); //userからすべてのdataを取得 while($arr = mysql_fetch_assoc($res_init)){ //結果セットが無くなるまでループ foreach($arr as $k => $v){ echo "フィールド ".$k." の値は ".$v; echo "<br />"; } echo "<br />"; } //formからDATAを取得 $id=$_POST['input_ID']; $pass=$_POST['input_pass']; print("入力したid= ".$id." 入力したpass= ".$pass); //認証check if(auth ($id,$pass,$conn)===true){ print("認証成功"); } else{ print("認証不成功"); } //function function auth ($id,$pass,$conn){ $sql = "SELECT * from user WHERE user_id = $id AND password = '$pass'"; $res = mysql_query($sql, $conn); return $res; } ?> <form action="http://localhost/test/test.php" method="POST"> IDの入力:<input type="text" name="input_ID"><br /><br /> Passの入力:<input type="text" name="input_pass"><br /><br /> <input type="submit" name="delete_submit" value="送信"><br /> </form> </body> </html>

    • ベストアンサー
    • PHP