-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")

注册后在我的站点中,注册人会收到警报邮件,站点管理员也会收到注册用户详细信息的邮件。因此,如果管理员想从他的邮件帐户中删除第二个用户(用户名 - 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 回答