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

如何将包含JS脚本的PHP变量传入move_uploaded_file函数?

问题解答

这种操作完全不可行,原因如下:

  • PHP是服务器端执行的语言,JS是客户端浏览器执行的语言,两者执行顺序是:PHP先跑完所有代码,生成HTML/JS内容发送到浏览器后,浏览器才会执行JS。所以你的$ext变量在PHP中只是一个普通字符串:<script>document.writeln(fp);</script>,根本不会执行JS去获取fp的值。最终拼接出来的目标路径会变成类似uploads/文件名.<script>document.writeln(fp);</script>的格式,这不仅是非法的文件名,move_uploaded_file函数也会因为路径无效而执行失败。

  • 如果你想获取客户端JS变量fp的值并传给PHP,正确的做法是通过表单提交或AJAX把fp的值发送到服务器:
    比如在前端表单里加一个隐藏字段:

    <input type="hidden" name="fp" id="fp-input">
    <script>
      // 假设fp是已定义的变量
      document.getElementById('fp-input').value = fp;
    </script>
    

    然后在PHP中接收这个值:

    $ext = $_POST['fp'];
    
  • 额外提醒:直接使用用户提交的$nam和$ext拼接文件名存在安全风险,可能被利用进行路径遍历或恶意文件上传。建议对这些变量做过滤处理,比如:

    // 过滤文件名,只保留合法字符
    $nam = basename($_POST['subject']);
    // 限制允许的扩展名
    $allowed_exts = ['jpg', 'png', 'txt'];
    if (!in_array($ext, $allowed_exts)) {
        die('不允许的文件扩展名');
    }
    $x = 'uploads/' . $nam . "." . $ext;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:35:31