尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️
前端html+js一般是不能直接調用後端php中的函數的並返回結果的。
菜農在學習網站編程後,就被此事困擾很長時間。
因為前端的js可以通過ajax技術帶參數訪問後端的php過程,並返回結果。
那麼是否js也能帶參數訪問任意php函數並返回結果?
菜農在網友的指點下完成此設想並測試通過!
其核心思想是通過js的ajax調用php的call_user_func_array()函數,以做到任意php函數的調用。
特別注意:
為了網站的安全和防止黑客的攻擊,特別設立了$funclst數組,js只能調用$funclst數組內的特定函數。
php核心代碼為:
$funclst = array(“f0”, “f1”, “f2”, “a1”, “a2”, “a3”, “a4”, “HotCount”);
$func = $_REQUEST[“function”];
if(in_array($func,$funclst) && function_exists($func)){//只能調用例程函數
if(isset($_REQUEST[“age”]) && strpos(strtolower($_REQUEST[“age”]), “http://”)){
echo “函數$func()的參數中包含非法字符!!!”;
} else {
$age =isset($_REQUEST[“age”])? explode(“,”,$_REQUEST[“age”]) : array();//參數以”,”分割
echo call_user_func_array($func,$age);
}
}else{
echo “函數$func()不存在!!!”;
}
javascript通過Ajax直接調用任意PHP函數多參數例程
菜農在網友的指點下完成此例程,非常感謝!!!
如圖所示,前三個分別是html,php和csv,最後一張圖是網站測試http://www.hotpage.com.cn/phptest/HotFunction.html運行的截圖。
csv內存儲了訪問該測試函數的次數,即網站訪問計數器。