我正在添加一些服務器端表單驗證(使用PHP),以防我的網站的一個用戶關閉了javascript。在一種形式中,有10個可以更改的獨立輸入字段。有人能告訴我哪個協議將使用更少的系統資源嗎?首先,我編寫一些mySQL變量來檢查用戶的當前設置,並將它們與發佈的設置進行比較。如果所有10個公佈值是相同的電流值,不更新數據庫,否則更新數據庫:哪個協議會更「貴」?
$login_id = $_SESSION['login_id'];
$sql1 = mysql_fetch_assoc(mysql_query("SELECT value1 FROM login WHERE login_id =
'$login_id'"));
$sql1a = $sql1['value1'];
// Eight More, then
$sql10 = mysql_fetch_assoc(mysql_query("SELECT value10 FROM login WHERE login_id =
'$login_id'"));
$sql10a = $sql10['value10'];
$Value1 = $_POST['Value1'];
// Eight More, then
$Value10 = $_POST['Value10'];
//Other validations then the following
if (($sql1a == $Value1)&&($sql2a == $Value2)&&.......($sql10a == $Value10)) {
echo "<script>
alert ('You haven't made any changes to your profile');
location = 'currentpage.php';
</script>";
}
else {
$sqlUpdate = mysql_query("UPDATE login SET value1 = '$Value1',....value10 = '$Value10'
WHERE login_id = '$login_id'");
echo "<script>
alert ('Your profile has been updated!');
location = 'currentpage.php';
</script>";
}//End php
或者是更便宜的只使用用戶張貼的值(保持$ _ POST變量) ($ sql1a == $ Value1)& &($ sql2a == $ Value2)& & .......($ sql10a == $ Value10)),然後直接轉到
//Other validations then the following
$sqlUpdate = mysql_query("UPDATE login SET value1 = '$Value1',....value10 = '$Value10'
WHERE login_id = '$login_id'");
echo "<script>
alert ('Your profile has been updated!');
location = 'currentpage.php';
</script>";
感謝您的任何意見!
從理論上講,它肯定會有一些聰明的東西,但爲什麼不測試它呢?找出關於性能的唯一真正方法就是測試! – Nanne
將用戶對象或數組保存到會話中,而不僅僅是login_id,然後將表單值與會話值進行比較,如果它們更改,則將其標記爲髒。那麼如果會話用戶是髒更新。每次提交表單時,我都不會從數據庫中提取10次。 – Tony
好的@Nanne ...我會問這個問題,它揭示了我的服務器的新秀狀態....我該怎麼做?我可以通過我的網站託管服務來檢查帶寬(我能得到的最佳解決方案是在24小時內完成30分鐘),我可以檢查mySQL的使用情況(只要顯示我的存儲數據佔用的空間就足夠了) 。 –