[PHP-users 15365]HTTP認証を使ったユーザーのログアウト

Shinichi.Izumi izumi @ izushin.com
2003年 5月 19日 (月) 09:17:44 JST


お世話になります。和泉です。
今作っているスクリプトで下記のようなものがあります。
かなり削りましたが。
if($login != 1)
{
	//BASIC認証
	if(!isset($HTTP_SERVER_VARS['PHP_AUTH_USER']))
	{
		header("WWW-Authenticate: Basic realm=\"Authentication\"");
		header("HTTP/1.0 401 Unauthorized");
		echo "認証に失敗しました\n";
		echo'<a href="'.$errpage.'">ログインページへ</a>';
		exit;
	} else
	{
	-----略-------
		$arr = mysql_fetch_array($rs);
		if(mysql_num_rows($rs) == 0){
			header("WWW-Authenticate: Basic realm=\"Authentication\"");
			header("HTTP/1.0 401 Unauthorized");
			echo"認証に失敗しました\n";
			echo'<a href="'.$errpage.'">ログインページへ</a>';
			exit;
		}
		mysql_close($_conn);
		session_register(----------略------------,"login");
		$login=1;
	}
}
これで、ログアウト時に、
$login = 0;
としても、再ログイン時にHTTP認証画面は出ません。(ブラウザを閉じない前提で)
次に、$HTTP_SERVER_VARS['PHP_AUTH_USER'] = NULL;
を入れると、認証を繰り返します。
でもはじかれます。

私としては、ブラウザの持っている認証に関するキャッシュを消したいのですが、
いったいどうすればいいのか・・・。
マニュアルでも、401を投げればキャッシュを削除する。みたいな事が書いてある
ものの、さっぱりです。

Cockieを使うか、セッションだけでいいと言われそうなんですが、
これで進める、という前提でしたらなにか解決方法はございますでしょうか?
ご存知の方おられましたらお願い致します。

和泉


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.481 / Virus Database: 277 - Release Date: 2003/05/13



PHP-users メーリングリストの案内