我正在使用get方法執行一些操作,如批准,markasspam,刪除,用於評論系統。我知道這是非常不安全的,但我無法幫助它。因爲使用$ _GET方法的原因是使用PHP_SELF在頁面本身內執行操作,FYI使用複選框使用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);
}
而不是使用批准或拒絕或刪除或垃圾郵件,我想隨機或哈希說的話,並希望它儘可能長時間然後執行操作。
我該怎麼做?你對此有什麼看法?
編輯:請注意,只有 身份驗證的用戶即管理員將 能夠執行此操作。即使 雖然它通過身份驗證 系統我想添加更多的安全 即使是管理員。以避免實驗 或意外
該代碼不是確切的它只是讓你明白我想實現的樣本。
請不要告訴我這是生產代碼。 – NullUserException 2010-09-10 05:43:45
請說明一下,爲什麼不能使用POST在頁面內執行操作? – 2010-09-10 05:45:34
@NullUserException不幸的是,你看我是一個初學者學習的東西。是的,我不能在這個項目中使用。我將不勝感激,並歡迎任何形式的反饋意見或建議:) – 2010-09-10 05:45:41