我有一个简单的接受表单,它有一个用户单击的按钮。在表单提交时,我有一个 php 脚本,它对一个 python 脚本进行命令行调用,该脚本将记录添加到我的数据库中。除了一件事之外,一切都很好:我不希望用户能够多次单击按钮。
如果我使用 javascript 禁用按钮,我的 if (isset($_POST['submit'])) 语句不会评估为 true,然后我的 php 不会运行
如果我在 php 脚本中调用 javascript 函数,用户仍然有机会在 php 脚本调用该函数以禁用该按钮之前多次单击该按钮。这允许他们在我的数据库中创建多条记录。
我的想法是让我的 python 脚本,即添加记录的脚本,首先检查数据库中是否已经存在具有相同信息的记录,如果没有则只创建一个新记录。我担心的是,如果用户多次单击提交按钮,可能是多个 php 将执行多个调用,第二个将在第一个调用创建新记录之前检查是否已经创建了记录。
换句话说,也许 php 调用将同时工作(异步?)并且检查数据库不会涵盖同时创建记录的另一个调用。这是一个有效的担忧吗?
关于如何禁用或隐藏我的按钮但仍然运行我的 php 脚本还有其他想法吗?谢谢你。
对于未来的观众,我最终使用的解决方法是基于 Teemu 在下面的评论中所说的。在将表单提交中的新记录添加到数据库之前,我检查了是否已经存在包含该信息的记录。如果没有,我添加了一条记录,如果是,则单击按钮什么也没做。正如 Teemu 所提到的,此检查无论如何都是必要的,以涵盖即使页面上没有按钮也可以发布的多个提交。这就是我所说的“解决方法”而不是答案,因为用户仍然可以多次单击提交按钮,但只有第一次单击有效。在 php 完成运行后,该按钮会自行隐藏。
犯罪嫌疑人X
波斯汪
相关分类