0

ログインスクリプトを作成しようとしていますが、問題が残っています:

<?php

session_start();

if (isset($_POST['username'])) {
    $username = mysql_real_escape_string($_POST['username']);
    $password = mysql_real_escape_string($_POST['password']);

    $query = mysql_query(
        "SELECT id
         FROM users
         WHERE username = '$username'
         AND password = '$password'"
    );

    if (mysql_num_rows($query) == 0) {
        header('Location: ?error');
        exit();
    }

    // assign id to session
    $_SESSION['id'] = mysql_result($query, 0, 'id');
    mysql_query(
        "UPDATE users
         SET last_activity = ".time()."
         WHERE ".$_SESSION['id']
    );

    header("Location: /");
    exit();
}
?>

このスクリプトの問題は、last_activity をすべてのユーザーの現在の時刻に設定することです。
問題を理解できません。

いくつかの助けが大いに役に立ちます。はい、パスワードの暗号化については後で調べます :P

編集:問題が見つかりました、そうあるべきですmysql_query("UPDATE users SET last_activity = ".time()." WHERE id = ".$_SESSION['id']);

4

1 に答える 1

0

php関数time()とは対照的にmysql関数now()を使用できます-それが大きな違いを生むというわけではありませんが、それを行うために文字列を壊す必要がないので少しすっきりしています。例:「テーブル名の更新set time = now()wherecondition」

于 2009-07-11T11:31:02.747 に答える