作爲標題說 我想創建一個按鈕,說「可用」,一旦任何一次點擊它變成「不可用」爲所有未來的用戶 任何想法?一個按鈕,只能點擊一次,EVER
注:其爲學校的項目,沒有什麼花哨,甚至安全的,只是想證明一點
遺憾的是含糊一些,所有我試圖做的是建立在我的Joomla網站的文章有一個按鈕,只有最快的用戶可以訪問和點擊,這就是它 我不擔心安全,甚至欺騙企圖 的Joomla文章可以讓PHP的js代碼等加入到他們
作爲標題說 我想創建一個按鈕,說「可用」,一旦任何一次點擊它變成「不可用」爲所有未來的用戶 任何想法?一個按鈕,只能點擊一次,EVER
注:其爲學校的項目,沒有什麼花哨,甚至安全的,只是想證明一點
遺憾的是含糊一些,所有我試圖做的是建立在我的Joomla網站的文章有一個按鈕,只有最快的用戶可以訪問和點擊,這就是它 我不擔心安全,甚至欺騙企圖 的Joomla文章可以讓PHP的js代碼等加入到他們
最簡單的方法,下面是一個使用簡單的文本的基本邏輯(或者你可以使用YAML,INI,XML等),或者1(點擊)文件或0(不點擊)在其:
$filePath = './clicked.txt';
if((int) file_get_contents($filePath)){
// put code here to display the button and mark it as disabled
echo "Can't click";
} else {
// code to display button
// code to process button request and marked clicked as true in the file
file_put_contents($filePath, '1');
echo "changed file";
}
你需要做一些驗證檢查,即文件是可讀的,你可以更新文件等,但這幾乎是所有你需要做的,如果你不想使用數據庫。
此外,請務必將該文件放在Web目錄下,以便用戶無法瀏覽到該目錄。
編輯:但是,如果你使用Joomla,只需使用數據庫來做到這一點。這種方式是醜陋。
你真的想要這個按鈕只能點擊一次嗎?如果是這樣,那麼您需要將其狀態存儲在某種數據庫中,並在有人點擊時更新數據庫。
這可能也會對您的最佳利益而不是禁用JavaScript,因爲有人可能會關閉JavaScript並繞過您的決定。
順便說一句,這個要求對我來說沒有多大意義。這將是 - 至多 - 很難驗證。您可以創建一個提交按鈕,將其重定向到另一個頁面,但用戶只需點擊瀏覽器的後退按鈕並再次單擊該按鈕即可。你可以做什麼來防止這種情況。
既然你澄清了:你最好的選擇仍然是將「clicked」值存儲在某個數據庫中(一個文件可以正常工作)。
當你加載頁面時,使用PHP來檢查文件中的「已單擊」值。如果它在那裏,您可以直接在HTML中禁用按鈕。
我建議在PHP中添加第二級別的檢查(或者您正在使用的任何服務器端語言)。當有人點擊按鈕時,您可以返回到數據庫/文件並檢查「clicked」值。如果您發現它已被點擊,您什麼也不能做(或者向用戶顯示一條消息,讓他們知道它已被點擊)。否則,您可以相應地更新數據庫/文件。
沒有真正的安全問題,它對於一個小型的學校項目 – a7medo778
如果你將來會問這樣的問題 - 關於學校項目的問題 - 請給他們加上家庭作業。它會幫助社區更好地理解您的需求。 – jwiscarson
下次肯定會這樣做:D – a7medo778
那麼你有幾件去這裏。
首先你需要一個方法來存儲值(這是否被點擊或不)。我的標準做法是在DB中創建一個user_properties表(uid,property,value)來存儲值。
要在應用程序中管理它,我將屬性加載到用戶(配置文件)對象並將其存儲到會話以供參考。當按鈕被渲染時,您可以快速檢查用戶配置文件的Properties數組中是否存在該值,如果存在,則禁用;別讓它一個人留下。
單擊按鈕時,用戶配置文件中的屬性將被存儲並更新到數據庫。我個人會檢查加載時會話配置文件中是否有更改,如果它有更新數據庫。
這是一個合理的答案,但並沒有真正解決確保按鈕被單擊一次的問題,因爲2個用戶可以同時打開該頁面,當A點擊並設置時B服務器上的值仍然有一個活動的可用按鈕。 –
非常複雜,真的。通過JavaScript生成按鈕,以防止沒有JavaScript的用戶不受控制地點擊它。保留一個彗星服務器,以便當一個用戶點擊它時,該更改立即傳播到所有其他連接的客戶端,並且該按鈕被移除。之後,不要爲任何新用戶授權生成按鈕。
鑑於問題的性質,您可能會更好地阻止來自另一端的用戶。這意味着,因爲您只想訪問一次鏈接,請讓該服務器只提供一次該頁面,然後拒絕訪問。該按鈕將保持每個人都可以點擊,但只有一個用戶實際上會收到請求的頁面,而且只有一次。
這樣做的方式與其他人建議隱藏按鈕,在文件或數據庫中設置一個值,或者在服務器上設置一個永久的值,並檢查當頁面加載,中止或重定向到拒絕頁面如果存在。
有什麼意義? – BoltClock
在數據庫中保存一個bool,然後檢查它是真是假。 – slinzerthegod
所有那些在同一臺計算機前有多少個鼠標(例如,在一個遊戲中)? – hakre