【发布时间】:2010-09-10 05:42:12
【问题描述】:
我正在使用 get 方法执行一些操作,例如,批准,markasspam,删除,用于评论系统。我知道走这条路很不安全,但我无能为力。因为使用 $_GET 方法的原因是使用 PHP_SELF 在页面本身内执行操作,仅供参考,我也使用使用复选框的 post 方法来执行操作。
现在为了让它有点安全,我想随机化数字或生成哈希或其他东西,然后比较它,获取 id 并执行操作
我现在的代码有点像这样。
<?php
if($approve == 1 )
{
?>
<a href="<?php echo $_SERVER['PHP_SELF']."?approve=".$id; ?>">Unapprove</a>
<?php
} else
{
?>
<a href="<?php echo $_SERVER['PHP_SELF']."?unapprove=".$id; ?>">Approve</a>
<?php
}
?>
| <a href="<?php echo $_SERVER['PHP_SELF']."?spam=".$id; ?>">Spam</a>
| <a class="edit-comments" href="edit-comments.php?id=<?php echo $id; ?>">Edit</a>
| <a href="<?php echo $_SERVER['PHP_SELF']."?delete=".$id; ?>">Delete</a>
我使用此代码执行操作..
if(isset($_GET['approve'])) {
$id = intval($_GET['approve']);
$query = "UPDATE comments SET approve = '0' WHERE id = '$id'";
$result = mysql_query($query);
}
if(isset($_GET['unapprove'])) {
$id = intval($_GET['unapprove']);
$query = "UPDATE comments SET approve = '1' WHERE id = '$id'";
$result = mysql_query($query);
}
if(isset($_GET['delete'])) {
$id = intval($_GET['delete']);
$query = "DELETE FROM comments WHERE id = '$id'";
$result = mysql_query($query);
}
if(isset($_GET['spam'])) {
$id = intval($_GET['spam']);
$query = "UPDATE comments SET spam = '1' WHERE id = '$id'";
$result = mysql_query($query);
}
我不想使用批准或取消批准或删除或垃圾邮件,而是想随机化或散列这些词,并希望它尽可能长,然后执行操作。
我该怎么做?您对此有何看法?
编辑:请注意只有 经过身份验证的用户,即管理员将是 能够执行此操作。甚至 虽然它通过了身份验证 系统我想增加更多的安全性 即使是管理员。避免实验 还是意外
代码并不准确,它只是让您了解我想要实现的目标的示例。
【问题讨论】:
-
请不要告诉我这是生产代码。
-
请澄清一下,为什么不能使用 POST 在页面本身内执行操作?
-
@NullUserException 不幸的是,你看我是一个初学者学习的东西。是的,我不能在这个项目中使用。我将不胜感激并欢迎任何形式的反馈或建议:)
-
@Anton for post 我需要使用表单,并且我已经将它用于相同的元素。它会与我的代码相矛盾。
-
@Peter 我肯定会做的,谢谢。 :)