URL, veya başka bir yöntemi kullanarak belirli PHP fonksiyonu enjekte Ajax nasıl kullanılır?

3 Cevap php

I'm moving from the realm of just JS to php and Ajax. I've dabbled some with PHP in the past. I really appreciate how much help stackoverflow has been in helping me with basic questions.

let I #divName adında bir div var diyor.

Ben Ajax için aşağıdaki JS kullanın. Bazıları bu sadece sözde kodudur.

var request = false;
   try {
     request = new XMLHttpRequest();
   } catch (trymicrosoft) {
     try {
       request = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (othermicrosoft) {
       try {
         request = new ActiveXObject("Microsoft.XMLHTTP");
       } catch (failed) {
         request = false;
       }  
     }
   }

   if (!request)
     alert("Error initializing XMLHttpRequest!");

   function getAjaxInfo(<name of the php function???>) { //<<<<< this is the function I need help with
    var myFunction= nameOfPHPfunctionIJustGot;
     var url = "filename.php?func=" + myFunction;
     request.open("GET", url, true);
     request.onreadystatechange = updatePage;
     request.send(null);
   }

  function updatePage() {
     if (request.readyState == 4) {
       if (request.status == 200) {
         var response = request.responseText;
             document.getElementById("divName").innerHTML = response; //probably going to use Jquery append here, but this example works.
               } else
         alert("status is " + request.status);
     }
   }

Benim fileName.php dosyası var:

<?php

function header() { ?>
   header content goes here
<?php }

function footer() { ?>
    footer content goes here
<?php }

?>

Amacım getAjaxInfo() çalıştırdığınızda, ben istersem PHP fonksiyon indirebiliriz olmasıdır.

Yani eğer Diyelim ki bir onClick="getAjaxInfo(header) "bu, php başlık işlevini almak javascript fonksiyonu uygulamak, ve sonra bir div olduğunu uygulanacaktır.

Herhangi bir yardım mutluluk duyacağız!

3 Cevap

Ile deneyin:

$func=$_GET['func'];
if(function_exists($func)) $func();

Bu şekilde GET geçti işlev adını almak ve çalıştırmak.

Eğer sadece belirli işlevleri çağırmak mümkün olmak istiyorsanız:

$allowedFunctions=array("header","footer");
$func=$_GET['func'];
if(in_array($func,$allowedFunctions) && function_exists($func)) $func();

@ VolkerK önerisi üzerinde toplayıp, ve bir başarısızlık fonksiyonu ekleyerek:

$func = $_GET['func'];
$allowed = array('header', 'footer');
if (in_array($func, $allowed) && function_exists($func)) $func();
else default_action();
<?php

$allowedFunctions = array(
   'header',
   'footer'
);

$functionName = $_GET[ 'func' ];

if( in_array( $functionName, $allowedFunctions ) && function_exists( $functionName ) )
{
    $functionName();
}

/* your function definitions */
?>

$allowedFunctions Eğer ajax arama yürütmek için izin istiyor php fonksiyonlarını (sizin iow) kullanıcı tanımlı bir beyaz liste dizidir. Bu beyaz liste tutmak yoksa, script herkes keyfi bir fonksiyonu çalıştırmak için izin verecek, çünkü potansiyel olarak tehlikeli olacak. Yani kesinlikle istemediğiniz bir şeydir.