You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从其他PHP文件中调用指定PHP页面并传递所需参数

问题背景

你现有3个PHP页面的逻辑如下:

  • View.php:通过JS的onclick事件触发AJAX POST请求调用目标PHP页面
    生成触发元素的PHP代码:
    echo "<td><a id='execute' href='' onclick='execute_upgrade_page($workflow_id,".$row['Task_Number'].",\"demo.php\")' title='Click to Execute the workflow'>
           <i class='fa fa-forward' style='font-size:16px'></i> </a></td>";
    
    配套AJAX请求函数:
    function execute_upgrade_page(id,tnum,scriptName){
            $.ajax({
                url: scriptName,
                method: "POST",
                data: {
                    id: id,
                    tnum:tnum,
                    scriptName:scriptName
                },
                success: function(data) {
                    console.log(data);
                }
            });
        } 
    
  • demo.php:已完成POST参数校验,现有逻辑可正常运行
    参数校验代码:
    if(isset($_POST['id']) && isset($_POST['tnum']) && isset($_POST['scriptName']))
    { }
    
  • modify.php:已通过数据库查询匹配到目标脚本为demo.php,需要补全携带3个必填参数调用/跳转demo.php的逻辑
    现有待补全代码段:
    $get_script_name = "select * from  details where `Workflow_Number` = $workflow_id and Task_Number = $task_num";                   
    $check_prep_task_details=mysqli_query($con,$get_script_name);
    if(mysqli_num_rows($check_prep_task_details) > 0)
    {
            while ($row = mysqli_fetch_array($check_prep_task_details)) {
                    $db_script = $row['Script_Name'];
                 if($db_script == "demo.php")
                // 此处补全调用逻辑
            }
    }
    
实现方案

根据实际业务需求二选一即可:

场景1:需要浏览器跳转到demo.php(和前端点击触发的交互效果一致)

因为demo.php校验的是POST参数,不能直接用GET方式拼接URL跳转,在注释位置输出自动提交的隐藏表单即可实现POST跳转:

if($db_script == "demo.php"){
    // 三个参数直接取当前上下文已有的变量即可
    $target_id = $workflow_id;
    $target_tnum = $task_num;
    $target_script = $db_script;
    // 输出隐藏表单+自动提交JS
    echo <<<HTML
    <form id="auto_post_jump" action="{$target_script}" method="post">
        <input type="hidden" name="id" value="{$target_id}">
        <input type="hidden" name="tnum" value="{$target_tnum}">
        <input type="hidden" name="scriptName" value="{$target_script}">
    </form>
    <script>document.getElementById('auto_post_jump').submit();</script>
HTML;
    exit; // 终止当前页面后续逻辑执行
}

场景2:不需要用户感知跳转,在modify.php服务端直接运行demo.php的逻辑

不需要发起额外HTTP请求,直接手动给$_POST超全局变量赋值,模拟POST传参后引入demo.php即可,注意提前确认demo.php内的文件引用路径、依赖变量和当前页面兼容:

if($db_script == "demo.php"){
    // 模拟POST传参
    $_POST['id'] = $workflow_id;
    $_POST['tnum'] = $task_num;
    $_POST['scriptName'] = $db_script;
    // 引入目标文件执行逻辑
    require_once "demo.php";
}

额外提示:你现有SQL语句直接拼接变量入参,存在SQL注入风险,建议改用mysqli预处理绑定参数的写法,避免安全漏洞。

内容的提问来源于stack exchange,提问作者anu priya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 17:21:33