人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでの質問です。
Basic認証でこのように認証するとします。

if($_SERVER['PHP_AUTH_USER'] == "user" &&
$_SERVER['PHP_AUTH_PW'] == "user")

別ファイルcsv形式でID,パスが保存されています。
ファイルの中身は
user1,pass1
user2,pass2
ファイル名はuser.datとします。
この場合上のコードをどのようにすれば
user.datと連動できるでしょうか?

●質問者: quocard
●カテゴリ:インターネット ウェブ制作
✍キーワード:BASIC認証 CSV dat PHP USER
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kazuokohchi
●35ポイント

fgetcsv()という関数を使えばいいはずです。

<?php

$auth_ok = False;
$h = fopen("user.dat", "r");
while ($data = fgetcsv($h, 1000, ",")) {
 if ($_SERVER['PHP_AUTH_USER'] == $data[0] &amp;&amp;
 $_SERVER['PHP_AUTH_PW'] == $data[1]) {
 $auth_ok = True;
 break;
 }
}
fclose($h);

if ($auth_ok) {
 print "OK: " . $_SERVER['PHP_AUTH_USER'] . " = $data[0] : $data[1]\n";
} else {
 header("WWW-Authenticate: Basic realm=\"My Realm\"");
 header("HTTP/1.0 401 Unauthorized");
 print "NG: " . $_SERVER['PHP_AUTH_USER'] . " = $data[0] : $data[1]\n";
 exit;
}
?>
◎質問者からの返答

ありがとうございます。

同じ取得でもいろんな取得方法がありますね。

参考にさせていただきます。


2 ● vector
●35ポイント

下記のような感じで大丈夫かと。


$aData = file('user.dat');
foreach ($aData as $val) {
 $val = trim($val);
 list($sUser, $sPass) = explode(',', $val);
 if ($_SERVER['PHP_AUTH_USER'] == $sUser &amp;&amp; $_SERVER['PHP_AUTH_PW'] == $sPass) {
 // 認証成功
 } else {
 // 認証失敗
 }
}
◎質問者からの返答

ありがとうございます。

こういった使い方もあるのだと

とても参考になります。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ