-2

メールの受信ボックスから mysql テーブルの行を削除したい , 可能ですか !, はいの場合、メールの受信ボックス アカウントからサーバー データベースのテーブルの行を削除するにはどうすればよいですか, 解決策を教えてください

テーブル構造:

id  usrname  password  status usercat
1   xxxxxxx  xxxxxxx   new    1
2   uuuuuuu  uuuuuuu   new    5

$del_qry= mysql_query("DELETE FROM table_name WHERE some_column=some_value")

私のサイトでは、登録後、登録者にはアラートメールが届き、サイト管理者にも登録ユーザー詳細のメールが届きます。したがって、管理者が自分のメール アカウントから 2 番目のユーザー (ユーザー名 - uuuuuu) を削除したい場合。

どうすればこれを行うことができますか、私がここにいるのは初めてだと教えてください...

4

2 に答える 2

2

管理者に送信するメールには、次のようなリンクが含まれている必要があります。

http://www.example.org/admin/remove_account.php?id=123

は登録123されたユーザーでremove_account.php、リンクがクリックされたときにロードされるスクリプトです。

スクリプト内では、次のようになります。

mysql_query("DELETE FROM table_name WHERE id=" . mysql_real_escape_string($_GET['id']));

注意

いくつかの注意事項。上記のリンクは、次のいずれかで保護する必要があります。

  • ユーザーとパスワードの保護 (Apache または PHP を使用)
  • 署名保護 (下の例)

署名保護は、署名を追加することにより、リンク パラメータの改ざん/偽造を防止します。次のように機能します。

$secret = "some reasonably long string of random data";
$id = "123"; // like above, the user id

$sig = hash_hmac('sha1', $id, $secret);

$link = 'http://www.example.org/admin/remove_account.php?' . http_build_query(array(
    'id' => $id,
    'sig' => $sig,
));

署名を検証するには:

$secret = "some reasonably long string of random data";
if (isset($_GET['id'], $_GET['sig'])) {
    $calc_sig = hash_hmac('sha1', $_GET['id'], $secret);
    if ($calc_sig === $_GET['sig']) {
        // your delete query here
    }
}

このリンクは誰かがあなたの管理スクリプトにアクセスしようとするのを防いでくれますが、それが悪意のある者の手に渡った場合、あなたは依然として大失敗をすることに注意してください。セキュリティを過小評価しないでください:)

于 2012-05-07T07:18:18.733 に答える
0

ユーザー リストの削除のメールに、あなたのサイトのページのリンクを追加する必要があると思います。ユーザーがリンクをクリックすると、リンクのURLからそのユーザーIDを取得する特定のページにリダイレクトされ、削除アクションを実行できます。メールではデータベースに直接接続できないため、メールからサイトページにリダイレクトする必要があります。

ありがとう

于 2012-05-07T07:17:24.980 に答える