0

ログインページを作成しました。データベーステーブルには、最後のログイン日時を保存するための last_access というフィールドがあります。データ型はタイムスタンプです。

以下は select ステートメントです。

$sql="SELECT * FROM $tbl_name WHERE $db_usercol='$myusername' and $db_passcol='$mypassword'";
$result=mysql_query($sql);

ユーザーがログインするたびに「last_access」フィールドを更新するにはどうすればよいですか? 値を NOW() に設定します。

ありがとう

4

3 に答える 3

1
UPDATE $tbl_name set last_access = NOW() WHERE $db_usercol='$myusername'

またはあなたが使用することができます

UPDATE $tbl_name set last_access = NOW() WHERE 
               $db_usercol='$myusername' AND $db_passcol='$mypassword'

選択の代わりに、影響を受けた行の数を確認してください。何もない場合 -> ログインに失敗しました。1 の場合 -> ログイン成功。それ以上だと問題が…

しかし、まず最初にその SQL インジェクションの脆弱性を取り除く必要があります!

http://php.net/manual/en/book.pdo.phpを確認してください。SQL 関数にいくつかの変更が必要になりますが、実際には非常に使いやすいです。例:

$pdo = new PDO("mysql:host=localhost;dbname=yourdbname", 'dbuser', 'dbpass');
$stmt = $pdo->prepare('SELECT * from table where column = :column');
$stmt->bindParam(':column', $column);
$stmt->execute();
$result = $stmt->fetchAll();

簡単で、SQL インジェクション攻撃は失敗します

于 2012-04-10T04:35:19.673 に答える
0

これをログイン スクリプト/関数に追加します。

$sql = sprintf("UPDATE %s SET last_access = NOW() WHERE id = %d", $tbl_name, $user_id);
$result = mysql_query($sql);

それが役立つことを願っています。

于 2012-04-10T04:31:47.653 に答える
0

認証が成功したら、次のことができます。


//get the id after user has logged in then run the update query
mysql_query("UPDATE your_table SET `last_access` = NOW() WHERE id =".$id);
于 2012-04-10T04:35:07.387 に答える