2

私はこのようなコードを持っています:

include ("config.php");

$username = $_POST['username'];
$password = $_POST['password'];

$do = $_GET['do'];

if($do=="login")
{
    $cek = mysql_query("SELECT password, user_level FROM t_users WHERE username='$username' AND password='$password'");
    if(mysql_num_rows($cek)==1)
    {
        $c = mysql_fetch_array($cek);
        $_SESSION['username'] = $c['username'];
        $_SESSION['user_level'] = $c['user_level'];

        if($c['user_level']=="supervisor")
        {
            header("location:supervisor.php");
        }

        else if($c['user_level']=="user")
        {
            header("location:home.php");
        }
        else if($c['user_level']=="root")
        {
            header("location:administrator.php");
        }
        else if($c['user_level']=="manager")
        {
            header("location:manager.php");
        }
        else if($c['user_level']=="admin")
        {
            header("location:admin.php");
        }
        else if($c['user_level']=="director")
        {
            header("location:director.php");
        }
    }
    else
    {
        header('Location: index.html');
    }
}
else if($do=="logout")
{
    date_default_timezone_set("Asia/Jakarta");
    $last_logged_out = date("j-F-Y, G:i ");
    $ip_address=$_SERVER['REMOTE_ADDR'];
    mysql_query("update t_users set last_logged_out='$last_logged_out', ip_address='$ip_address' WHERE username='$_SESSION[username]'");

    unset($_SESSION['username']);
    unset($_SESSION['user_level']);
    header("location:index.html");
}

誰かがログインし、同じ時間または別の時間に誰かが同じユーザー名でログインした場合、機能コードを与えるにはどうすればよいですか。その後、ユーザーがすでにログインしていることをシステムに通知して、同じユーザー名のユーザーがログインできないようにする必要があります。ユーザーがログアウトするまで。

誰かが私を助けることができますか?ありがとうございました。

4

3 に答える 3

0

セッションにステータスを追加してみてください。たとえば、ユーザーがログインしている場合、ステータス = 1、またはその逆の場合、そのユーザーがログインを試みるたびに、それが発生した場合に必要なアクションを自由に実行できます。乾杯。

于 2012-05-07T08:14:04.720 に答える
0

ユーザーがログインし、データベースの列loggedinを 1 に設定し、その後のログインで、その列が 1 に設定されているかどうかを確認し、1 に設定されている場合は、そのユーザー名でログインした人がログに記録されるまでログインを許可しないその後のログインを許可するには、その列を 0 に設定する必要があります。

誰かがログインして、そのユーザーとして永遠にログインしたままにできないように、何らかのタイムアウトが必要になる場合があります。

于 2012-05-07T08:18:20.770 に答える
0

1) http://php.net/manual/en/function.mysql-real-escape-string.phpを読む

2) ログに記録されたユーザーに関する情報は、任意のユーザーが取得できる場所に保存する必要があります (つまり、$_SESSION ではありません)。たとえば、データベースに保存できます。

しかし、あなたの問題は、そのユーザーがログアウトしたことを知る方法です。ユーザーがログアウトしない (Web ブラウザーを閉じるだけ) 場合、ユーザーのログインはロケット「forewer」になります。タイムアウトを考慮することができます。ユーザーが Web 上で 1 時間以上操作を行わない場合、他のユーザーがログインしようとするとログオフします (ユーザーが Web 上で何かを行うたびにタイムアウトを変更する必要があります)。

于 2012-05-07T08:19:01.567 に答える