0

だから私は仮想世界に取り組んでおり、現在、ユーザーが禁止されているかアクティブ化されていないかをlogin.phpでチェックしようとしているところです。ユーザーが禁止されている場合、禁止された列には「1」(禁止されていない場合は「0」) と表示されます。ユーザーのアカウントがアクティブ化されている場合、アクティブな列には「1」(アクティブ化されていない場合は「0」) と表示されます。 post パラメータのユーザー名と login.php へのパス。Login.php はこれを行います:

<?php
$myServer = "localhost";
$myUser = "root";
$myPass = "";
$myDB = "game";

//connection to the database
$dbhandle = mysql_connect($myServer, $myUser, $myPass)
or die("Couldn't connect to SQL Server on $myServer");

//select a database to work with
$selected = mysql_select_db($myDB, $dbhandle)
or die("Couldn't open database $myDB");

// The response variable
$res = "res=KO";

// Check incoming data  
if ($_POST['name'] != "" && $_POST['pass'] != "") { 

// Retrieve all rows from the "user_name" and "password" columns from the "account_info" table
$result = mysql_query("SELECT username, password, active, banned FROM users")
or die(mysql_error()); 
}
//create a loop that continues until each row is called
while($row = mysql_fetch_array($result)) {

//check if client user name/password is the same as the row from database
if ($_POST['name'] == $row['username'] && $_POST['pass'] == $row['password'] && $row['active'] = '1' && $row['banned'] == '0') { //BE AWARE OF "" ''

// If they match, Ok, user found
$res = "res=OK";
break;
}
else if ($_POST['name'] == $row['username'] && $_POST['pass'] == $row['password'] && $row['active'] == '0' && $row['banned'] == '0') 
{
$res = "res=unactive";
}
else if ($_POST['name'] == $row['username'] && $_POST['pass'] == $row['password'] && $row['banned'] == '1' && $row['active'] == '1' )
{
$res = "res=banned";
}

}
print $res;
?>

$res を処理する関数は次のとおりです。

serverIn.onLoad = function(success)
{
    if (success)
    {
        if (this.res == "OK")
        {
            sendLogin()
        }
        else if (this.res == "unactive")
        {
            var win:MovieClip = showWindow("errorWindow")
            win.errorMsg.text = "Your account is not activated."
        }
        else if (this.res == "banned")
        {
            var win:MovieClip = showWindow("errorWindow")
            win.errorMsg.text = "Your account is banned."
        }
        else
        {
            var win:MovieClip = showWindow("errorWindow")
            win.errorMsg.text = "Incorrect username or password"
        }
    }
    else
    {
        var win:MovieClip = showWindow("errorWindow")
        win.errorMsg.text = "Connection failed"
    }
}

ユーザーが禁止されているかどうかを確認する login.php の部分を追加するまで、両方のファイルはうまく機能していました。だからここに私の問題があります:

データベース内のユーザー情報を変更して、禁止され、アクティブ化されました。しかし、swf に送信される $res は res=unactive であり、「ユーザーがアクティブではありません」というウィンドウが表示されます。私が禁止されてアクティブな場合、「ユーザー禁止」ポップアップが表示されるようにします。

その後、禁止されないように変更し、アクティブになりました。それは私を正常にログインさせます。

その後、禁止されたり、アクティブになったりしないようにします。想定されていないときにログインします。「ユーザーがアクティブ化されていません」ウィンドウが表示されると思いますが、表示されません。

4

1 に答える 1

2

これは重要かもしれません:

(PHP の 29 行目まで)

$row['active'] = '1'

これは、値を 1 に対してテストするのではなく、値を 1 に設定しています。

$row['active'] == '1'

また、ユーザー資格情報を平文で保存しないでください。

于 2013-04-14T21:31:40.703 に答える