-1

我需要防止用户同时在 tinymce 上编辑相同的文本或文章。

当一个用户在管理面板中编辑文本时,如何阻止其他用户进行编辑?

4

2 回答 2

2

实际上有很多方法......但是当我坐在约翰的时候,我的头顶就是

  1. 当您的应用程序中的某人开始编辑时,您然后向数据库发送更新查询顶部更新“编辑”行

  2. 现在,如果下一个用户尝试编辑相同的帖子重定向,则会出现错误消息。

  3. 如果第一个用户完成,则发送另一个查询以更新“编辑”行。现在第二个ist可以编辑他们想要的任何东西......

像这样的东西会起作用:

If($_POST['startedit'] ) { 
     ............... // start your editing and then also send a query to a database

} else { 
   If($_POST['finished']){ 
       .............// send the update query and send them some where like homepage
   }
}

有任何问题请询问

编辑 1

好的,所以你问如何获得编辑时间?好吧,有很多方法可以让它变得简单,你实际上可以使用数据库来为你做时间戳,我会告诉你这是可能的。

步骤 1) 在数据库中创建一个包含您需要的所有字段的表,然后在表的末尾设置一个时间戳字段,该字段设置为在更新行时更新。(如果您不知道任何 sql,可以使用 PHPmyadmin 轻松完成)

步骤 2) 当用户点击“startedit”按钮时

你会像这样发送一个查询:

$query = $pdo->prepare("UPDATE `yourtable` SET `editing` = '1' WHERE `text_id` = ':id'"); //Using PDO you prepare a update query to dynamically update any ID based on what form a user is using.

$query->bindParam(':ID', $form_id); // Bind your value of the form to the parameter being passed to the PDO query

$query->execute() // Run the PDO query.

现在你可以在 $query 上做一个条件 if 来检查它是否执行,如果它执行了,它将返回 true ......所以我们这样做:

if($query) {
    Redirect(to the form that he / she wants to work on) // Redirect (obviously lol)
} else { 
............ What ever? ...........
}

现在你问自己好废话,我如何检查是否有人正在编辑此表单?

那么我们需要在旁边运行一个查询来查看表单是否正在被编辑。

所以我们这样做:

$query = $pdo->prepare("SELECT * from `yourtable` WHERE `editing` = `1` and `form_id` = :ID"); // Retrieve all forms that are being edited

$query->bindParam(':ID', $form_id); // Bind the parameter 

 $query->execute();

 if ($query->rowCount() > 0 ) {
     die("OOOPS! Some one is editing this form!! - Sorry to late!")
 } else {
   echo "Have fun editing punk!"; 
 }

你去吧,这就是它的要点。我不会为你编写所有代码。但这是完成此任务的基本方法。现在,您当然要添加是否发生超时,将用户从编辑中踢出等等。如果用户完成,则将编辑更新为 = 0. 等等。

这将帮助你建立你的工作。

我也在使用 PDO,所以如果您不习惯它,请阅读thisthis

  • 享受
于 2013-04-17T19:44:21.847 回答
0

可能最友好的解决方案是让用户同时编辑文章。如果发生冲突——比如文章在给定的时间跨度内被不同的用户保存——人们可以选择要使用的文章的哪个版本。这需要版本控制,并且可能比@Rixhers Ajazi 解决方案更难实现。

于 2013-04-17T19:57:14.577 回答