单击html按钮调用PHP函数

时间:2015-02-20 12:27:23

标签: javascript php html

点击按钮后我想调用php函数。 我已经找到了一种方法(有点)。

这是我的代码:

在info.html

<html>
 <head>    
 </head>
 <body>  

<input type=button value="test" onClick="self.location='http://127.0.0.1/info.php?runFunction=main'">

 </body>
</html>

info.php的

<?php    

    if(isset($_GET['runFunction']) && function_exists($_GET['runFunction']))
    call_user_func($_GET['runFunction']);
    else
    echo "Function not found or wrong input";

    function readCSV($csvFile){
    $file_handle = fopen($csvFile, 'r');
    while (!feof($file_handle) ) {
        $line_of_text[] = fgetcsv($file_handle ,1024,";");
    }
    fclose($file_handle);
    return $line_of_text;
    }

    function main($csvFile){

        //Set path to CSV File

        $csv = readCSV($csvFile);
        echo '<pre>';
        print_r($csv);
        echo '</pre>';

    }  


?>

我的按钮可以调用main函数,但我不知道如何通过单击按钮传递变量,有人可以帮我这个吗?

4 个答案:

答案 0 :(得分:1)

您可以将参数作为另一个URL参数传递:

<input type=button value="test" onClick="self.location='http://127.0.0.1/info.php?runFunction=main&arguments[]=File.csv'">

然后PHP将是:

if(isset($_GET['runFunction']) && function_exists($_GET['runFunction'])) {
    if (isset($_GET['arguments'])) {
        $args = $_GET['arguments'];
    } else {
        $args = array();
    }
    call_user_func_array($_GET['runFunction'], args);
} else {
    echo "Function not found or wrong input";
}

[]放在URL中的参数名后面告诉PHP将所有具有相同名称的参数收集到一个数组中。

但是,这非常危险,因为它允许某人执行任何PHP功能。有人可以连接到info.php?runFunction=unlink&arguments[]=.htaccess等网址。

您应该根据要调用的允许函数列表检查函数名称。

答案 1 :(得分:1)

您必须进行AJAX通话。您可以通过GET或POST方法传递任何参数。 AJAX是最简单的方法。

答案 2 :(得分:0)

您应该使用Ajax将数据发送到服务器

<script>

function sendData(){
  var data1 = "Hello";
  var data2 = "World";
  var xmlhttp = new XMLHttpRequest();
  xmlhttp.onreadystatechange = function(){
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
        alert(xmlhttp.responseText);
  }
  xmlhttp.open("GET", "ajax.php?data1=" + data1 + "&data2=" + data2, true);
  xmlhttp.send();
}

</script>

单击按钮时调用sendData函数:

<input type=button value="test" onClick="sendData()">

服务器读取GET参数

if(isset($_GET['data1']) && isset($_GET["data2"])){
  $data1 = $_GET["data1"];
  $data2 = $_GET["data2"];

  return $data1 . " " . $data2 . " was sent to the server";
}

答案 3 :(得分:0)

更改

<input type=button value="test" onClick="self.location='http://127.0.0.1/info.php?runFunction=main'"

<a href="info.php?runFunction=main"><input type=button value="test"></a>