このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

PHPでパスワードチェック

発言者:ゆうじ
( Date Tuesday, May 22, 2001 15:53:24 )


いつもこのサイトで勉強をさせてもらっています。

PHPでユーザー認証処理をさせたいと思っているのですが、初心者な為
さっぱり解りません。どなたか、教えて頂けないでしょうか?

「IDとパスワードが合っているかチェックをして合っていれば目的のペ
ージへ行けて、そうでなければ、エラーメッセージを表示さ
せる」といったものです。

全くの素人なので、質問がわかりにくい知れませんが、どうぞよろしく
お願いします。

重松修 さんからのコメント
( Tuesday, May 22, 2001 17:46:22 )

OSX に PHP がインストールできて初心者ってことはないと思いますが。:-)
一般的には、ユーザ認証には、PHPLIB を使うようです。

PHPLIB を使わずにやることもできるでしょうが、そうすると、各ページで
永続的にユーザ ID, パスワードを渡し続ける必要があるでしょう。
この時、パスワードを md5 という関数を使ってハッシュにすると
まだ多少はセキュリティが向上すると思います。

以下は、PHP と PostgreSQL を使って、簡単な認証をする例の
簡単過ぎるサンプルです。

はっきりいって、ここでのセキュリティは、httpd が行なう認証と
同じか、それ以下のセキュリティですので、実際に使うものは、
もっとマトモなものにして、そして渡しにも良い方法を教えて下さい。

if(!isset($user_id) || !isset($pass))
  header("Location: login.php");

$db = pg_connet("dbname=user_auth_db");
if(!$db){
  print "fatal error";
  exit();
}

$sql  = "select * ";
$sql .= "from user_auth ";
$sql .= "where id = '$user_id' and passwd = '$passwd'";
$result = pg_exec($db, $sql);
if(!$result){
  print pg_errormessage($db) . "<br>";
  print $sql;
  exit();
}

if(1!=$pg_numrows($result)){
  header("Localtion : login.php?err=1");
  exit();
}

pg_freeresult($result);

/* 以下 PHP の処理 */

重松修 さんからのコメント
( Tuesday, May 22, 2001 17:52:50 )

かなり typo だらけかも。。。
まあ、とりあえず、全く動くようには書いてないので、方法論ということで。

それから、先ほどちょっと紹介した、PHPLIB ですが、
私は、「PHP4 でカンタン WebDB 構築ガイド」という書籍を
参考にしてはいます。

が、この本、作者さんには悪いですが、内容が非常に薄い、というか、
単に www.php.gr.jp にあるマニュアルを印刷し、CD-ROM が
ついてきた程度の内容ですので、オンラインでない分使い勝手も悪く、
お奨めできません。

とりあえず、絶対チェックした方が良いのは、PHP のホームページです。
ここではメーリングリストがあり、私も参加していますが、
過去のメッセージの検索もできますし、今回の質問は思いっきり
FAQ だとおもうので、きっといい情報が見つかると思います。
頑張って下さい。

→  http://www.php.gr.jp/

ゆうじ さんからのコメント
( Wednesday, May 23, 2001 11:01:43 )

重松さん早速のレスありがとうございます。

>OSX に PHP がインストールできて初心者ってことはないと思いますが。:-)

最初はわたしもMac OSXにインストールしてローカル上でテストを
行おうと思っていたのですが、インストールの方法がまるで解らず、
(UNIX)の本を買ったのですが、インストールコマンドとかが書い
てなく、途中で挫折しました。(笑)
ですから、レンタルサーバ上にアップロードして動作確認をしてます。

PHPのメーリングリストにわたしも入ってみようかと思います。

ゆうじ さんからのコメント
( Wednesday, May 23, 2001 13:25:36 )

早速、Mac OS XにPHPをインストールしようとして、Finderをのぞいていたら

Macintosh HD>Users>ユーザー名>

の中に、PHPというフォルダがあったんですが、これってPHPが既に入ってい
るということなんでしょうか?

OSのバージョンは10.0.3です。

あと、スクリプトの動作確認をローカルでしようと思って、ブラウザに
http://IPアドレス/index.html
と入力したら、Apacheのアナウンス?画面になったのですが、そのindex.html
がどこにあるのか分かりません。
どなたか、教えてください。

稲垣 さんからのコメント
( Wednesday, May 23, 2001 15:22:50 )

 取りあえず、分かる範囲で・・。

 Apacheのドキュメントルートは、システム環境設定にあるかと思ったのですが、
見当たりませんね。
#public betaにはあった気がしましたが・・・。

 取りあえず、terminalで/etc/httpd/httpd.confを見れば各種設定が分かります。
で、調べたら /Library/WebServer/Documents になっていました。

 この辺の設定に関しては、普通のUNIXとほぼ同じ様なので、Linux/BSD関連の
書籍が参考になると思います。


ゆうじ さんからのコメント
( Wednesday, May 23, 2001 18:23:16 )

稲垣さんレスありがとうございます。

UNIXって難しいですね。(笑)
現在、UNIXの本を片手にterminalと向き合い悪戦苦闘しております。

また分からないことがあるかも知れないので、その時はカキコします。

重松修 さんからのコメント
( Monday, May 28, 2001 01:43:35 )

OSX 入れ直しました。
何を今更といわれそうなんですが、次の点がちょっとわからないです。
ご存じの方、ここをみろ、etc ヒントをいただければ幸いです。

(1) root になれない
root のパスワードを設定した記憶が皆無なんですが、
su - で root になれません。

(2) bash に変えたい
shell を bash に変えたいのですが、/etc/passwd にアカウントがない!?
ので shell を書き換えられません。

(3) Terminal で日本をを使いたい
ATOK14 なのですが、Terminal では日本語入力ができないようです。
どうすれば日本語が使えますか?

なかなか、OSX 修行の道のりは遠そうです。。。

森下 さんからのコメント
( Monday, May 28, 2001 07:10:42 )

今手元にないので、分かる点だけ。

(1)は、OSXでは、suよりsudoが推奨されています。
たぶん、セキュリティ上の問題でしょう。

sudo したいコマンド

というのが構文です。
パスワードを問われたら、ルートのパスワードではなく、
あなたのパスワードを入力します。

(2)ですが、OSXは、ユーザ管理等はNetinfoが行っています。
ですから、/etc/passwdなどは参照しません。
どこかにユーザ情報の登録画面が用意されていると思います。
そこで変えられるかと思います。>確証なし

(3)ですが、OSXに付属のTerminal.appは、日本語ができません。
クラシック上で日本語のできるtelnetソフトを利用するというのが、
現実的な解決策かと思います。

重松修 さんからのコメント
( Monday, May 28, 2001 09:50:31 )

森下さん、コメントありがとうございます。

(1) sudo を使えばとりあえず、可能、ということでしょうか。
でも、面倒臭いといえば、面倒臭いですね。
やりたいこっって、単にハードディスクのルートにあるファイル
(OS9 で整理し忘れている) を整理したいだけなんですが、
permission がない、と怒られてしまいました。
# Classic で起動して整理すれば良さそうな気もしますが。

(2) なるほど、勉強になりました。
NetInfo という機能について調べてみようと思います。

(3) やっぱり、漢字は駄目ですか。。。
しかし、Classic は使いたくないので、Carbon か、
Cocoa のものが利用できればそれを使いたいと思います。
別スレッドであって MacSSH が Carbon だといいんですが。。。

稲垣 さんからのコメント
( Monday, May 28, 2001 10:18:55 )

(1)ですが、sudoかNetInfoを使ってrootのパスワードを設定する方法もあります。
ただ、推奨はコマンドの度にsudoを使うことですが・・・。

(3)MacWIREの魚井先生のコラムの中で、日本語が使える端末エミュレーターの
話題がありますので、そちらが参考になるかと・・・。



→  Mac OS TNG (The NeXT Generation) Again:神からの警告

重松修 さんからのコメント
( Monday, May 28, 2001 13:06:29 )

稲垣さん、こんにちは。情報ありがとうございます。
NetInfo は家に帰ったら試してみます。
# 会社にはマックがないです。。。iBook 買おうかどうしようか悩んでます。

魚井先生の記事、早速チェックしてみました。
emacs ですね。私は vi しか使えないんですが、
とりあえず、「emacs 修行をセヨ」という神からの警告かしら。。。(汗)

そういえば、OSX でホスティングサービスをする会社も現れたようで、
修行後にサーバとして活用したいと思っています。

また、タコな質問をするかも知れませんが、御指導下さい。

稲垣 さんからのコメント
( Monday, May 28, 2001 14:20:57 )

 私のリンク先がいまいちでしたね。

 取りあえず、魚井先生のコラムと、公家さんのコラムを片っ端から見ていけば
かなり参考になるはずです。

・魚井宏高:Mac OS TNG Again
・公家幸洋:Macintosh IP日記 (連載終了) 



→  MacWIRE:コラム一覧

重松修 さんからのコメント
( Monday, May 28, 2001 21:35:13 )

とりあえず、root のパスワードですが、NetInfo で書き換えたのですが、
だめでした。そこで、

sudo passwd root

で書き換えたところ、無事 su - で root になることができました。

しかし、日本語の問題は相変わらずなので、
今後ゆっくりと解決していこうと思います。

また、コラムのバックナンバーを教えていただき、ありがとうございます。
時間を見つけて、少しずつ呼んでいこうと思います。

sai さんからのコメント
( Tuesday, May 29, 2001 10:54:14 )

Rootの有効/無効はNetinfo のメニューからもできるようです。
Netinfoを起動して画面のかぎをはずすと
”ドメイン−セキュリティ−ルートを有効”メニューが使えるように
なりました。