永远只能点击一次的按钮

时间:2011-12-21 17:20:48

标签: php javascript

正如标题所说 我想创建一个“可用”的按钮,一旦任何人点击它,它将变为所有未来用户的“不可用” 任何想法?

注意:它用于学校项目,没有任何花哨甚至安全,只是试图证明一点

抱歉对某些人含糊不清,我所要做的就是在我的joomla网站上创建一篇文章,其中只有最快的用户才能访问并点击它,这就是它 我并不担心安全甚至欺骗企图 joomla文章可以添加php js代码等等

6 个答案:

答案 0 :(得分:2)

非常复杂,真的。通过JavaScript生成按钮,以防止没有JavaScript的人不受控制地点击它。保留一个彗星服务器,以便当一个用户点击它时,更改会立即传播到所有其他连接的客户端,并删除该按钮。之后,不要为任何新用户授权生成按钮。

答案 1 :(得分:1)

不使用数据库的最简单方法,这里是使用简单文本(或者您可以使用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";
}

您需要进行一些验证检查,即文件是可读的,您可以更新文件等,但如果您不想使用数据库,则几乎只需要这样做。

另外,请务必将该文件放在网络目录下,这样用户就无法浏览到它。

编辑:但是如果你正在使用Joomla,只需使用db来完成它。这种方式丑陋

答案 2 :(得分:0)

如果按下按钮,您可以将值保存到数据库中或创建文本文件。如果数据库条目或文件存在,则不允许进一步按下。当按下按钮时,请务必禁用该按钮以及不执行服务器端操作。

答案 3 :(得分:0)

你真的希望这个按钮只被点击一次吗?如果是这样,那么您需要将其状态存储在某种数据库中,并在有人点击它时更新数据库。

通过JavaScript 禁用它可能也符合您的最佳利益,因为有人可能会关闭JavaScript并绕过您的决定。

顺便说一句,这个要求对我来说并没有多大意义。这将是 - 充其量 - 难以验证。您可以创建一个重定向到另一个页面的提交按钮,但用户可以点击他/她的浏览器的后退按钮并再次单击该按钮。你无法阻止这一点。

既然你澄清了:最好的办法仍然是将“点击”值存储在某个地方的某个数据库中(文件可以正常工作)。

加载页面时,使用PHP检查文件是否有“单击”值。如果它在那里,您可以直接在HTML中禁用该按钮。

我建议在PHP中添加第二级检查(或者您正在使用的任何服务器端语言)。当有人单击该按钮时,您可以返回到您的数据库/文件并检查“单击”值。如果您发现它已被单击,则您无法执行任何操作(或向用户显示一条消息,告知用户已单击该消息)。否则,您可以相应地更新数据库/文件。

答案 4 :(得分:0)

嗯,你有几件事在这里。

首先,您需要一种存储值的方法(已点击或未点击)。我的标准做法是在DB中创建一个user_properties表(uid,property,value)来存储值。

要在应用程序中管理它,我将属性加载到用户(配置文件)对象并将其存储到Session以供参考。渲染按钮时,您可以快速检查用户配置文件的“属性”数组中是否存在该值,如果存在,则禁用;别的,不管它。

单击该按钮时,将存储用户配置文件中的属性并将其更新到数据库。我个人检查加载会话配置文件中是否有更改,如果它有更新数据库。

答案 5 :(得分:0)

鉴于您的问题的性质,您可能最好从另一端阻止用户。这意味着,因为您只想访问一次链接,所以让服务器只提供一次该页面,然后拒绝访问。该按钮将对所有人保持可点击状态,但只有一个用户将实际接收所请求的页面,并且只能接收一次。

执行此操作的方式与其他人建议隐藏按钮,在文件或数据库中设置值,或者确实在服务器上持久保存,并检查页面何时加载,中止或重定向到拒绝页面如果有的话。

相关问题