1

さて、私は次のコードを持っています:

    if ($AccountData ['nAuthID'] == 1 && $data['MAINT'] == True) {
    die ('MM');
}

技術的には機能するはずですが、何らかの理由で機能しません。

基本的に私のテキスト ファイルでは、maint は false であると述べていますが、コードのこの部分に到達すると、まだ死んでいます。

「$data['MAINT'] == True」の部分と関係があると思いますが、何が問題なのかわかりませんか?

すべてのコードは次のとおりです。

$exec = mssql_query("SELECT nEMID, nAuthID, sUserPass FROM tAccounts where sUsername = '$user'");
$AccountData = mssql_fetch_assoc($exec);
$file = file('LauncherInfo.txt');

foreach ($file as $line) {
    if ($line) {
        $splitLine = explode(' = ',$line);
        $data[$splitLine[0]] = $splitLine[1];
    }
}

//echo $data['MAINT'];

if ($AccountData ['nAuthID'] == 2 && $data['MAINT'] == True) {
    //Continue.
} else if ($AccountData ['nAuthID'] == -2) {
    die ('INV');
} else if ($AccountData ['nAuthID'] == -1) {
    die ('BAN');
} else if ($AccountData ['nAuthID'] == 1 && $data['MAINT'] == True) {
    die ('MM');
} else if ($AccountData ['nAuthID'] == 0) {
    die ('EVR');
}

これは、テキスト ファイル 'LauncherInfo.txt' の内容です。

IP = 127.0.0.1
EXE = Client.exe
PORT = 8080
TITLE = Title
MAINT = False
Maintenance-Message = The server is currently in maintenance.
Ban-Message = You have been banned sucker!
Email Verification-Message = You need to active your email adddress.
Investigation-Message = Your account is undergoing investigation.

編集:

次のコードを使用してみました:

if ($AccountData ['nAuthID'] == -2) {
    die ('INV');
} else if ($AccountData ['nAuthID'] == -1) {
    die ('BAN');
} else if ($AccountData ['nAuthID'] == 0) {
    die ('EVR');
} else if ($AccountData ['nAuthID'] == 1 && $data['MAINT'] == 'True') {
    die ('MM');
} else if ($AccountData ['nAuthID'] == 2 && $data['MAINT'] == 'True') {
    //Continue and allow user to log in.
}

私もこれを試しました:

   if ($AccountData ['nAuthID'] == -2) {
        die ('INV');
    } else if ($AccountData ['nAuthID'] == -1) {
        die ('BAN');
    } else if ($AccountData ['nAuthID'] == 0) {
        die ('EVR');
    } else if ($AccountData ['nAuthID'] == 1 && $data['MAINT'] == "True") {
        die ('MM');
    } else if ($AccountData ['nAuthID'] == 2 && $data['MAINT'] == "True") {
        //Continue and allow user to log in.
    }

しかし、どちらも機能しませんか?

EDIT2: コードを次のように変更しました。

    if ($AccountData ['nAuthID'] == -2) {
    echo ('INV');
} else if ($AccountData ['nAuthID'] == -1) {
    echo ('BAN');
} else if ($AccountData ['nAuthID'] == 0) {
    echo ('EVR');
} else if ($AccountData ['nAuthID'] == 1 && $data['MAINT'] == "True") {
    echo ('MM');
} else if ($AccountData ['nAuthID'] == 2 && $data['MAINT'] == "True") {
    //Continue and allow user to log in.
}

そして、ウェブブラウザに表示されるのは EVR です。そこから先も進まないような?

ありがとう。

4

2 に答える 2

2

MAINTテキスト ファイルで Trueかどうかを確認しています。基本的に文字列の比較を行っています。引用符で囲まないと、PHP はブール値であると見なします (そうではありません)。したがって、次のように二重引用符で囲む必要があります。

if ($AccountData ['nAuthID'] == 2 && $data['MAINT'] == "True") {
} else if ($AccountData ['nAuthID'] == -2) {
    die ('INV');
} else if ($AccountData ['nAuthID'] == -1) {
    die ('BAN');
} else if ($AccountData ['nAuthID'] == 1 && $data['MAINT'] == "True") {
    die ('MM');
} else if ($AccountData ['nAuthID'] == 0) {
    die ('EVR');
}

お役に立てれば。

于 2013-06-27T01:13:45.507 に答える