点击按钮后我想调用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函数,但我不知道如何通过单击按钮传递变量,有人可以帮我这个吗?
答案 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>