如何从邮件收件箱中删除mysql表行

时间:2012-05-07 06:39:00

标签: php mysql email inbox

我想从邮件收件箱中删除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)。

我怎么能这样做,请告诉我,我是新来的......

2 个答案:

答案 0 :(得分: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']));

<强>注意

请注意几句。上述链接应受以下其中一项保护:

  • 用户&amp;密码保护(使用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
    }
}

请注意,尽管该链接可以防止有人试图访问您的管理脚本,但如果它落入了错误的手中,您仍然会被搞砸。不要低估安全性:))

答案 1 :(得分:0)

我认为您必须在用户列表的删除邮件中添加您网站页面的链接。当用户点击链接时,它将重定向到特定页面,它将从链接的URL获取该用户ID,然后您可以执行删除操作。有必要从邮件重定向到网站页面,因为在邮件中你不能直接连接数据库。

感谢