Ajax.Request ile PHP yöntemini çağırın

1 Cevap php

Whats the best way to call a certain method in a PHP file with Ajax.Request (using prototype)? I am submiting a form with Form.serialize, so I thought of adding a parameter (like the name of the method to call) and then check it on the server script. Something like:

var params=Form.serialize("someform")+"&=method='check_data'";
new Ajax.Request('somescript.php',{method:'post',parameters:params,onSuccess:
function(response)
{ 
    .. do something with the response

Ve somescript.php in:

if($_POST["method"] == "check_data")
{
    check_data();
...
}

Bu işe, ama emin Im (MVC ala) uzak bir yöntemi çağırmak için daha iyi ya da basit bir şekilde gidecekseniz. Herhangi bir fikir?

1 Cevap

Hiçbir koşulda, normal PHP yöntemleri için bunu. Bu büyük bir potansiyel bir güvenlik deliği açar. Eğer bu şekilde denebilecek komutları sınırlamak bile, uzun vadede gitmek için iyi bir yol değil.

Zaten ne ile ya da kalmak: PHP komut dosyası (örneğin, command=delete geçirilen olabilir komutların listesini tanımlayın, command=update, command=copy, ihtiyacınız ne olursa olsun ) ve kullanarak onları aramak switch.

Ya da güvenli dışarıdan denebilecek yöntemlerle bir sınıf kullanmak:

class myCommands
{
  function copy()  {  ... }
  function delete()  {  ... }
  function update()  {  ... }
 }

sonra, PHP dosyası gibi komuta geçer

if (method_exists($class, $_POST["method"]))  
 call_user_func(array($class, $_POST["method"]));