スレッド表示 | フラット表示〕 全トピック 923 件中 253 番目 次≫ ≪前

正しく条件分岐されない?

created: 2006-04-26 13:34 | modified: 2006-04-28 00:14 | reply: 6

[3051] Re.正しく条件分岐されない?

user: DR | created: 2006-04-26 16:20
えーと、

elseif(!$session_status[0] && $mode == "login") {
if($_POST['password'] == PASSWORD) {
// ログイン成功
$_SESSION['ip_address'] = $_SERVER['REMOTE_ADDR'];
header("Location: $_SERVER[SCRIPT_NAME]?mode=page");
exit();
}

セッションチェックは失敗していますが、
ログインを行った場合はアドレスに?mode=loginが付加されるため、
$modeに"login"が格納されます。

そのため上記の部分で判定はTRUEになり、
$_SESSIONに対してIPアドレスが書き込まれるようにしてあります。
書き込んだ後、自分自身にリダイレクトしてログイン後の動作を行うようにしてあります。

このリダイレクト後に$_SESSIONを調べてるんですが、
どうもそこの判定が上手く動作していないようなのです。


function session_check() {
if(!$_SESSION['ip_address']) {
// セッション変数にIPアドレスが存在しない
logout(); // ■問題の箇所
return array(false,"不正なアクセスです。<br>正しくログインをしてください。\n");
}
elseif($_SESSION['ip_address'] != $_SERVER['REMOTE_ADDR']) {
// セッション変数のIPと現在のIPが違う
logout(); // ■問題の箇所
return array(false,"ユーザー認証に失敗しました。<br>申し訳ありませんが、再度ログインしてください。\n");
}
else return array(true,"");
}

■問題の箇所 の所です。
リダイレクト後には$_SESSIONにはipアドレスが格納されていて、
上記の構文ではログアウト処理は行われないはずなのですが、
どうしてもここでログアウト処理を通ってしまうようで、
正常にログイン後の動作が行われません。

logout();をコメントアウトすると何故か正常に動作をします。

>>セッションが空になるのは初回だけ
確かにそうですね、この部分はいらないようです。
ありがとうございました。
Parent: 3049  reply: 3052 返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 923 件中 253 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑